SPI 读取数据'错位'
在FAE群里面有人说SPI读取的数据出现了错位,然后这个问题我刚好遇到过,遂记录一下
可以观察到其实这组数据还是很有规律的
1 | 正确数据 |
每个字节的最高位变成了 1(0x80, 0x81, 0x82, 0x83)
低 7 位数据仍然有部分对得上
这个现象通常是 数据整体左移了一位,即 最左边多出一个 1,最后一个位丢失。
这种情况一般是SPI的模式主从两边不一致导致的,比如SCK空闲电平错误,就会导致第一个电平读取的时机错误
以02错码成81举例:0000 0010,首先左移一位,变为 0000 0001,又由于第一个bit,读取的时机错误,相当于多加了一个1,变为 1000 0001,即81