电子产业一站式赋能平台

PCB联盟网

搜索
查看: 144|回复: 0
收起左侧

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

[复制链接]

418

主题

418

帖子

4293

积分

四级会员

Rank: 4

积分
4293
发表于 2024-10-4 20:04:00 | 显示全部楼层 |阅读模式
关注+星标公众,不错过精彩内容
来源 | 瑞萨嵌入式小百科
SPI:Serial Peripheral Interface,串行外设接口。
SPI是嵌入式项目中常用的一种通信接口,正常情况下,SPI都是“双线”全双工模式。但有些情况由于产品设计的要求或者接线数目的限制, 外设会使用单线半双工模式。
SPI半双工原理
SPI单线半双工,指少一根数据线,即只有SDI/SDO,SCLK,GND 三根线。这种方式在相同的连接线的基础上,比UART更具备稳定的通讯能力和更高速的数据传输量。
硬件连接方式:通常情况下MCU端只需要把MOSI和MISO管脚短接, 但需要考虑MOSI实际输出能力和设备端的输出电平状态因素, 建议串接一个电阻避免由于双方同时输出不同的高低电平造成的短路现象。

5v1zhv2dnxb64047133833.png

5v1zhv2dnxb64047133833.png

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

lmc3oikianz64047133933.png

lmc3oikianz64047133933.png

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

xbhrvefwaug64047134033.png

xbhrvefwaug64047134033.png

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

th0o2sut3rs64047134133.png

th0o2sut3rs64047134133.png

还原MOSI状态:

b2snetyznhe64047134233.png

b2snetyznhe64047134233.png

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

4ej3isubbpf64047134333.jpg

4ej3isubbpf64047134333.jpg

瑞萨RA8系列教程 | RA8输出PWM实现方法

iorv3llyicx64047134434.jpg

iorv3llyicx64047134434.jpg

Cortex-M3与M85单片机的SysTick使用上有区别吗?

kg4waefo04a64047134534.jpg

kg4waefo04a64047134534.jpg

嵌入式在边缘AI的技术优势
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表