本应用说明描述了如何使用带有片上8位SPI的ST7微控制器来模拟16位从属SPI。
ST7 SPI单元有一个双缓冲区,用于使用两个8位寄存器接收数据:一个读寄存器和一个移位寄存器(见图2)。应用软件访问读取寄存器以检索接收到的数据。8位移位寄存器由硬件管理,以接收每个字节的8位。当每个比特被接收时,它被移位到移位寄存器中。在字节接收期间,读取寄存器不会改变。它包含之前接收到的字节,软件仍可读取该字节。在字节接收结束时,8位移位寄存器被复制到读取寄存器中。
这种双缓冲使得接收16位字成为可能。在接收第一字节结束时,将移位寄存器复制到读取寄存器中,设置SPIF标志,并可以生成中断。下一个传入字节将在移位寄存器中接收,而第一个字节在读取寄存器中可用。为了不丢失任何比特,软件必须足够快,以便在第二个字节的接收结束之前读取第一个字节。
注意:SPISR(SPI状态寄存器)也称为SPICSR(SPI Control/Status Register),具体取决于您使用的ST7微控制器设备。在本应用程序说明中,我们将使用SPISR名称作为状态寄存器。