发新帖我要提问
12
返回列表
[STM32]

SPI用DMA模式接收数据错位。

[复制链接]
楼主: any012
手机看帖
扫描二维码
随时随地手机跟帖
any012|  楼主 | 2017-5-26 09:09 | 显示全部楼层
zodiacGu 发表于 2017-5-25 11:10
是不是你那边没有清从设备的Rx FIFO?

STM32的SPI没有硬件FIFO。
或者,你说的是SPI的移位寄存器?
我倒是想清移位寄存器,但不知道该如何清?

使用特权

评论回复
any012|  楼主 | 2017-5-26 09:11 | 显示全部楼层
ningling_21 发表于 2017-5-18 17:38
数据在内部存储时是对齐的,前面错了,后面也跟着错

看了SPI的原理框图,应该是SCLK每收到8个或16个有效信号,就将移位寄存器里的数放到接收缓存里。
我的理解是有个类似计数器的部分,来计算SCLK的有效信号。有没有办法将这个计数清零?

使用特权

评论回复
any012|  楼主 | 2017-5-26 09:12 | 显示全部楼层
icecut 发表于 2017-5-10 14:06
那你不用 dma, 用示波器表笔乱碰也移位

看了SPI的原理框图,应该是SCLK每收到8个或16个有效信号,就将移位寄存器里的数放到接收缓存里。
我的理解是有个类似计数器的部分,来计算SCLK的有效信号。有没有办法将这个计数清零?

使用特权

评论回复
icecut| | 2017-5-26 10:05 | 显示全部楼层
any012 发表于 2017-5-26 09:12
看了SPI的原理框图,应该是SCLK每收到8个或16个有效信号,就将移位寄存器里的数放到接收缓存里。
我的理 ...

这么久还没搞定?你spi是master还是device?

使用特权

评论回复
any012|  楼主 | 2017-5-26 10:53 | 显示全部楼层
icecut 发表于 2017-5-26 10:05
这么久还没搞定?你spi是master还是device?

当作SPI从设备。
现在是在片选信号失效后,重新初始化了SPI。目前没问题了,但感觉没必要完全初始化。

使用特权

评论回复
icecut| | 2017-5-26 11:00 | 显示全部楼层
any012 发表于 2017-5-26 10:53
当作SPI从设备。
现在是在片选信号失效后,重新初始化了SPI。目前没问题了,但感觉没必要完全初始化。 ...

你是不是片选一直拉低了.接死了?

使用特权

评论回复
any012|  楼主 | 2017-5-26 13:43 | 显示全部楼层
icecut 发表于 2017-5-26 11:00
你是不是片选一直拉低了.接死了?

不是,PC6当作片选信号的输入,PC6上升沿中断,开启SPI的DMA接收,接收定长数据。PC6下降沿时,我现在的处理是重新初始化下SPI,这样做现在没事。

使用特权

评论回复
icecut| | 2017-5-26 17:56 | 显示全部楼层
片选不是低电平有效么?如果是软片选,完全可以下降沿初始化所有,让发送端多延时一下

使用特权

评论回复
any012|  楼主 | 2017-5-27 09:58 | 显示全部楼层
icecut 发表于 2017-5-26 17:56
片选不是低电平有效么?如果是软片选,完全可以下降沿初始化所有,让发送端多延时一下 ...

是软片选。
现在的解决办法也就是在下降沿初始化SPI,但总觉得初始化SPI操作太多了,应该有更有效的办法吧。

使用特权

评论回复
icecut| | 2017-5-27 10:01 | 显示全部楼层
any012 发表于 2017-5-27 09:58
是软片选。
现在的解决办法也就是在下降沿初始化SPI,但总觉得初始化SPI操作太多了,应该有更有效的办法 ...

你还是查查你硬件吧.逻辑分析仪抓一下信号.不是cpu问题.

使用特权

评论回复
zodiacGu| | 2017-5-30 13:00 | 显示全部楼层
any012 发表于 2017-5-26 09:09
STM32的SPI没有硬件FIFO。
或者,你说的是SPI的移位寄存器?
我倒是想清移位寄存器,但不知道该如何清? ...

DR Register

使用特权

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

本版积分规则