搜索
bottom↓
回复: 24

SPI通信问题求助

[复制链接]

出500入109汤圆

发表于 2015-10-20 11:40:16 | 显示全部楼层
两个MCU都默认把SPI设置为从机,DMA方式接收,设置一个足够大的缓冲区,然后设置一个接收中断,在主机发送完成之后向从机产生一个中断信号,从机中断,处理数据。

出500入109汤圆

发表于 2015-10-20 11:42:01 | 显示全部楼层
我在做这个,实际上的双MCU使用SPI通信要实现大量数据通信的话不太好做,

出500入109汤圆

发表于 2015-10-21 08:55:25 | 显示全部楼层
mvpgpz 发表于 2015-10-20 13:13
spi是全双工的,发送完也就接收完了,不明白为什么还要主从机切换?
求指教...谢谢 ...

双MCU使用SPI通信,两个MCU都会主动产生数据向对方发送。数据量大,通信频繁。
希望是能在18M的频率下达到90%的利用率,实际上却做不到,主要是MCU的任务太多,不能及时的响应中断,另一方面就是SPI不是很稳定,有时会出问题。

出500入109汤圆

发表于 2015-10-21 10:22:46 | 显示全部楼层
zxq6 发表于 2015-10-21 10:07
其实是可以的。使用dma吧。你这个要求。
我在lm3s上,使用dma,可以让spi的效率到95%以上。 ...

双向通信,会出现两个MCU同时要向对方发送数据的情况,这个时候两个MCU都把自己设置为主机,需要一个仲裁,决定谁先发。
我使用的方案是:每个MCU有一个接收忙状态引脚,一个发送开始引脚。先检测对方的接收忙,如果空闲的话把自己的接收置位忙状态,然后设置SPI为主机置位发送信号,开始发送数据,数据发送完成之后,设置SPI为从机,清除接收忙状态,清除发送信号,此时对方产生中断处理数据。
由于MCU执行每条命令是需要时间的,这个方案仍然无法避免发送冲突,尤其是频繁通信的时候。
你那里是使用的什么方案来解决这个问题呢?

出500入109汤圆

发表于 2015-10-21 10:36:07 | 显示全部楼层
zxq6 发表于 2015-10-21 10:27
哦,不好意思,看错了,我以为是单向通信。
我以前是单向通信,使用的dma,效率很高。
如果双向,暂时还 ...

单向的话相对来说简单一些,这个东西做完之后我感觉还是用串口对发比较合适一些,因为SPI仲裁损失的效率太多,18MSPI实际的数据量估计比不上4.5M的串口。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 23:02

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表