This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADS1298:通道 ADC 数据是无用的

Guru**** 1125150 points
Other Parts Discussed in Thread: ADS1298
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1036595/ads1298-channel-adc-data-is-garbage

器件型号:ADS1298

我不知道我做了什么错误、但即使前导码(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];

有什么想法我做了什么错? 我们非常感谢您的任何帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    欢迎来到 E2E 论坛!!!

    您可以检查一些事项、以确保器件处于正确的运行状态。 请使用以下链接执行步骤2、其中列出了所有器件内部引脚的电压?

    另一个建议是通过设置 CHnSET[2:0]= 101、CONFIG2.TEST_FREQ[1:0]= 00、CONFIG2.TEST_AMP = 0和 CONFIG2.INT_TEST = 1来使用内部生成的测试信号、以验证整个信号链。

    为了进行数字验证、请使用示波器探测 SPI 总线、并确保您使用微控制器正确解读所有通道。 您可以根据预期从示波器图快速识别0x7FFFFF。

    谢谢

    -TC