1 SPI 工作原理
当初始化 SPI 时,需要通过对相应的控制位编程来指定几个选项。这些控制位用于设
置以下选项:
⚫ 主控模式(SCK 作为时钟输出)
⚫ 从动模式(SCK 作为时钟输入)
⚫ 时钟极性(SCK 的空闲状态)
⚫ 时钟边沿(在 SCK 的上升沿/ 下降沿输出数据)
⚫ 从动选择模式(仅用于从动模式)
SPI 模块由一个发送/ 接收移位寄存器 SPISR(SPISR 是内部寄存器,程序无法直接访
问)和数据缓冲寄存器(SPIx_BUFR)组成。SPISR 对进出器件的数据进行移位。在新数据
接收完毕前,SPIx_BUFR 保存上次写入 SPISR 的数据。一旦 8(16/32)位数据接收完毕,
该数据就被移入 SPIx_BUFR 寄存器。然后,缓冲器非空检测位 RNE 被置 1。这种数据接收
方式,允许在 CPU 读取刚接收的数据之前,就开始接收下一个字节。
为确保应用软件能有效地接收数据,应该在要发送的下一数据字节写入 SPIx_BUFR 之
前,读取 SPIx_BUFR 中现有的数据。缓冲器非空检测位 RNE 指出将接收到的数据装入
SPIx_BUFR(发送完成)的时间。当 SPIx_BUFR 中的数据被读取后,RNE 位即被清零。如
果 SPI 仅仅作为一个发送器,则不必理会接收的数据。通常,可用 SPIBUSY 和 RNE 来判断
发送和接收完成的时间。此外,SPI 状态寄存器(SPIx_STR)指示各种状态条件。
注:SPI 主机不管是发送或接收,都需先写一个数据到数据缓冲寄存器(SPIx_BUFR),
用于启动 SPI。
2 使能 SPI/IO 与外部链接
2.1 使能 SPI/IO
与 SPI 相关 IO 口需设置为重映射模式,根据主从模式,硬件将自动控制 IO 口方向。
2.2 典型连接
下图 SPI 主从控制器连接给出了两个单片机之间的典型连接。主控制器(处理器 1)通
过拉低 SS 线并发送 SCK 信号来启动数据传输。在两个处理器的移位寄存器之间,数据在编
程设定的时钟边沿被传送,并在相反的时钟边沿被锁存。必须将两个处理器的时钟极性
(SPICKP)设置为相同,这样两个处理器就可以同时收发数据。数据是否有效,取决于应
用软件。这就导致以下三种数据传输情形:
⚫ 主控制器发送数据-从控制器发送无效数据
⚫ 主控制器发送数据-从控制器发送数据
⚫ 主控制器发送无效数据-从控制器发送数据
|