发新帖本帖赏金 12.20元(功能说明)我要提问
返回列表
打印
[STM32F1]

浅谈SPI双机通讯调试

[复制链接]
楼主: yunyoushuaiqi
手机看帖
扫描二维码
随时随地手机跟帖
21
yunyoushuaiqi|  楼主 | 2016-7-22 09:12 | 只看该作者 回帖奖励 |倒序浏览
代码是在原来别的程序上直接改的。没有使用的函数请自动忽略。

STM32双机通讯.zip

4.36 MB

使用特权

评论回复
22
qbasicljx| | 2016-7-22 10:43 | 只看该作者
spi通信 还是采用dma的好,速度杠杠的,如果采用查询 或者 中断 都太浪费cpu资源了
spi双向通信 dma  

使用特权

评论回复
23
yunyoushuaiqi|  楼主 | 2016-7-22 11:26 | 只看该作者
yunyoushuaiqi 发表于 2016-7-21 19:40
首先要说明的一个就是硬件的接线。SPI接线不能跟串口一样交叉。这点一定要注意。
MISO---------MISO
MOSI-- ...

第一次收到打赏,意义非凡啊!

使用特权

评论回复
24
yunyoushuaiqi|  楼主 | 2016-7-22 11:27 | 只看该作者
qbasicljx 发表于 2016-7-22 10:43
spi通信 还是采用dma的好,速度杠杠的,如果采用查询 或者 中断 都太浪费cpu资源了
spi双向通信 dma   ...

因为我通讯的速率还是比较慢。然后为了稳定性使用的单片机也比较多。所以用扫描还是足够了。

使用特权

评论回复
25
闲云浩海| | 2016-7-22 11:38 | 只看该作者
楼主板间通信测试了3米距离,此时的SPI通信速率是多少?还有使用的是什么样的线?线对通信的影响还是很大的,尤其是线上的寄生电容对通信速率和通信距离都很大,以前在做RS485通信的时候,测试过专用的RS485通信线材和普通的,通信距离差别有一倍多,不过专用的RS485线材太贵,一米基本上都要8元左右,实际通信1KM,光线材就8K大洋了

使用特权

评论回复
26
闲云浩海| | 2016-7-22 11:40 | 只看该作者
yunyoushuaiqi 发表于 2016-7-21 20:06
因为从机需要及时的把数据发送出去,如果还是返回SPI1->DR; 这个寄存器的数据其实已经不是刚刚的数据了,因 ...

分析的不错

使用特权

评论回复
27
yunyoushuaiqi|  楼主 | 2016-7-22 11:50 | 只看该作者
闲云浩海 发表于 2016-7-22 11:38
楼主板间通信测试了3米距离,此时的SPI通信速率是多少?还有使用的是什么样的线?线对通信的影响还是很大的 ...

速率就是硬件里面配置的时钟64分频。我直接用的杜邦线串的。

使用特权

评论回复
28
lr_xgm| | 2016-7-22 13:23 | 只看该作者
赞一个,!!!!!

使用特权

评论回复
29
angus118| | 2016-7-22 16:52 | 只看该作者

使用特权

评论回复
30
l435799304| | 2016-7-22 17:28 | 只看该作者
mark

使用特权

评论回复
31
山东电子小菜鸟| | 2016-7-22 17:33 | 只看该作者
加油

使用特权

评论回复
32
皈依| | 2016-7-22 21:07 | 只看该作者
非常好的帖子~楼主把实际项目中遇到的问题分享上来提醒之后的小伙伴~这种精神值得赞扬!继续努力~~~

使用特权

评论回复
33
jiangyimfs| | 2016-7-23 14:42 | 只看该作者
这个挺好,mark

使用特权

评论回复
34
bidinghong| | 2016-7-24 08:25 | 只看该作者
谢谢楼主分享

使用特权

评论回复
35
逍遥李| | 2016-7-24 09:09 | 只看该作者
yunyoushuaiqi 发表于 2016-7-22 09:10
为什么我上传不了图片。老是提示失败?

网络不太通畅吧

使用特权

评论回复
36
zjut_zone| | 2016-7-29 08:09 | 只看该作者
这个不错

使用特权

评论回复
37
ErrorGz| | 2016-7-29 12:54 | 只看该作者
首先谢谢楼主建立的话题。
另外,我想请教楼主或大家,如果是SPI接口的无线通信(加PA、LNA),在切换主从的同时,还要设置传输芯片发射接收模式和PA、LNA的切换,如果每个byte切换一次,效率可能会很低。我的想法是固定长度的数据(或命令),如每次传输8bytes,传输完毕就做主从切换、接收模式切换、PA/LNA切换,接收8bytes数据(或命令),没有数据也要传输空白的8bytes,如此往复。请教是否这样?还是有其他便捷的方式?

使用特权

评论回复
38
mini1986| | 2016-8-3 10:04 | 只看该作者
项目需要,刚开始搞stm32,学习学习......

使用特权

评论回复
39
970253146| | 2016-8-3 23:02 | 只看该作者
yunyoushuaiqi 发表于 2016-7-22 09:10
为什么我上传不了图片。老是提示失败?

你好,我当初也遇到跟你一样的问题,从机返回的数据有错位。我在openedv上也发帖了。非常感谢你愿意分享你的经验。这是当时我的帖子http://www.openedv.com/thread-53680-1-1.html这里也有一些网友提供了一些解决思路,有需要的朋友也可以去看一下

使用特权

评论回复
40
970253146| | 2016-8-3 23:16 | 只看该作者
yunyoushuaiqi 发表于 2016-7-21 20:06
因为从机需要及时的把数据发送出去,如果还是返回SPI1->DR; 这个寄存器的数据其实已经不是刚刚的数据了,因 ...

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

使用特权

评论回复
发新帖 本帖赏金 12.20元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则