返回列表 发新帖我要提问本帖赏金: 12.20元(功能说明)

[STM32F1] 浅谈SPI双机通讯调试

[复制链接]
12112|58
 楼主| yunyoushuaiqi 发表于 2016-7-22 09:12 | 显示全部楼层
代码是在原来别的程序上直接改的。没有使用的函数请自动忽略。

STM32双机通讯.zip

4.36 MB, 下载次数: 512

qbasicljx 发表于 2016-7-22 10:43 | 显示全部楼层
spi通信 还是采用dma的好,速度杠杠的,如果采用查询 或者 中断 都太浪费cpu资源了
spi双向通信 dma  
 楼主| yunyoushuaiqi 发表于 2016-7-22 11:26 | 显示全部楼层
yunyoushuaiqi 发表于 2016-7-21 19:40
首先要说明的一个就是硬件的接线。SPI接线不能跟串口一样交叉。这点一定要注意。
MISO---------MISO
MOSI-- ...

第一次收到打赏,意义非凡啊!
 楼主| yunyoushuaiqi 发表于 2016-7-22 11:27 | 显示全部楼层
qbasicljx 发表于 2016-7-22 10:43
spi通信 还是采用dma的好,速度杠杠的,如果采用查询 或者 中断 都太浪费cpu资源了
spi双向通信 dma   ...

因为我通讯的速率还是比较慢。然后为了稳定性使用的单片机也比较多。所以用扫描还是足够了。
闲云浩海 发表于 2016-7-22 11:38 | 显示全部楼层
楼主板间通信测试了3米距离,此时的SPI通信速率是多少?还有使用的是什么样的线?线对通信的影响还是很大的,尤其是线上的寄生电容对通信速率和通信距离都很大,以前在做RS485通信的时候,测试过专用的RS485通信线材和普通的,通信距离差别有一倍多,不过专用的RS485线材太贵,一米基本上都要8元左右,实际通信1KM,光线材就8K大洋了
闲云浩海 发表于 2016-7-22 11:40 | 显示全部楼层
yunyoushuaiqi 发表于 2016-7-21 20:06
因为从机需要及时的把数据发送出去,如果还是返回SPI1->DR; 这个寄存器的数据其实已经不是刚刚的数据了,因 ...

分析的不错
 楼主| yunyoushuaiqi 发表于 2016-7-22 11:50 | 显示全部楼层
闲云浩海 发表于 2016-7-22 11:38
楼主板间通信测试了3米距离,此时的SPI通信速率是多少?还有使用的是什么样的线?线对通信的影响还是很大的 ...

速率就是硬件里面配置的时钟64分频。我直接用的杜邦线串的。
lr_xgm 发表于 2016-7-22 13:23 | 显示全部楼层
赞一个,!!!!!
angus118 发表于 2016-7-22 16:52 | 显示全部楼层
l435799304 发表于 2016-7-22 17:28 | 显示全部楼层
山东电子小菜鸟 发表于 2016-7-22 17:33 | 显示全部楼层
皈依 发表于 2016-7-22 21:07 | 显示全部楼层
非常好的帖子~楼主把实际项目中遇到的问题分享上来提醒之后的小伙伴~这种精神值得赞扬!继续努力~~~
jiangyimfs 发表于 2016-7-23 14:42 | 显示全部楼层
这个挺好,mark
bidinghong 发表于 2016-7-24 08:25 | 显示全部楼层
谢谢楼主分享
逍遥李 发表于 2016-7-24 09:09 | 显示全部楼层
yunyoushuaiqi 发表于 2016-7-22 09:10
为什么我上传不了图片。老是提示失败?

网络不太通畅吧
zjut_zone 发表于 2016-7-29 08:09 | 显示全部楼层
这个不错
ErrorGz 发表于 2016-7-29 12:54 | 显示全部楼层
首先谢谢楼主建立的话题。
另外,我想请教楼主或大家,如果是SPI接口的无线通信(加PA、LNA),在切换主从的同时,还要设置传输芯片发射接收模式和PA、LNA的切换,如果每个byte切换一次,效率可能会很低。我的想法是固定长度的数据(或命令),如每次传输8bytes,传输完毕就做主从切换、接收模式切换、PA/LNA切换,接收8bytes数据(或命令),没有数据也要传输空白的8bytes,如此往复。请教是否这样?还是有其他便捷的方式?
mini1986 发表于 2016-8-3 10:04 | 显示全部楼层
项目需要,刚开始搞stm32,学习学习......
970253146 发表于 2016-8-3 23:02 | 显示全部楼层
yunyoushuaiqi 发表于 2016-7-22 09:10
为什么我上传不了图片。老是提示失败?

你好,我当初也遇到跟你一样的问题,从机返回的数据有错位。我在openedv上也发帖了。非常感谢你愿意分享你的经验。这是当时我的帖子http://www.openedv.com/thread-53680-1-1.html这里也有一些网友提供了一些解决思路,有需要的朋友也可以去看一下
970253146 发表于 2016-8-3 23:16 | 显示全部楼层
yunyoushuaiqi 发表于 2016-7-21 20:06
因为从机需要及时的把数据发送出去,如果还是返回SPI1->DR; 这个寄存器的数据其实已经不是刚刚的数据了,因 ...

对了,我以前试过只发送一次,这样确保发送完之后,硬件SPI就不工作了,那么SPI->DR的值应该就是准确值了(仅仅发送一次,确保读取的时候SPI已经停止工作了),不过还是会出现数据错位的问题,你怎么看呢?如果让STM32自发自收,确实是可以的,但双机就不行了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部