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

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个回答
七哥 回答时间: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接收的时候有问题,所以才怀疑是有问题

所属标签

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