你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32C8T6 硬件SPI ReceiveOnly Master 读取数据 数据 错位的问题

[复制链接]
DarkG 发布时间:2017-1-23 16:46
应用需要读取AS5145 的数据,每次读取18位有效数据,也就是读3个字节。
想使用DMA,但是只能配置一个DMA SPI_RX,接收的串口用掉了。
现在遇到的情况是:
1.当不使用DMA情况下,在Full-Deplex模式下,使用HAL_SPI_TransmitReceive 接收数据没有问题。
2.不使用DMA,在Receive Only Master模式下,使用HAL_SPI_Receive接收数据,就会出现数据错位的情况第一次读取和第二次读取直接错位8个字节,然后就保持不变,见下图。3.使用DMA,在Receive Only Master模式下,使用HAL_SPI_Receive_DMA接收数据,就会出现数据错位的情况第一次读取和第二次读取直接错位8个字节。


我判断的问题是,上一次读取的缓存还在,然后在下一次读取的时候 填充到第一个字节,这样照成的问题是下一次 读取到的第一个字节 是上一次的最后一个字节,不知道我这样的理解对不对,实际上问题可能更加复杂。

无DMA Receive Only接收数据

无DMA Receive Only接收数据
收藏 1 评论2 发布时间:2017-1-23 16:46

举报

2个回答
toofree 回答时间:2017-1-23 17:39:32
还需要好好找找问题,你的猜想可能,但是还要找原因。
DMA用的时候,需要重新初始化,或清一下标志。
数据是DMA直接传到RAM的吧,如果是的话,不管你读不读RAM,DMA是不知道的。
DarkG 回答时间:2017-3-18 12:34:51
toofree 发表于 2017-1-23 17:39
还需要好好找找问题,你的猜想可能,但是还要找原因。
DMA用的时候,需要重新初始化,或清一下标志。
数据 ...

谢谢,我暂时用比较傻的办法解决了,不过我用的是 HAL的DMA Receive 方法,都是自动设置的,只用一个DMA接收的时候有问题,所以才怀疑是有问题

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版