我的配置:(M0: 浮空,M1:上拉,M2:上拉),同步从模式,32位数据帧格式,开启Hamming code。
读写命令代码:
//读写32位命令函数
uint16_t ADS131A02_Write_CMD(uint16_t command)
{
uint16_t receive = 0X0000;
SPI2_CS_LOW();
receive = SPI2_Write_Read((uint8_t)(command>>8));
receive <<= 8;
receive |= SPI2_Write_Read((uint8_t)(command&0X00FF));
SPI2_Write_Read(0X00);
SPI2_Write_Read(0X00);
SPI2_CS_HIGH();
delay_us(10);
}
现象:这种代码,在关闭Hamming code下,能正确运行,读取各个命令的状态响应;而在开启Hamming code下,只能读取到复位状态响应FF02,读取不到其他命令的状态响应。
问题:这是为什么?在开启Hamming code下,该如何编写读写命令函数代码?(datasheet Page 39和40说的不够详细)
user6058605:
开启Hamming code后,发送命令格式是:16bit+8bit zeroes+8 HC bit,那么这8 HC bit如何发送?是用0补充,还是发送某一特定8bit HC? 如果是发送特定8 bit HC,那该怎么发送?datasheet 上面根本就没有说清楚
Amy Luo:
回复 user6058605:
您好,
8bit HC包括5位Hamming 位, 2位 checksum (ChS) 位, 和1位 zero bit, 参看数据手册 Figure 59。5位Hamming 位在数据位中交错排列。h0是汉明码的最低位,h4是最高位。参看数据手册Table 11. ADS131A0x Hamming Codes。
user6058605:
回复 Amy Luo:
明白,我看过了,我的意思是在这8位Hamming中: 5位Hamming Bits对应的二进制数据是什么?2ChS Bits对应的二进制数据是什么?这个数据手册上没说呀