1、STM32怎么配置单工通信啊?参考手册上写配置SPI的单工通信。可是库函数里面只有这四个选项啊!a.双线双向全双工 b.双线单向接收 c.单线双向接收 d.单线双向发送
2、 1条时钟和1条单向数据线(BIDIMODE=0)
在这个模式下,SPI模块可以或者作为只发送,或者作为只接收。
● 只发送模式类似于全双工模式(BIDIMODE=0,RXONLY=0):数据在发送引脚(主模式时是
MOSI、从模式时是MISO)上传输,而接收引脚(主模式时是MISO、从模式时是MOSI)可以
作为通用的I/O使用。此时,软件不必理会接收缓冲器中的数据(如果读出数据寄存器,它不
包含任何接收数据)。
● 在只接收模式,可以通过设置SPI_CR2寄存器的RXONLY位而关闭SPI的输出功能;此时,
发送引脚(主模式时是MOSI、从模式时是MISO)被释放,可以作为其它功能使用。
配置并使能SPI模块为只接收模式的方式是:
● 在主模式时,一旦使能SPI,通信立即启动,当清除SPE位时立即停止当前的接收。在此模
式下,不必读取BSY标志,在SPI通信期间这个标志始终为’1’。
● 在从模式时,只要NSS被拉低(或在NSS软件模式时,SSI位为’0’)同时SCK有时钟脉冲,
SPI就一直在接收
这个觉得更加难理解,这个到底怎么连线的。就能实现数据在发送引脚(主模式时是
MOSI、从模式时是MISO)上传输,而接收引脚(主模式时是MISO、从模式时是MOSI)可以
作为通用的I/O使用。
这个功能了?
3、SPI总线不是收发同时进行的吗?那如何实现主模式下只接收呢?这样的话,从机的时钟信号哪里来?如果是主设备给的,那主设备应该会发送数据给从何设备啊,这还叫主模式下只接收吗?
4、主模式下开始传输
● 全双工模式(BIDIMODE=0并且RXONLY=0)
─ 当写入数据到SPI_DR寄存器(发送缓冲器)后,传输开始;
─ 在传送第一位数据的同时,数据被并行地从发送缓冲器传送到8位的移位寄存器中,
然后按顺序被串行地移位送到MOSI引脚上;
─ 与此同时,在MISO引脚上接收到的数据,按顺序被串行地移位进入8位的移位寄存器
中,然后被并行地传送到SPI_DR寄存器(接收缓冲器)中。
● 单向的只接收模式(BIDIMODE=0并且RXONLY=1)
─SPE=1时,传输开始;
─ 只有接收器被激活,在MISO引脚上接收到的数据,按顺序被串行地移位进入8位的移
位寄存器中,然后被并行地传送到SPI_DR寄存器(接收缓冲器)中。
● 双向模式,发送时(BIDIMODE=1并且BIDIOE=1)
─ 当写入数据到SPI_DR寄存器(发送缓冲器)后,传输开始;
─ 在传送第一位数据的同时,数据被并行地从发送缓冲器传送到8位的移位寄存器中,
然后按顺序被串行地移位送到MOSI引脚上;
─ 不接收数据。
● 双向模式,接收时(BIDIMODE=1并且BIDIOE=0)
─SPE=1并且BIDIOE=0时,传输开始;
─ 在MOSI引脚上接收到的数据,按顺序被串行地移位进入8位的移位寄存器中,然后被
并行地传送到SPI_DR寄存器(接收缓冲器)中。
─ 不激活发送器,没有数据被串行地送到MOSI引脚上
这个主模式下的这些各种模式,是不是指主设备下的这些各种模式?就是说 主模式=主设备?手册后面的那个从模式是不是也是这样的啊?
从模式下开始传输
● 全双工模式(BIDIMODE=0并且RXONLY=0)
─ 当从设备接收到时钟信号并且第一个数据位出现在它的MOSI时,数据传输开始,随
后的数据位依次移动进入移位寄存器;
─ 与此同时,在传输第一个数据位时,发送缓冲器中的数据被并行地传送到8位的移位
寄存器,随后被串行地发送到MISO引脚上。软件必须保证在SPI主设备开始数据传
输之前在发送寄存器中写入要发送的数据。
● 单向的只接收模式(BIDIMODE=0并且RXONLY=1)
─ 当从设备接收到时钟信号并且第一个数据位出现在它的MOSI时,数据传输开始,随
后数据位依次移动进入移位寄存器;
─ 不启动发送器,没有数据被串行地传送到MISO引脚上。
● 双向模式,发送时(BIDIMODE=1并且BIDIOE=1)
─ 当从设备接收到时钟信号并且发送缓冲器中的第一个数据位被传送到MISO引脚上的
时候,数据传输开始;
─ 在第一个数据位被传送到MISO引脚上的同时,发送缓冲器中要发送的数据被平行地
传送到8位的移位寄存器中,随后被串行地发送到MISO引脚上。软件必须保证在SPI
主设备开始数据传输之前在发送寄存器中写入要发送的数据;
─ 不接收数据。
● 双向模式,接收时(BIDIMODE=1并且BIDIOE=0)
─ 当从设备接收到时钟信号并且第一个数据位出现在它的MOSI时,数据传输开始;
─ 从MISO引脚上接收到的数据被串行地传送到8位的移位寄存器中,然后被平行地传送
到SPI_DR寄存器(接收缓冲器);
─ 不启动发送器,没有数据被串行地传送到MISO引脚上。
5、主或从模式下(BIDIMODE=0并且RXONLY=0)全双工发送和接收过程模式 这个配置的寄存器,是不是主设备和从设备都是配置一样的值呢?
6、手册465页和后面两页上说的 主或从模式下(BIDIMODE=0并且RXONLY=0)全双工发送和接收过程模式 和 只发送过程(BIDIMODE=0并且RXONLY=0) 这两个寄存器的值配置都一样的怎么区别是哪种模式啊? 不止这里,前面的好几个模式都是,寄存器的值一样的,可是模式怎么就不一样呢?
我想好几天了,还没明白,所以就上来问各位高手 大虾的,非伸手党和不经过思考就问的! 我想,理解了这些,后面写程序应该比较顺。所以蒙教各位赐教了!!
原子哥,你怎么看???
本人新手,有什么不妥之处,望各位大虾见谅!!谢谢了!!
|