我们在器件初始化的时候遇到了这样的问题:当发送setlastaddress命令的时候最后PEC字节ic没有响应,导致通讯失败;之前的helloall和ROLLCALL命令均得到了正确的数据。现在是两个芯片连接,helloall设置的地址是0XE0,即第一个芯片的地址是A[0-4] 100000;ROLLCALL命令读回来的地址是1FA0和1F90,芯片个数也是正确的2个。紧接着发送setlastaddress命令,发送的数据书序是:广播命令、地址寄存器0X01、0X02、0X02和PEC字节,前面四个字节都得到了ic的响应,第五个PEC字节IC没有回应,导致通讯失败。PEC的数据是由前面四个字节按照CRC-8的算法生成的,算法源代码也一并附上。
void MAX11068_PEC_Calculation(U8 * pByteList, U32 NumberOfBytes, U8 *pCRCByte)
{
#define CRC8_POLY (0x07)
xdata U32 i;
xdata U8 j;
xdata U8 Remainder;
*pCRCByte = 0x00;
for(i = 0;i < NumberOfBytes;i++)
{
Remainder = *pCRCByte^pByteList[i];
for(j = 0;j < 8;j++)
{
if(Remainder&0x80 == 0x80)
{
Remainder = (Remainder << 1)^CRC8_POLY;
}
else
{
Remainder = (Remainder << 1);
}
Remainder = Remainder&0xff;
}
*pCRCByte = Remainder;
}
}
有奖活动 | |
---|---|
“我踩过的那些坑”主题活动——第002期 | |
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |