打印
[AT32F415]

SPI读取24位数据发生了数据颠倒

[复制链接]
2034|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我用SPI读取一个24位的数据,8位8位的读取,读取三次。正常读取出来的数据顺序应该是ABC,我用示波器抓了,波形就是ABC。但是我读取出来的数据却是CAB。这不是最奇怪的,当我只从寄存器取一次数据的时候,我第一个字节读出来的就是A;当我从寄存器取2次数据的时候,第一个字节读出来的就是B;当我从寄存器读三个字节的时候,第一个字节就是C。奇怪的是,当我读第一个字节的时候,系统是怎么知道我后面还是否会继续读取数据,从而给我不同的数据的呢?
读取三个字节:

读取两个字节:

读取一个字节:

使用特权

评论回复
沙发
LcwSwust| | 2022-10-19 17:34 | 只看该作者
CAB不是颠倒而是错位,你看 CAB CAB CAB,如果去掉前面第一个C,那后面就是ABC ABC

使用特权

评论回复
板凳
1109346714|  楼主 | 2022-10-19 17:45 | 只看该作者
找到问题了,问题在于前面,我下发数据后,并没有将缓存区的数据取出,我在一个博客中看见SPI在每次写数据后也依然要将寄存器中的数据读出,哪怕是没用的。在我将前面写数据后的寄存器值读出来丢掉后,后面的数据就是正常顺序的了。

使用特权

评论回复
地板
1109346714|  楼主 | 2022-10-19 17:45 | 只看该作者
LcwSwust 发表于 2022-10-19 17:34
CAB不是颠倒而是错位,你看 CAB CAB CAB,如果去掉前面第一个C,那后面就是ABC ABC  ...

嗯,我发现是前面数据有一部分并没有被我读出导致的。导致后面的数据都错位了

使用特权

评论回复
5
icecut| | 2022-10-19 19:59 | 只看该作者
实验不是错. 代码不严格的实验,就是自己挖坑自己跳

使用特权

评论回复
6
zerorobert| | 2022-11-2 17:49 | 只看该作者
spi不都是8位的数据吗              

使用特权

评论回复
7
belindagraham| | 2022-11-2 17:59 | 只看该作者
解决SPI数据错几位造成数据整体偏移的问题

使用特权

评论回复
8
backlugin| | 2022-11-2 18:17 | 只看该作者
数据颠倒需要查看是不是数据时序是否正确

使用特权

评论回复
9
phoenixwhite| | 2022-11-2 18:45 | 只看该作者
SPI数据DMA传输错一个字节?

使用特权

评论回复
10
eefas| | 2022-11-2 19:23 | 只看该作者
可以检查是否有SPI数据线外接的情况

使用特权

评论回复
11
10299823| | 2022-11-2 20:05 | 只看该作者
使用示波器测量一下信号是否正确              

使用特权

评论回复
12
janewood| | 2022-11-2 20:56 | 只看该作者
这个是代码的问题还是硬件的问题呢

使用特权

评论回复
13
kkzz| | 2022-11-3 20:31 | 只看该作者
这个可以自己移位颠倒数据的              

使用特权

评论回复
14
V853| | 2022-11-5 10:14 | 只看该作者
SPI硬件设置大小端出问题了?还是传参的顺序出问题了?

使用特权

评论回复
15
朝生| | 2022-11-5 10:15 | 只看该作者
所以是SPI缓存数据堆积的原因导致的呗。

使用特权

评论回复
16
tpgf| | 2022-11-7 10:28 | 只看该作者
是不是数据的高端和低端的配置或者读取顺序出现问题了呢

使用特权

评论回复
17
heimaojingzhang| | 2022-11-7 10:39 | 只看该作者
SPI数据错几位,造成数据整体偏移。比如传0x5555,就有可能变长0xaaaa。

使用特权

评论回复
18
keaibukelian| | 2022-11-7 11:38 | 只看该作者
 软件模式时每次接收之前写入0,完成接收之后写入1,就可以实现软件片选,这个操作可以放在软件模式下的外部中断,或者DMA数据流中断中都可以,为的是清空SPI中的数据寄存器,让其重新开始,把之前寄存器接收到的垃圾(比如残留的1位数据待在SPI-DR之中),还有一个隐含的操作,当只有把SSI写入1时才能正确的清掉各种标志

使用特权

评论回复
19
labasi| | 2022-11-7 11:52 | 只看该作者
本帖最后由 labasi 于 2022-11-7 13:30 编辑

不清楚这个问题

使用特权

评论回复
20
paotangsan| | 2022-11-7 12:05 | 只看该作者
有时遇到的是接收到的首字节错了并非发送的值,并且可能依次偏移。

使用特权

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

本版积分规则

2

主题

10

帖子

0

粉丝