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.

[参考译文] TLA2528:读取 A/D 输入

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1292289/tla2528-reading-a-d-inputs

器件型号:TLA2528

需要有关读回 TLA2528组件上的 A/D 输入的帮助。

背景:将通道0-3的器件配置为 A/D、通道4-7是 GPIO 输出。  我们正在成功地与 GPIO 输出通信(可以将输出从逻辑"0"切换到逻辑"1"并返回、但似乎无法读取 A/D 输入)。

我们将使用的初始化例程如下所示:

写入 GENERAL_CFG 寄存器0x00
写入到 DATA_CFG 寄存器0x0F
向 OSR_CFG 寄存器0x00写入
写入 SERIAL_CFG 寄存器0x00 (手动序列)
写入 PIN_CFG 寄存器0xF0 (Chs0-3 A/D 和 Chs 4-7 GPIO)
写入 GPIO_CFG 寄存器0xF0) (CHS 4-7数字输出)
写入 GPO_DRIVE_CFG 0xF0 (Chs 4-7作为开漏输出)
写入 GPO_VALUE 寄存器0xF0 (以将 GPIO 输出设置为逻辑"1")

此操作完成了初始化例程。

尝试读取 A/D 输入的过程:

写入 CHANNEL_SEL 寄存器0x02 (以选择特定通道上的 A/D 输入)
器件输出的读取数据

问题: 问题是数据不一致、不是实际 A/D 输入电压的预期值。

怀疑 我们未正确配置器件或未正确执行读取命令。  您能提供建议吗?

问题2:

在我们配置为开漏的 GPIO 输出上、通过10K 电阻器将输出上拉至+5伏、但输出只上升3.7伏。  除了10k 上拉电阻器外、我们已经移除了这些输出上的所有负载。  TLA 2528 AVDD 和 DVDD 电源线都连接到3.3V 电源、并通过靠近输入引脚的1uF 电容器旁路每个电源输入。

对此有何建议?

原理图快照:

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

    尊敬的 Ken:

    欢迎来到我们的 e2e 论坛!  您能否添加更好的原理图?  您发布的内容模糊且难以阅读。  我不一定看到您的设置/初始化序列有任何错误。  您在查看 SYSTEM_STATUS 寄存器中的 OSR_DONE 位吗?  与实际得到的回报相比、您是否有关于预期转换结果的详细信息?

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

    尊敬的 Tom -感谢您的快速回复。  抱歉查看了原理图、但它是我目前为止吃过的最好的。

    关于问题2:我认为问题是、到 AVDD 电源的开漏输出上好像有一个二极管钳位。  在我的设计中、AVDD 和 DVDD 都连接到3.3伏电源。  我在数据表中的图48假设下、我可以将开漏输出上拉至最大5.5V、但我想只有在 AVDD 电源连接到5V 电源的情况下才能这样做。  在本例中、AVDD 连接到3.3V 电源、输出似乎被钳位到高于 AVDD 电源的0.4V。  我认为这是限制开漏输出(而不是正)的原因。

    关于问题1:是否有启动 A/D 转换所必须发送的命令?

    为了进行测试、我将3.0伏电源连接到其中一个模拟输入。  AVDD 为3.3伏、因此1 LSB 应等于805.7uV。  对于3伏输入、我认为每伏输出应该约为1241个计数、因此我预计得到的值为3 x 1241 = 3723。  移出4LSB 后、这个值大约为 E8B 十六进制。  我认为这是我应该读回的内容吗?

    我正尝试进行单输入 A/D 转换、只想看看 A/D 输入是如何工作的。

    再次感谢您的帮助

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

    尊敬的 Ken:

    对于 GPIO、电压限制为 AVDD + 300mV、因此您的钳位二极管原理是正确的。  读取单个通道的数据如图26所示、但只持续写入相同的通道 ID。  您可以抓取 I2C 通信线路的屏幕截图吗?

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

    您好、Tom -关于 A/D 读取问题、我们继续读回 FFF2 HEX 的数据。  2是通道 ID。  对于我们的输入、我们预计要读回接近 DF32的值、同样、2是通道 ID。  此外、当我们检查系统状态寄存器时、我们回读81十六进制。  我应该读回88十六进制。

    我们是否需要在上电后写入系统状态寄存器中的 BOR 位来清除此位?

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

    是的、您确实需要写入 BOR 来清除标志。

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

    您好、Tom -我发现 PCB 上缺少一个通向 A/D 输入通道2的迹线、这就是我们一直读取 FFF2的原因。  我添加了跳线来代替此迹线、它似乎现在正在读取数据、而当我们更改输入时、数据发生了变化。  您能否确认、如果 A/D 输入是悬空的、那么预期 在读取时看到 FFF?

    关于该器件的运行、我还收到了一些问题。

    1. 您能简要说明一下、当我们向 GENERAL_CFG 寄存器的位1写入"1"时校准例程会执行什么操作吗?

    2.此校准是否仅在一个通道上运行(如果是,我们如何选择哪一个通道?) 或者它是否可以同时在所有通道上工作? 当我们将该位设置为"1"并立即读回它时、它始终为"0"、表示校准已完成。

    3.当我们将相同的输入放入几个通道时,我们会得到变化高达3/4伏的输出数据。  由于我们不需要高速数据采集(每5秒读取一次 A/D、因为它们只是提供有关直流电源的反馈)、您可以建议使用 OSR_CFG 寄存器设置、可提高精度的 OPMODE_CFG 寄存器设置吗?  我认为使用平均模式会极大地改善读数?

    4. 在我们的故障排除过程中、我们通过向 DATA_CFG 寄存器写入一个90十六进制值(输出固定模式并使用通道 ID 附加数据)来处理从 A/D 通道读取测试模式的问题。  当我们读回数据时、我们注意到通道0的第一次读取给了我们正确的结果、但其他通道的下次读取似乎具有正确的数据、但通道 ID 数据不正确。  在连续通道读取之间是否需要执行某种操作来解决此问题?

    感谢你的帮助。

    肯  

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

    旧的缺失追踪技巧!  我恨何时会发生这种情况!  更好地回答您的问题:

    1. 在内部、ADC 的输入对地短路、并完成转换。  然后将得到的偏移值添加到未来转换结果中或从未来转换结果中减去。
    2. 校准在 ADC 本身上有效、因此它会影响所有通道。
    3. 在您的情况下、可能需要缓冲模拟输入。  将 OPMODE_CFG 设置为0x10并启用平均值计算也会有所帮助。
    4.  您是否获得相同的0xA5A?  我认为 CHID 不包含在测试模式中、这就是为什么 CH0 "正确"的原因。  在正常操作下运行时、CHID 是否按预期输出?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    TOM 您能否确认进行平均计算的过程如下:

    1.将 OSR_CFG 寄存器设置为平均值的样本数。

    2.通过设置 GENERAL_CFG 寄存器中的位3来启动转换

    3.通过读取 SYSTEM_STATUS 寄存器中的位3 (OSR_DONE)来检查转换是否完成

    4.读取数据(输出为16位)

    谢谢

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

    尊敬的 Ken:

    是的、正确。

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

    您好、Tom -我收到了有关此器件的相关问题。  在上电/初始化之后、我们通过设置 GENERAL_CFG 寄存器中的 CAL 位来执行 ADC 偏移校准。  将此位设置为1后、我们立即轮询该位、发现它为0、表示校准完成。  我们绝不能将此位捕获为1、表示校准正在进行中。  然后、我将其中一个模拟输入设置为接地、并在此通道读取大约162十进制的值。  我希望该值约为0 +/-几个 LSB。  当我增加输入值时、看起来读取的十进制值似乎有一个随输入电压增加的偏移。

    我们目前已启用平均滤波器、OSR_CFG 寄存器设置128个样本为平均值、认为这会对系统中的任何噪声求平均值。

    我们甚至尝试从该通道进行多次 A/D 读取、读取之间暂停1秒、但仍然会遇到此偏移。  我们在该部件的其他 A/D 通道上也看到了相同的偏移行为。

    您能提供任何建议来帮助我们解决我们遇到的这个 A/D 偏移问题吗?  我们是否无法正确执行偏移校准?  

    谢谢

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

    尊敬的 Ken:

    您能提供一个更全面的示意图吗?  您是否具有用于驱动 ADC 输入的缓冲器?

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

    ADC 输入来自 TEC 控制器。  TEC 控制器的数据表显示这些信号是输出阻抗为1K Ω 的缓冲输出。  我没有该器件内部的示意图。 我已使用 DVM 测量了 ADC 输入、当信号应该为0伏时、它在 DVM 上测量到0伏。  

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

    尊敬的 Ken:

    能否在转换器运行时使用示波器探测输入?   我很想知道/看看在对 ADC 输入采样时是否存在任何干扰。