OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5918|回复: 8

SPI使用DMA收发,但是接收回来的数据全是发出去的,求解答疑问

[复制链接]

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2017-7-8
在线时间
38 小时
发表于 2021-4-15 18:01:38 | 显示全部楼层 |阅读模式
3金钱
如题,本人最近在调试某款IMU芯片,采用的是SPI通讯,利用普通SPI通讯已经能正常采集到六轴数据;
芯片采集数据方式为:
SPI写地址0x30,由于SPI为全双工通信,故此时接收到的第一个字节0x??撇弃不用......再次发送任意字节0x??,此时接收到的第二个字节(例如0x37)即为所需要的有效数据。
当我配置好DMA发送与接收后,开启传输,利用串口打印RX_Buff[256],发现除了第一个字节以外全部都是0x30,即DMA发送的0x30全部都被接收回来,所以想询问一下,是否这种需要发一个字节再回一个字节的芯片通讯类型无法使用DMA传输?或者说有什么办法让DMA间隔发送-->接收-->发送-->接收...

最佳答案

查看完整内容[请看2#楼]

试一试DMA发送一个字节,然后等待DMA接收到一个字节(利用IDLE判断是否空闲/接收成功),再发送一个字节...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

30

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2020-4-17
在线时间
111 小时
发表于 2021-4-15 18:01:39 | 显示全部楼层
本帖最后由 跟紧我 于 2021-4-19 14:39 编辑
Maximum丶耗子 发表于 2021-4-16 17:13
就因为是这样我才难受

试一试DMA发送一个字节,然后等待DMA接收到一个字节(利用IDLE判断是否空闲/接收成功),再发送一个字节...
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2021-4-16 01:54:39 | 显示全部楼层
帮顶
回复

使用道具 举报

2

主题

582

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2690
金钱
2690
注册时间
2014-5-23
在线时间
188 小时
发表于 2021-4-16 09:34:40 | 显示全部楼层
一个字节用啥dma
回复

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2017-7-8
在线时间
38 小时
 楼主| 发表于 2021-4-16 09:58:41 | 显示全部楼层
awsawzj 发表于 2021-4-16 09:34
一个字节用啥dma

所以像这种一发一收没有办法用DMA做到先多发再多收的方式么
回复

使用道具 举报

30

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2020-4-17
在线时间
111 小时
发表于 2021-4-16 11:15:15 | 显示全部楼层
由于SPI为全双工通信,故此时接收到的第一个字节0x??撇弃不用......再次发送任意字节0x??,此时接收到的第二个字节(例如0x37)即为所需要的有效数据。
为什么SPI是全双工就要舍弃收到的第一个字节???
回复

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2017-7-8
在线时间
38 小时
 楼主| 发表于 2021-4-16 14:36:04 | 显示全部楼层
跟紧我 发表于 2021-4-16 11:15
由于SPI为全双工通信,故此时接收到的第一个字节0x??撇弃不用......再次发送任意字节0x??,此时接收到的第 ...

因为SPI全双工通信   类似一个环形缓冲   发送第一个字节的同时必然会接收一个字节   但是这个时候接收回来的这个字节一般情况下是一个随机值   是上一个指令对应的数据值   不是芯片根据我这次发送的字节命令而产生的数据值   所以撇弃不用   需要再发送一个无效指令才能将需要读取的数据值推出来
回复

使用道具 举报

30

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2020-4-17
在线时间
111 小时
发表于 2021-4-16 15:54:42 | 显示全部楼层
Maximum丶耗子 发表于 2021-4-16 14:36
因为SPI全双工通信   类似一个环形缓冲   发送第一个字节的同时必然会接收一个字节   但是这个时候接收回 ...

对对 是这样
回复

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2017-7-8
在线时间
38 小时
 楼主| 发表于 2021-4-16 17:13:48 | 显示全部楼层

就因为是这样我才难受
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-28 00:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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