我们在器件初始化的时候遇到了这样的问题:当发送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;
}
}
我要赚赏金打赏帖 |
|
|---|---|
| 设备功耗web监控界面(ESP32C5)被打赏¥28元 | |
| OrangePiZero2W系统被打赏¥33元 | |
| Linux环境下以模拟方式快速实现出入管理功能测试被打赏¥24元 | |
| 树莓派3+Klipper,老3D打印机满血升级被打赏¥33元 | |
| OK1126B-S开发板下串口屏及其应用被打赏¥21元 | |
| 低功耗超声波液位测距仪(ESP32S3)被打赏¥27元 | |
| 在K230DBOX上实现多时段语音提示功能被打赏¥14元 | |
| 使K230DBOX实现相机持续拍照功能被打赏¥12元 | |
| 基于K230DBOX的文本管理器设计被打赏¥14元 | |
| 基于K230DBOX的彩色画板功能实现被打赏¥15元 | |
我要赚赏金
