最近在开发过程中遇到一个问题,SPI主机无法正常读回写入的数据。
通过逻辑分析仪可以看到,MOSI波形正常,但是MISO数据全为0,即全是低电平。主机的MISO正常配置为上拉输入。波形图如下所示:
其中上面为MOSI,中间为SCK,下面为MISO。
通过波形图可以看到,MISO是正常被从机拉低了的,说明片选信号正常,并且从0机接受到了主机读的信号,此时对写入-读回数据进行更改,多次尝试后发现,当读回数据按二进制形式,存在0在前,1在后的情况时,此时0为低电平,而当应该输出1时,MISO无法正常被主机拉高,例如:假设预期读回值为 1101 0101,那么实际读回值就会变成1100 0000。
在最开始的实际操作过程中,SCK采用的84/6 MHz,而该款芯片的手册上写的最大SCK为 6 MHz,后续将SCK一直降到 84/128 MHz,终于可以正常读回数据。
目前尚不清楚造成此问题的具体原因是什么,待后续查证,如果有老哥遇到过类似的问题或者知道问题所在的可以在评论区交流一下,万分感谢!