MLX90363是一款三轴磁编码器,采用SPI总线与主控CPU通讯传输数据,通讯协议规定每条报文的最后一个字节为CRC校验字节。
参考melex官方的教程用STM32通过SPI方式完成MLX90363的驱动,采用全双工方式通讯,发现发送完读取角度报文后,返回得到的数据总是为Error Message, 并且通过对报文内容分析得到 具体错误内容为 Incorrect CRC,也就是说MLX90363收到的数据CRC校验不通过。
仔细检查了以下几项:
1.确保发送报文最后一个字节的CRC计算正确
2.确保设置的SPI参数正确
3.确保操作时序正确
确定了以上3点后,问题依然没有解决,后来通过用示波器观察发现板子的MOSI一直处于高电平,由于MLX90363外部有5V的上拉,因此怀疑是CPU主控的芯片引脚跟MLX90363没有接好,经过测试确实是这样。因此得出以下总结:
1.调SPI,I2C等通讯接口的时候,一定要配合示波器或者逻辑分析仪看物理波形,确保硬件正常。
2.以后对于SPI接口的芯片,如果芯片支持CRC的,当主控CPU收到错误CRC,首先应该怀疑硬件MOSI是否能发出正常电平,因为发出的电平都不正确,肯定会收到错误CRC的。
|