guanjianguo 发表于 2008-12-19 10:29:58

该怎么配置SPI_Init()函数

我用SPI读字库数据,先用 MOSI 发地址, 再用 MISO 接受数据,
串行数据输出(SO):该信号用来把数据从芯片串行输出,数据在时钟的下降沿移出。
串行数据输入(SI):该信号用来把数据从串行输入芯片,数据在时钟的上升沿移入。
串行时钟输入(SCLK):数据在时钟上升沿移入,在下降沿移出。
该怎么配置SPI_Init()函数, 特别是SPI_Direction和SPI_ SPI_CPOL, SPI_SPI_CPHA

SPI_Direction_2Lines_FullDuplex
SPI设置为双线双向全双工
SPI_Direction_2Lines_RxOnly
SPI设置为双线单向接收
SPI_Direction_1Line_Rx
SPI设置为单线双向接收
SPI_Direction_1Line_Tx
SPI设置为单线双向发送

说的很不明白

香水城 发表于 2008-12-19 10:36:05

RE:该怎么配置SPI_Init()函数

你当然要使用“双线双向全双工”方式。
SPI_CPOL、SPI_CPHA的设置请参考STM32技术参考手册的549页的图209。
http://www.st.com/stonline/products/literature/rm/13902.pdf

guanjianguo 发表于 2008-12-19 10:51:37

回复:该怎么配置SPI_Init()函数

我用SPI_Direction_2Lines_FullDuplex(SPI设置为双线双向全双工)
实验过了,只是仅在发送地址时,时钟线CLK才有脉冲(用示波器观察),接受时根本就没有脉冲,既然STM32作为SPI_Mode_Master,没有脉冲怎么能将字库的数据移出呢?

香水城 发表于 2008-12-19 16:05:27

RE:该怎么配置SPI_Init()函数

只有执行发送才能输出时钟,请看STM32技术参考手册中的框图,发送和接收共用一个移位寄存器。
具体程序可以参考STM32库函数包自带的例子,里面有一个操作SPI Flash的例子。

guanjianguo 发表于 2008-12-19 18:44:47

RE:该怎么配置SPI_Init()函数

明白了,原来主设备接收数据时 也要执行发送才能输出 同步时钟.谢谢4楼!

591050354 发表于 2009-2-17 14:23:26

NSS

NSS的输出波形是什么样的啊
SPI如何初始化才能看到NSS的输出啊
页: [1]
查看完整版本: 该怎么配置SPI_Init()函数