我不知道我做了什么错误、但即使前导码(0xC0)正确、ADS1298的通道 ADC 值也显然是错误的。
我可以成功读取 ID 寄存器、也可以读取/写入任何其他寄存器、因此不会对 SPI 连接造成问题。
我的 ADS1298配置如下:
- CONFIG1:HR 模式和1kSPS
- CONFIG2:0x00
- CONFIG3: PD_REFBUF_ENABLE_INTERNAL、 RLD_MEAS_RLD_IN、 RLDREF_INT_GEN_INTERNAL、 PD_RLD_ENABLE
- CONFIG4: SINGLE_SHOT_CONTINUE_MODE
- CHnSET: MUXn_MVDD_SUPPLY_measure
配置完成后、我发送命令 START 和 RDATAC、然后调用:
HAL_SPI_TransmitReceive (SPI_Handle、&spitTxBuffer[SingleSampleSize * receivedSam]、&spirxBuffer[SingleSampleSize * receivedSampleSize]、SingleSampleSize、1000);
其中:
#define NoOfEcgChannels (8U)
#define NoOfStatusBytes (3U)
#define NoOfBytesPerChn (3U)
#define SingleSampleSize (NoOfStatusBytes + NoOfBytesPerChn * NoOfEcgChannels)
我对每个通道的预期基本上是0x007FFFFF (ADC 值的上限)、但我得到的结果是:
00327f81;0035a7d9;0016a863;003c3934;0024d771;002dc914;fff0a0cc;0045374f
ffee0c41;0035b126;00109ff6;ff9d38;ffe3daf0;ffe897ec;ffe5328b;000dd740
我构建的值如下所示:
const Int32_t C1 =(static_cast (spirxData[offset + 3])<< 16)|(spirxData[offset + 4]<< 8)| spirxData[offset + 5];
const Int32_t C2 =(static_cast (spirxData[offset + 6])<< 16)|(spirxData[offset + 7]<< 8)| spirxData[offset + 8];
const Int32_t C3 =(static_cast (spirxData[offset + 9])<< 16)|(spirxData[offset + 10]<< 8)| spirxData[offset + 11];
const Int32_t C4 =(static_cast (spirxData[offset + 12])<< 16)|(spirxData[offset + 13]<< 8)| spirxData[offset + 14];
const Int32_t C5 =(static_cast (spirxData[offset + 15])<< 16)|(spirxData[offset + 16]<< 8)| spirxData[offset + 17];
const Int32_t C6 =(static_cast (spirxData[offset + 18])<< 16)|(spirxData[offset + 19]<< 8)| spirxData[offset + 20];
const Int32_t C7 =(static_cast (spirxData[offset + 21])<< 16)|(spirxData[offset + 22]<< 8)| spirxData[offset + 23];
const Int32_t C8 =(static_cast (spirxData[offset + 24])<< 16)|(spirxData[offset + 25]<< 8)| spirxData[offset + 26];
有什么想法我做了什么错? 我们非常感谢您的任何帮助。