发新帖我要提问
12
返回列表
打印

SPI工作在主模式接收数据可以用DMA吗?如果可以的话该怎么用呢?

[复制链接]
楼主: 767598314
手机看帖
扫描二维码
随时随地手机跟帖
21
767598314|  楼主 | 2013-8-16 14:32 | 只看该作者 回帖奖励 |倒序浏览
兄弟姐妹们,spi工作在主模式下,用同时打开发送和接收DMA的方式接收数据成功了。感谢大家!!!

使用特权

评论回复
22
feilusia| | 2013-8-16 14:46 | 只看该作者
767598314 发表于 2013-8-16 10:18
谢谢你的分享,还有一点我不太明白:我的硬件是stm32+cc1101无线模块,cc1101向stm32发送数据是通过外部 ...

你要先看清楚你用的SPI是SPI1还是SPI2,如果SPI1的话是要用DMA1的通道2和DMA1的通道3。
那个DMA通道貌似没必要关闭吧,计数到0的话就停了。建议LZ写一个可以控制发送数量的开启DMA函数。
举个例子:
void DMA_SEND( u16 num )               
{
     DMA1_Channel3->CCR &= ~(1<<0);                 //关闭DMA通道3
     DMA1_Channel3->CNDTR = num ;                //重设传输长度
   DMA1_Channel3->CCR |= 1<<0 ;                         //开启DMA通道3       
}

使用特权

评论回复
23
767598314|  楼主 | 2013-8-17 10:17 | 只看该作者
song19881218 发表于 2013-8-15 17:37

还有一个小问题要请教一下你:现在用你说的那种方式能收到数据了,但是总是收到的不是一整包,而是前面丢掉了一部分数。可是发送和接收的DMA我是同时开的啊,理论上是应该收到完整的数据包。你当时有没有遇到过这样的问题,你是怎么解决的呢?

使用特权

评论回复
24
767598314|  楼主 | 2013-8-20 15:13 | 只看该作者
不好意思,结贴时老是提示分数分配存在错误,

使用特权

评论回复
25
zeluo| | 2013-8-20 21:00 | 只看该作者
学习帖子   谢谢了  楼上的诸位   比较给力  

使用特权

评论回复
26
sinc_mark| | 2014-7-7 14:14 | 只看该作者
767598314 发表于 2013-8-17 10:17
还有一个小问题要请教一下你:现在用你说的那种方式能收到数据了,但是总是收到的不是一整包,而是前面丢 ...

楼主,我现在也遇到了接收数据包时丢掉前面几个字节的情况,请问你是怎么解决的?谢谢!

使用特权

评论回复
27
雨思小米粥| | 2018-6-11 18:07 | 只看该作者
楼主,我现在也在用主模式做DMA接收。啥都收不到~DR寄存器都是没有数据,不用DMA就没问题。有没有代码段参考一下啊??谢谢了

使用特权

评论回复
28
雨思小米粥| | 2018-6-13 11:15 | 只看该作者
本帖最后由 雨思小米粥 于 2018-6-13 11:17 编辑

主机模式下的SPI使用DMA接收调通了,现在还有一个问题,就是每次接收的第一个字节都是0XFF。还在查找原因!!楼主的这个帖子给了我很大的帮助~~~谢谢~~谢谢楼上各位大侠。

使用特权

评论回复
29
wjlhhhhhh| | 2020-1-2 18:11 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则