串行外设接口总线是一种以全双工方式运行的同步串行通信链路,这意味着设备同时发送和接收数据。这些设备作为主/从设备进行通信,其中主设备通过选择带有硬件线路的从设备来启动通信,并且还提供用于将数据位移入和移出从设备的同步时钟。
通信所需的信号是从选择(SS)、主输入从输出(MISO)、主输出从输入(MOSI)和串行时钟(SCK)。SPI 相对于其他通信协议的优势在于,寻址是在硬件中通过 SS 线执行的,从而可以更快地寻址设备,并且通信是全双工的,从而可以更快地传输数据(图 1)。
图 1 串行外设接口总线
SPI 通信开始于主机断言 SS 线。根据器件的不同,SS 线可能是高电平有效或低电平有效。在开始通信之前,主设备必须等待至少一个时钟周期。与 SS 线的活动极性非常相似,SS 激活后的等待时间因设备而异。例如,模数转换器可能要求主设备在其 SS 线被断言后等待转换完成。接下来,主机将开始将数据移出 MOSI 线,并将数据移入 MISO。数据始终以全双工方式传输,即使该数据没有意义。例如,为了让主设备从从设备接收 24 位数据,它还必须向从设备发送 24 位数据(图 2 和图 3)。
图 2 阶段 0 时序
第一阶段时间
没有关于使用哪个时钟边沿来发送和接收数据的标准,因此根据时钟极性和时钟相位,有四种可能的操作模式。请参阅下面图 4 中的表格。
SPI 模式
图 4 SPI 模式
以模式 1 为例,主机将在 SCK 线为低电平时空闲总线。当主机将 SCK 线推高时,它也会将最高有效位放在 MOSI 线上。同时,Slave 将把最重要的放在 MISO 线上。接下来,Master 拉动 SCK 线并从 MISO 线上的 Slave 读取稳定位。同时,Slave 在 MOSI 线上读取 Master 生成的稳定位。当 SS 线路停用时,通信终止,因此它必须在整个通信帧期间保持活动状态。
编辑:hfy
全部0条评论
快来发表一下你的评论吧 !