你好,我使用 ADS131B04 进行产品开发,使用中遇到如下问题还请帮忙解答。谢谢。
1 . SPI 通信时 CRC 不清楚怎么使用,按如下方法使用时无法得到正常的CRC 校验。
初始化代码如下
void adcStartup(void)
{
/* (OPTIONAL) Provide additional delay time for power supply settling */
delay_ms_ADS131(50);
/* (REQUIRED) Set nRESET pin high for ADC operation */
// setSYNC_RESET(HIGH);
/* (OPTIONAL) Toggle nRESET pin to ensure default register settings. */
/* NOTE: This also ensures that the device registers are unlocked. */
// toggleRESET();
/* (REQUIRED) Initialize internal 'registerMap' array with device default settings 使用设备默认设置初始化内部“registerMap”数组*/
restoreRegisterDefaults();
/* (OPTIONAL) Validate first response word when beginning SPI communication: (0xFF40 | CHANCNT) (可选)开始 SPI 通信时验证第一个响应字:(0xFF40 | CHANCNT) */
uint16_t response = sendCommand(OPCODE_NULL);
/* (OPTIONAL) Define your initial register settings here (可选)在此处定义您的初始寄存器设置*/
// writeSingleRegister(CLOCK_ADDRESS, (CLOCK_DEFAULT & ~CLOCK_OSR_MASK) | CLOCK_OSR_256);
writeSingleRegister(CLOCK_ADDRESS, (CLOCK_DEFAULT & ~CLOCK_OSR_MASK) | CLOCK_OSR_4096); /* 设置采样频率 */
/* (REQUIRED) Configure MODE register settings (必需)配置模式寄存器设置
* NOTE: This function call is required here for this particular code implementation to work. 注意:这里需要此函数调用才能使此特定代码实现正常工作。
* This function will enforce the MODE register settings as selected in the 'ads131b04-q1.h' header file. 此函数将强制执行在“ads131b04-q1.h”头文件中选择的 MODE 寄存器设置。
*/
// writeSingleRegister(MODE_ADDRESS, MODE_DEFAULT); /* 默认配置 */
writeSingleRegister(MODE_ADDRESS, (MODE_DEFAULT & ~MODE_RX_CRC_EN_MASK & ~MODE_CRC_TYPE_MASK) | MODE_RX_CRC_EN_ENABLED | MODE_CRC_TYPE_16BIT_CCITT); /* 默认配置,增加CRC */
writeSingleRegister(GAIN_ADDRESS, (GAIN_DEFAULT & ~GAIN_PGAGAIN0_MASK) | GAIN_PGAGAIN0_1);
writeSingleRegister(GAIN_ADDRESS, (GAIN_DEFAULT & ~GAIN_PGAGAIN1_MASK) | GAIN_PGAGAIN1_1);
/* (OPTIONAL) Read back all registers */
/* (OPTIONAL) Check STATUS register for faults */
}
SPI 通信数据 逻辑分析仪抓包如下

问题1:逻辑分析数据与 这个芯片TI官方 SDK 的 readData()函数读取类容相同, 但readData 函数的CRC校验失败,根据数据内容自己进行CRC计算也不符。请问该如何对数据进行 CRC 校验。
问题2:MISO 收到的数据前3个字节经常不同,中间6个字节是通道数据这个数据是正常的。请问 前三个字节数据怎么理解 ,是否是经常变化的数据。
问题3:如图 SDK的 readData函数中 uint16_t crcWordIn = calculateCRC(dataTx, bytesPerWord * 2, 0xFFFF); dataTx长度是4,


