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.

[参考译文] ADS112C04:ADS 112C04检查值错误

Guru**** 2393725 points
Other Parts Discussed in Thread: ADS112C04, ADS122C04

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/853692/ads112c04-error-on-ads-112c04-check-value

器件型号:ADS112C04
主题中讨论的其他器件: ADS122C04

大家好!

这是上海宝龙汽车技术有限公司的 Linmaoxin 有限公司。 我在这里有一个问题需要 TI 帮助解决。


关于 ads112c04芯片采样数据的完整性检查、当我打开 CRC16-CCITT 检查时、我发现转换数据与自计算校验和不匹配。

当数据被解调时、发现 MSB (高电平)位一直为0X95、并且 LSB (低电平)位数据是正确的。 数据0x95、0x2F 校验值0x31、0x91等列

(IIC 数据读数正常、读写寄存器正常、硬件正常)。我不知道是什么导致了问题。

 

         以下是寄存器配置和注册地址:

         const ADS112RegisterTable_t ADS112RegisterTable[4] =  
         {
                          0x00、 0x36、
                          0x04 、0xA0
                          0x08 、0x25,         

             0x0C 、0xA0、              

               };

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

    尊敬的 Maoxin:

    欢迎来到 E2E 论坛! 您的微控制器是否具有 FIFO?  启用 CRC 后是否可能无法检索所有数据?  您能否向我发送通信的示波器或逻辑分析仪快照、以便我可以验证您的通信是微控制器发回的内容?

    谢谢、

    Bob B

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

    您好 Bob Benjamin。

    非常感谢您的回复。 但出于某种原因、很抱歉、这里没有 FIFO。 但是、我将 IIC 和 ADC 的源代码附加到了该文件中。 文件中的 DOC 文件在不同的寄存器配置条件下组织各种情况下的数据以及通信时序。 希望这将帮助您找到问题。

    感谢 againe2e.ti.com/.../Source-code-_2600_Problem-Description.zip

    LIN Maoxine2e.ti.com/.../Source-code-_2600_Problem-Description.zip

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

    尊敬的 Lin Maoxin:

    感谢您提供 Saleae 数据文件、因为它们对您传输和接收的内容非常有帮助。  似乎对 ADS122C04的写入操作符合预期、但读取操作有问题。  根据您放置 Saleae 探头的位置、您可能会看到不同的东西。  如果您 Saleae 有一个模拟选项、我会为 SDA 和 SCL 信号线路将其打开、并观察信号线路的模拟行为。  我认为可能会发生的情况是、这些线路上的电荷/衰减时间明显呈指数级、数据可能不会根据需要变化。  

    根据某些 SCL 线路信息、可能需要相当长的时间将线路拉至逻辑低电平。  您应该会看到接近50/50的占空比行为。  从 ADS112C04读取时、高电平时间可能比低电平时间长很多。  这可能是由于信号线路上的电容或使用过大的上拉电阻值造成的。  我将通过将 SCL 时钟速度减慢到100kHz 时钟来进行实验、看看您是否获得了正确的结果。  由于我没有您的原理图或有关您如何设置此测试的信息、与使用 PCB 相比、原型设计解决方案可能会产生额外的接线电容。  在这种情况下、我建议将上拉电阻器值降低至大约1k。

    我在图中注意到的其他一些东西。  一个注意事项是不要在 POWERDOWN 命令之后发出 RESET 命令。  您只需发出 START 命令并仅更改需要为所需输入更改的寄存器即可。  我注意到的另一件事是、正在进行大量额外的通信。  启用 CRC 的读取总共为4字节(2个数据和2个 CRC)。  启用计数器和反向数据、您将看到6个字节(1个字节计数、2个字节数据、后跟一个反向计数字节和2个反向数据字节)。  和仅反相数据总共为4字节(2个数据字节后跟2个反相数据字节)。

    在某些情况下、您将获得针对寄存器2的正确回读。  MSB 是一个只读位、表示新结果准备好从器件中读取。 因此、发出 START 命令且 DRDY 变为低电平后、寄存器2的位7将读回高电平。

    此致、

    Bob B

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

    您好 Bob Benjamin


     首先、感谢您的解释和建议、让我了解 DRDY 引脚的作用以及数据位的含义。
    根据您的建议、我已将上拉电阻器值从470K 更改为50K 或1K。 电流通信速率降至接近100kHz、低电平时间延长。测试结果表明、在两个不同的上拉电阻器的情况下、读取数据时间的波形存在问题。此外、 在打开 POWERDOWN 命令或 RESET 命令后发出的 RESET 命令、未消除这种现象(但波形变得更加标准化)。

    目前、根据您的建议、我对芯片有更深入的了解、我准备根据您的建议继续进行测试、我希望能找到问题。

    本附件中包含了附件中最后忘记的原理图和该测试的波形。

    e2e.ti.com/.../Schematic-_2600_-Waveform.zip

    此致


    Linmaoxin

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

    尊敬的 Lin Maoxin:

    抱歉、我的回复延迟。  我建议查看 I2C 规范。  对于 I2C 接口、470k Ω 上拉电阻器的值过高、尤其是在400kHz SCL 时。

    我看到信号中有很多过冲和下冲。  这可能是由于示波器接地不良、但也可能是由于信号线路的电容造成的。  这是一个您使用试验电路板或导线将事物连接在一起的原型吗?  您能否解释或向我发送您设置的图片、以便我更好地了解正在发生的情况?

    此致、

    Bob B

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

    您好 Bob,

    这是我的错。 我之前没有详细介绍我的配置、这在这里造成了很多麻烦。由于我的疏忽、我以前没有怀疑过 IIC 问题、 但我觉得有些小的失真不会影响。将上拉电阻器更改为1K 并使用 USB 转 IIC 模块测试更改后、IIC 波形读出更加标准化、在执行断电命令后禁用 REST 命令。 目前在某些条件下需要通过 IIC 检查。

    下面是我对芯片配置和操作的描述:

    初始化上电复位:        0x80  0x06           

    写入/配置寄存器0:  0x80  0x40  0x36    寄存器0x36配置为 AIN1 AIN0作为输入和增益32

    读取寄存器0:              0x80  0x20  0x81    读取寄存器0以验证是否成功写入 AD 芯片

    写入/配置寄存器1:  0x80  0x44  0xA0    寄存器值0xA0 配置为单次转换模式数据转换速度为600SPS

    读取寄存器1:              0x80  0x24  0x81    读取寄存器1以验证写入是否成功

    写入/配置寄存器2:  0x80  0x48  0x25    寄存器值配置为0x25启用 CRC16检查、激励电流500uA

    读取寄存器2:              0x80  0x28  0x81    读取寄存器2以验证写入是否成功

    写入/配置寄存器3:  0x80  0x4C  0xA0    寄存器值0xA0启用连接到 REFP&IDAC2的 IDAC1禁用

    读取寄存器3:              0x80  0x2C  0x81    读取寄存器3以验证写入是否成功

    启动/同步:                0x80  0x08          开始数据转换

    再次读取寄存器2:          0x80   0x28  0x81    读取位7标志位寄存器为 A0转换完成

    读取转换数据:         0x80   0x10  0x81    读取转换数据

    断电:                 0x80   0x02          进入断电模式

    再次读取数据时,

    启动/同步:               0x80  0x08          开始数据转换

    再次读取寄存器2:         0x80   0x28  0x81     读取位7标志位寄存器为 A0转换完成

    读取转换数据:         0x80   0x10  0x81     读取转换数据

    此配置在 POWERDOWN 命令之后禁用 Rese 命令。 再次读取数据时直接发送 START/SYNC。

    目前仍有两个问题:

    当使用读取寄存器2操作来确定转换(DRDY)是否完成时、需要读取三个连续字节、ADC 转换结果为正确的值、例如:0x00 0x2F 0xC8 82。 如果寄存器2只读一个字节、则 ADC 转换结果是错误的。

         2.当第一个上电 REST 命令启动时、采样开始、读取寄存器2的值为0x95而不是0xA5。
        但是当第二次和第三次… 第 n 个读取数据操作、然后读取数据、读取寄存器的值为0xA5。 数据被验证为正确的数据值、也可以通过检查。

    祝你一切顺利

    毛信  

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

    您好、Mao xin、

    我注意到、对于寄存器0、您写入0x36、但您的注释显示增益为32。  您实际上是将 ADS112C04设置为8增益而不是32增益、即0x3A。

    关于(1)、当您启用 CRC 时、寄存器输出和转换数据输出都将被 CRC 的2个字节附加。  ADS112C04数据表第31页的第8.3.13节对此进行了讨论。  因此、一旦启用 CRC、您应该在读取寄存器内容时读取3个字节。

    对于(2)、寄存器2的默认值为0x00。  您稍后将0x25写入寄存器2并读回它。  您看到返回的值是多少?  将 CRC 设置为启用后、您应该读回3个字节(寄存器字节和2个 CRC 字节)。  如果在 START/SYNC 命令之前读回寄存器、则位7应为低电平。  您还应确保在 I2C 通信期间发送 START、REPEATED START 和 STOP。

    如果满足所需的时间、您应该能够完成部分读取。  所有通信从 START 条件开始。  在寻址 WREG 命令 和 RREG 命令之间、微控制器可能会重复启动。  所有通信都应以停止条件结束、该停止条件向 ADS112C04发出通信已结束的信号。  对于 START 条件之后的保持时间以及针对重复 START 和 STOP 条件的设置时间、有多种时序要求。  也是 I2C 总线在停止条件和下一个启动条件之间必须空闲的最短时间。  ADS112C04数据表第8页的第6.6节给出了这些时间。

    此致、

    Bob B

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

    您好 Bob
              感谢您提醒我的错别字使收益出错。 目前,根据你的建议,我们会根据不同的验证方法,每次读取状态寄存器时,读取几个字节,以确保移位寄存器中没有剩余的数据,以便我在收集数据时可以获得完整的数据和学校。 测试值。
    但这给我们带来了一个新问题:当芯片直接从断电直接通过 START/SYNC 命令收集的数据时、收集到的值将与在正常模式下直接收集的数据存在一定的误差。 也就是说、在相同的外部条件下、每次采样后对断电和非断电进行采样时、采样值是不同的。
    以下三组数据是每次睡眠后由 START/SYNC 命令连续三次采样的数据:

    第一个采样值   第二个采样值   第三个采样值     第4个采样值

       0x37                     0xC6                 0xC6                 0XC7   …

    以下三组数据是在每次采样一段时间后由 START/SYNC 命令直接采样的数据:

    第一个采样值   第二个采样值   第三个采样值     第4个采样值

       0XC6                     0XC7                0XC5                 0XC6   …………………

    我们可以看到每组数据的第一个数据、即从断电模式直接发送转换命令后采样的值、有很大的差异、每次采样将确定寄存器2的位7、因此我现在要确认该值。 原因。

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

    您好、Mao xin、

    我并不完全清楚你想告诉我什么,但这似乎是一个时间问题。  您能否提供完整的16位输出数据而不是8位、因为我不知道这是 MSB 还是 LSB?  此外、您的输入是什么?  您正在进行差分连接、因此需要确保输入处于 ADS112C04的输入范围内。  如果输入电压浮动、则电压可能会浮动至超出 PGA 输入共模范围的值。

    如果我理解正确、如果您等待预定的时间、您将获得正确的数据、但如果您使用位7来确定转换是否完成、则第一个值是不正确的。  如果您使用 IDAC 激励传感器、并且测量该传感器(例如电阻器、RTD、热敏电阻等)、则在从断电状态转换到通电状态时还必须考虑任何启动时间或模拟稳定时间。  断电后、包括 IDAC 在内的所有模拟器件均会断电。  断电后发出 START/SYNC 命令时、必须考虑任何启动时间和模拟稳定。  如果您的测量是比例式的、其中用于建立基准的激励电流与用于激励传感器的 IDAC 相同、则任何额外电容都会增加总稳定时间。  第一次测量可能需要额外的稳定时间来为通道内的任何电容器充电、但在测量周期之间电容器不会耗尽。

    要对您的设置进行全面的故障排除、我需要更多有关每种情况下所遵循的实际流程的详细信息。  您可以尝试通过发送 START/SYNC 命令来增加一些额外的延迟、然后在一段时间后(例如、500us 可实现模拟稳定)再次发送 START/SYNC 命令以重新启动转换。

    此致、

    Bob B

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

    谢谢 Bob
             很抱歉我的答复迟到了。 在 START / SYNC 命令之后添加1ms 延迟时间、然后使用 START / SYNC 命令再次收集数据。 目前,所遇到的两个问题已经成功解决。 非常感谢您今天的回答、我很高兴能获得您的帮助。

    此致、

    Linmaoxin