I2C与SPI调试注意点

近期在调试6DOF和地磁传感器,6DOF的传感器用的是ICM20602,SPI通信方式;地磁传感器AK09916C,I2C通信方式。常见的通信方式,但是因为使用HAL库,且要配合从机设备的时序及配置,因此在调试时遇到一些问题。

这些传感器都有设备ID,要尝试通信是否成功,要先读取地磁传感器的设备ID,这个用STM32的HAL库函数很容易实现;在写数据时,因为最开始没考虑到用HAL_I2C_Master_Transmit函数时地址与数据一起发送,导致写数据错误。其实,在调试传感器时,还是要重点关注器件的SPEC,里面会有说明读写时序及格式。

SPI的读取调试花费了一些时间。1、连线:我用的6DOF的小demo板,在MISO和MOSI与主机连线时,连接不正确,一定要MOSI连从机的输入,MISO连从机的输出。这种在调试时如果不确定,可以尝试更换线序来验证;2、传输格式:开始传输时只发送一字节数据,然后就等数据返回,发现总返回0x00,后查询器件的SPEC,说要发地址+数据,即一次发送两个字节,才明白。(SPI这种同步数据,一定要注意);3、时序:数据通信一定要注意时序和CLK,如果不正确,就会导致通信不稳定。

I2C和SPI都是常用的通信协议,但实际自己还是了解的不深入,所以才导致调试时遇到问题。对于关键的几点,一定要注意!

你可能感兴趣的:(嵌入式)