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.

[参考译文] ADS8674:每隔几分钟就会出现有噪声的样本读数

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1456064/ads8674-noisy-sample-readings-occur-every-few-minutes

器件型号:ADS8674

工具与软件:

你(们)好、

我正在使用2个 ADS8674在两节电池放电时进行测量。 一些通道用于测量电流、另一些用于测量电池电压。  

我将使用 CS 线路在同一 SPI 总线上依次查询每个 ADS8674。 我每一两分钟都会得到一个大约比 ADS8674的真实电池电压高或低20mV 的电压读数。 电流读数非常稳定、因此似乎 SPI 通信运行良好(至少对于电流通道是如此)。  

我以2kHz 的频率进行采样(每500us 获取一次新样本)、并以12MHz 的频率进行通信。  我尝试过使用较低频率(例如6 MHz)进行实验、但现象仍然存在。 此外、如果是通信问题、我会假设读数不仅在我获得的20mV 范围内。

我的问题是为什么我一直得到这些零星波动? 我已经用示波器检查了 SPI 信号和 CS 线路、一切看起来都很干净、时序符合数据表。 请注意、ADC 的输入也有一些滤波功能、因此应该注意有噪声的信号。 在下图中、我使用 Ch3和 Ch2来测量电压(电池端子的正负极)、使用 Ch1和 Ch0来测量两个不同点的电流。 下面显示了一个 ADC、还有另一个相同的 ADC 连接到同一 SPI 总线。  

CCS 中记录的以下时间跨度约为10分钟:

请注意、这一现象仅发生在两个 ADC 电压通道上。 电流读数是干净的。

提前感谢您的 帮助。

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

    你好、Steven!

    那么、您在两个 ADC 的两个电压通道(CH2和 CH3)上看到了相同的行为?  在 CCS 图中、Y 轴电压是(3.294V 至3.350V)吗?  图中的尖峰是否是您要处理的问题?

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

    您好、Tom、

    感谢您的快速回复。 是的、您的总结/假设是正确的。 这也是正确的电压范围、问题在于尖峰。

    我不确定这是否有用、但我每500次使用以下代码查询 ADC:

    //

    CH0_VOLTAGE_mV[0]= SPI_SendCmd_ADC (0xC400、0);//设置为手动模式 CH1、我们从此处的通道0读取
    CH1_VOLTAGE_mV[0]= SPI_SendCmd_ADC (0xC800、0);//设置为手动模式 CH2、我们从此处的通道1读取
    ch2_voltage_mV[0]= SPI_SendCmd_ADC (0xCC00、0);//设置为手动模式 ch3、我们从此处的通道2读取
    ch3_voltage_mV[0]= SPI_SendCmd_ADC (0xC000、0);//设置为手动模式 ch0、我们从此处的通道3读取


    CH0_VOLTAGE_mV[1]= SPI_SendCmd_ADC (0xC400、1);//设置为手动模式 CH1、我们从此处的通道0读取
    CH1_VOLTAGE_mV[1]= SPI_SendCmd_ADC (0xC800、1);//设置为手动模式 CH2、我们从此处的通道1读取
    ch2_voltage_mV[1]= SPI_SendCmd_ADC (0xCC00、1);//设置为手动模式 ch3、我们从此处的通道2读取
    ch3_voltage_mV[1]= SPI_SendCmd_ADC (0xC000、1);//设置为手动模式 ch0、我们从此处的通道3读取

    //

    此 ADC 函数如下所示:

    uint16_t SPI_SendCmd_ADC (uint16_t arg、uint8_t 器件)

    uint16_t ret = 0x0000;
    //MSB 位 IE 首先发送 ARG 的左位。
    uint8_t i = 0x00;
    //sd_CmdAnswer_typedef RETR ={0xFF、0xFF、0xFF、0xFF、0xFF};
    uint16_t 帧;

    FRAME = arg;/*!<构造16位命令消息*/

    adc_cs_on (device);

    SPI_writeDataNonBlocking (SPIA_BASE、FRAME);
    RxData_SPIA[0]= SPI_readDataBlockingNonFIFO (SPIA_BASE);/*!<读取返回16位数据、尚未预期数据*/
    SPI_writeDataNonBlocking (SPIA_BASE、0x00);//不用考虑
    RxData_SPIA[1]= SPI_readDataBlockingNonFIFO (SPIA_BASE);/*!<读取返回16位数据*/


    RET =(RxData_SPIA[1]>2)&((uint16_t)(0x3FFF));//data 仅为14位(14位的 MSB 从16位开始)


    adc_cs_off (device);

    回流塔;

    }

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

    谢谢 Steven 的验证。

    您看起来可能处于某种类型的充电/放电周期中?  是什么导致(看起来是 a) RC 一致的上升/下降时间?  为什么这些尖峰在幅度上相当一致以及大多数尖峰恰好出现在3.312V 电平附近、这对我来说有点奇怪。  您的设置中是否存在周期性切换?  可能偶尔会导致 CS 线路出现故障的情况?  我可以认为 ADS8674内没有任何内容会导致这种情况发生。

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

    您好、Tom、

    很抱歉我在度假时迟到了回复。 这确实是电池放电周期。

    我感到奇怪的是、我没有在当前通道上看到读取故障。 我曾尝试切换读取顺序、以防 ADC 读取序列的开始/结束导致问题、但我仍然不会在电流线路上出现干扰、并且仍然会在电压线路上出现干扰。  

    我还在 ADS8674 SDO 线上添加了更强的下拉电阻(从100K 添加到10K)、但未产生任何效果。 (我正在通过或门读取两个 ADS8674 SDO 输出。)   

    我也想不出任何会导致 CS 干扰的因素。 如果发生这种情况、我预计电流 信号也会出现问题?  

    这是一个有点头刮,但请告诉我,如果你想我可以尝试的任何其他东西。  

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

    Steven、您好。

    不用担心——上周有很多人外出。  如果您查看原始数据、是否所有尖峰都是从与我在上文提到的电压电平相同的电平开始?  您能告诉我您当前和电压通道使用的输入电压范围是多少吗?  您的隔离器中是否有任何计时偏斜?  

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

    您好、Tom、

    只是为了让您知道、我现在将此问题放到浮点转换问题上、对于 f280025c、这似乎是器件勘误表问题。 我会在适当的论坛上打开该链接。 再次感谢您的帮助。   

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

    有趣-让我知道你在最后发现什么