一、目前问题:
1、42652IMU读取ID值不正确
目前ID读出:0 正确ID:0X6F
2、磁力计读取ID值不正确
目前ID读出:0 正确ID:0X10
二、原因推测:
1、焊接不良(硬件问题)
2、驱动时序未编写对(软件问题)
三、目前在做的事情:
思路:
先排除软件问题再考虑硬件问题,抓取I2C和SPI通讯的时序,判断是否确实将时序发送了出去,如果时序是正确的,并且我只做读取器件ID的操作,器件只要正常上电,并且我确实向其发送的读取ID时序,不用考虑器件的初始化,我都应该能读到器件的ID,如果仍未读到ID,说明极大可能是硬件问题(焊接问题)
验证:
IIM42652(黄色时钟线,蓝色MOSI数据线):根据配置为SPI模式三,所以时钟空闲为高电平,第二个跳变沿采样,所以由主机发送的寻址信号为01110101,十六进制是0X75,根据官方手册,ID寄存器地址确实是0X75
结论:IIM42652的SPI的发送时序没问题
IST8308(黄色SCL,蓝色SDA): 时钟高电平时进行取样,故寻址信号为000110001,前七位为地址,第八位为读写位0为写1为读,第九位为应答位,故为寻址地址为0001100即0X0C,第八位为0写信号,第九位为1无应答。
结论:跟IST8308的I2C通信时序也没问题,从最后一位应答位为1看得出,器件没有应答,故极大可能是焊接问题。