打印
[热门应用]

单片机SPI还能实现单线半双工模式?

[复制链接]
2520|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
probedog|  楼主 | 2024-10-29 10:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 probedog 于 2024-10-29 10:09 编辑

SPI:Serial Peripheral Interface,串行外设接口。
SPI是嵌入式项目中常用的一种通信接口,正常情况下,SPI都是“双线”全双工模式。但有些情况由于产品设计的要求或者接线数目的限制, 外设会使用单线半双工模式。
SPI半双工原理
SPI单线半双工,指少一根数据线,即只有SDI/SDO,SCLK,GND 三根线。这种方式在相同的连接线的基础上,比UART更具备稳定的通讯能力和更高速的数据传输量。
硬件连接方式:通常情况下MCU端只需要把MOSI和MISO管脚短接, 但需要考虑MOSI实际输出能力和设备端的输出电平状态因素, 建议串接一个电阻避免由于双方同时输出不同的高低电平造成的短路现象。


单片机实现SPI半双工
现在绝大部分单片机都集成了 SPI 外设,而且几乎都支持全双工模式。但是,通过一定设置,还是可以支持半双工模式。
本文以瑞萨 RA 系列单片机为例,给大家讲述一下实现方法。
FSP配置:只需要按照实际通讯模式的要求做配置就可以。DTC功能和中断回调函数等的配置也是按照FSP的手册说明来做就可以。



由于SPI本身是采用全双工运行的, 就算调用函数 (R_SPI_Read) 在MISO做接收数据时, MOSI也是会有同步输出的。但在单线的情况下, 这样就会干扰到Slave端的数据输出, 甚至造成数据线上的短路情况。所以需要在接收数据前将MOSI的管脚配置改为GPIO 功能, 并且配置为输入状态, 这样MOSI管脚就不会在接收的过程中制造干扰。在接收完毕后将MOSI管脚的配置还原为外设功能的MOSI状态。
发送数据:直接调用函数R_SPI_Write()或者R_SPI_WriteRead().



切换到接收状态并接收数据:



还原MOSI状态:



通过以上的软件配置流程,单线半双工模式的SPI通讯就能够正常运行。

使用特权

评论回复
沙发
钟爱柳州| | 2024-10-29 16:29 | 只看该作者
实测可行

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

385

主题

2085

帖子

3

粉丝