如何实现 SPI通信的主从功能

描述

串行外设接口总线是一种以全双工方式运行的同步串行通信链路,这意味着设备同时发送和接收数据。这些设备作为主/从设备进行通信,其中主设备通过选择带有硬件线路的从设备来启动通信,并且还提供用于将数据位移入和移出从设备的同步时钟。

通信所需的信号是从选择(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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分