打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
基于STM32的SPI主从全双工通信源码,欢迎测试

个人心得:

       在做主从双机通信时,一定要理解好主机和从机的作用,做主机时会控制通信的时钟,从机是不能产生时钟的。如果从机要发送数据,那可以在主机发送数据 的时钟上发送数据。配置上差不多是一样的,就设计主从就得了。我这里接收都是用中断。

还有一点要注意的,做主机接收时,不能和发送共用一个函数。这个为什么我自己现在也没有清楚,只是在实验中测得。

纠错:从机的接收函数改成,这时因为我测试完成后有改动就压包,后来测试发现主机不能正常接收到数据
更正:我之前的两个时钟的理论是不合理的,因为全双工收发是可以共用时钟的,这个我在后面改进的主机程序中有体现。

欢迎大家测试

u8 SPI1_ReadByte(u8 TxData)
{
u8 retry=0;
// while((SPI1->SR&1<<1)==0)//等待发送区空
// {
// retry++;
// if(retry>200)return 0;
// }
// SPI1->DR=TxData; //发送一个byte
retry=0;
while((SPI1->SR&1<<0)==0) //等待接收完一个byte
{
retry++;
if(retry>200)return 0;
}
return SPI1->DR; //返回收到的数据
}

工具:STM32 MINI板两块

注意:NSS软件管理模式,主机:SSM=1,SSI=1。

从机:SSM=1,SSI=0;

连线:主机 SCK<-> SCK 从机

MISO <-> MISO

MOSI<-> MOSI

SPI主机通信程序部分截图:

SPI从机通信程序部分截图:

改进:把主机改成查询接收也是可以的,这时只要一个发送,是真正意义上的全双工了。

部分程序截图:(详见附件内容)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
两片STM32使用HAL完成SPI全双工主从通信
大话SPI通信--基础巩固篇
两块STM32之间的SPI主从通信实例(附代码工程)
STM32F0 无法使NRF2401工作,求达人指点迷津! (amoBBS 阿莫电子论坛)
还在苦恼单片机通讯吗?SPI双机通讯带你飞!
【吃透系列】STM32CubeMX使用之SPI通讯
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服