磁编芯片 MT6701 SSI接口调试

  • Post author:
  • Post category:其他





磁编芯片 MT6701 SSI接口调试

最近调试MT6701磁编芯片SSI接口的驱动程序,数据很早就读出来了,但是CRC校验一直不过。

MT6701的CRC校验采用CRC-6校验,多项式为 X^6+X+1。于是去网上找到了CRC6_ITU程序,多项式一致。并且使用测试数据分别对CRC6_ITU程序和网上的CRC计算器的计算结果进行了比对,也都是一致的,因此就一直没有怀疑是CRC计算的问题。

后来以为是SSI接口数据读取时序有问题导致的数据错位,从而导致CRC校验错误。于是花了很大时间调整和验证SSI接口的数据读取时序,不过最终CRC校验仍然通不过。

最后联系到厂家,给了一份crc计算的程序,用这个程序一算,这下就对了。转动磁铁,角度数据也跟着改变,也再无CRC校验错误,磁铁静止不动时,数据也会保持稳定。

相关CRC计算程序如下:

//for mt6701 crc-6 check 
uint8_t crc6_itu(uint8_t *data, uint32_t length)  
{  
    uint8_t i;  
    uint8_t crc = 0;    // Initial value  
    while(length--)  
    {  
        crc ^= *data++; // crc ^= *data; data++;  
        for (i=6; i>0; --i)  
        { 
            if (crc & 0x20)
                crc = (crc << 1) ^ 0x03;
            else
                crc = (crc << 1);
        }
    }  
    return (crc&0x3f);  
}

可以看出,这个CRC-6的程序与网上广泛流传的CRC6_ITU标准程序相差较大。

对于国产传感器芯片,希望厂家能完善产品相关资料。如果MT6701一开始就提供了测试demo,甚至只提供相应的CRC计算代码,我都不用浪费这么多时间在SSI接口调试上。

记录下这份经历,希望能为使用MT6701或相关型号的产品人提供到一些帮助。



版权声明:本文为SkyBlue05原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。