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.

[参考译文] ADS1178:解读数据时出现问题

Guru**** 2390755 points
Other Parts Discussed in Thread: ADS1178

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1199927/ads1178-problems-interpreting-data

器件型号:ADS1178

尊敬的所有人:

我在公司进行了一个学徒项目、从 ADS1178中获取数据时遇到了一些困难。 我使用 TDM 固定位置的 SPI 接口和 Arduino MEGA2560对 SPI 接口进行位拍。 VREF 为2.5V、Vcc 为5V。我使用所有通道、并以250kHz 的频率为 ADC 计时、因为我不需要高数据速率。

问题如下。 我在差分输入端测量到2.49V。 根据我的理解、该 ADC 应能够在其差分引脚上测量高达5V 的电压。 示波器显示位值约为1120DEC、差分输入电压为2.45V。这将导致差分输入电压高于 2.5V。我的 Arduino 界面也给了我的范围显示的位掩码,所以我假设它工作正常,所以我丢失了一些东西。

Arduino 代码


以下代码会执行位拆裂:


空 DataRead ()


 for (int n = 0;n < 128;n++)//运行128次循环以捕捉128位
 {
 
   digitalWrite (52、HIGH);//将 SCKL 设置为 HIGH
   delayMicroseconds (25);  //等待25us      
   digitalWrite (52、low);//将 SCKL 设置为低电平,之后由 ADC 将数据移出
   //delayMicroseconds (5);//等待5 us
   DataBits [n]= digitalRead (50);//读取 ADC 的 dout 引脚并写入 bool 阵列
   
   delayMicroseconds (15);//等待 SCKL 再次置于高电平
 }

然后、根据计算从 DEC 数值到电压的电压:

Voltage = DecVal * LSB;//转换为电压、其中 LSB = 2.5V / 2^15
Voltage = UREF- Voltage;//设置与 UREF 相关的值、UREF=2.5V

这是毫无道理的。 我预计 DEC 值约为16kDEC (5V 的半输入范围、共2.5V 输入、32kDEC 范围)、但我在1100DEC 以及代码上获得的信息更多。 我的想法不多、想问是否有人有此 ADC 的使用经验、是否有人可以分享或看到我在原理图/代码中可能犯的错误。 我想我误解了一些东西,但我不能把手指放在它的生活。


ADC 原理图:


我希望他们是可读的,提前感谢你花时间在这方面!

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

    Christian、您好!

    欢迎来到 TI E2E 社区。

    ADS1178的满量程输入范围为+/-Vref (差分)。  AINPx 和 AINNx 引脚的电压范围可以是0V 到5V (相对于 AGND 引脚测量)、但 Vref=2.5V 时的最大差分电压为+/-2.5V。

    例如、如果您将 AINNx 连接到+2.5V、那么 AINPx 引脚的电压范围可以是0V 至5V。

    AINP=0V、AINN=2.5V、VDIFF=(AINP-AINN)=(0-2.5)=-2.5V、负满量程输出代码8000h

    AINP=2.5V、AINN=2.5V、VDIFF=(AINP-AINN)=(2.5-2.5)=0V、0000h

    AINP=5V、AINN=2.5V、VDIFF=(AINP-AINN)=(5-2.5)=+2.5V、正满量程输出代码7FFFh

    输出代码为二进制补码(有符号整数)。  您的 LSB 计算结果是正确的; LSB = 2.5V / 2^15。

    另外、观察代码可以发现读取 ADS1178数据的速度不够快。  当 CLK=8MHz 时、输出数据速率将为3125sps、或一个320µsec μ s 的数据速率周期。  数据必须在小于320µsec μ s 的时间段内移出。  根据代码、SCLK 周期约为50µsec μ s、这只留下足够的时间移出128b SPI 帧的前6位。  如果不想提高 SCLK 频率、请将 CLK 频率降至400kHz 以下(最小 CLK 频率为100kHz)。

    此致、
    Keith Nicholas
    精密 ADC 应用

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

    尊敬的 Keith:

    谢谢您的详细回复! 它确实澄清了一些东西。 原理图中的时钟速率是一个拼写错误、目前为250kHz。 我临时更改了 PCB。 AINP 现在固定为2.5V、AINN 范围为0V 至5V。但我仍然获得第一篇文章中提到的位值、在 AINN 上的输入电压为1.2V 时、这些值似乎不正确。 我还想念什么吗?

    大家好、Chris

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

    Chris、您好!

    如果在下一个/DRDY 高电平到低电平转换之前不读取、数据可能会损坏。  如果您正在监视/DRDY 输出、在/DRDY 置为低电平后计时数据并在以下/DRDY 置为低电平之前完成传输、代码中不明确。

    此外、如果未遵循数据表的图24中的电源序列、则可能无法正确复位器件、从而导致操作不一致。  如果您在上电后将/SYNC 引脚置为有效、则不需要图24中的启动序列、因为/SYNC 置位也会强制器件复位。

    首先确认在/DRDY 有效之间的适当时间是否读取数据。  如果此时序正确、则可能存在上电问题、需要置位/SYNC 引脚或更改电源部分以满足图24的要求。

    请发送整个帧的/DRDY、SCLK 和 DOUT 引脚的示波器或逻辑捕获、我可以验证是否满足时序要求。

    此致、
    系统工程师