串行通信:SPI与I2C协议详解
1. SPI主设备数据接收
当SPI被配置为主设备并在SOMI线上接收数据时,主设备仍需产生SCLK脉冲,以将数据从从设备移出并移入主设备。数据通过接收移位寄存器(Rx shift register)接收,当所有位都移入后,数据字节会被移动到接收缓冲区(UCAxRXBUF)。接收系统会跟踪传入的数据,当新数据到达缓冲区时,会在UCAxIFG寄存器中设置RXIFG标志。通过使能UCAxIE寄存器中的RXIE位,可以由RXIFG产生中断。
1.1 示例操作
为了让从设备将数据移出并移入主设备的接收移位寄存器,主设备需要向其发送必要的时钟脉冲。这可以通过向主设备的发送寄存器写入一个任意值的虚拟字节来实现,从而迫使系统产生8个SCLK脉冲。
下面以MSP430FR2355 LaunchPad™板为例,说明主设备接收数据的过程。我们将eUSCI_A0的SIMO引脚连接到eUSCI_A0的SOMI引脚,这样就可以在SIMO上发送一个字节的数据,并在8个时钟周期后在接收缓冲区看到该数据。此示例虽然实际意义不大,但展示了主设备如何通过向发送缓冲区写入数据来请求从设备的数据,然后等待RXIFG中断以指示接收缓冲区中有可用数据。
在这个设计中,使用按钮开关S1和S2从发送端向接收端发送不同的数据字节(0x10和0x66)。当接收端接收到0x10时,会切换LED1;当接收到0x66时,会切换LED2。
1.2 操作步骤
- 连接引脚 :将eUSCI_A0的SIMO引脚连接到eUSCI_A0的SOMI引脚。