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.

[参考译文] AM263P4-Q1:AM263Px ADC SOC 示例:恒定 ADC 输出

Guru**** 2901230 points

Other Parts Discussed in Thread: TCA6424A, TCA6424

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1632427/am263p4-q1-am263px-adc-soc-example-constant-adc-output

器件型号: AM263P4-Q1
主题中讨论的其他器件: TCA6424ATCA6424

尊敬的团队:

我正在使用 AM263Px MCU+ SDK v11.01.00 在 AM263Px‑CC 上开发 ADC 模块并测试 ADC SOC 软件示例。

在运行 ADC 测试示例时、可以观察到、即使将施加到 ADC0_AIN2 (HSEC 引脚 15) 的输入电压从 0V 改变为 3.2V、ADC 输出也保持恒定。

image.png

尽管输入电压会发生变化、但 ADC 结果不会相应地变化。

问题:

  1. 是否建议使用正确测试 ADC 的方法来获得 0 到 4095 范围内的可变数字计数?
  2. 对于此示例、我是否应验证任何特定配置(SOC,基准电压,引脚多路复用等)?
  3. 该示例是否使用任何覆盖外部引脚输入的内部连接或测试信号?

任何有关如何正确验证 AM263Px 上的 ADC 功能的指导都会不胜感激。

提前感谢。

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

    你好、Shilpa、

    我正在为您调查这个问题、并将在本周结束前提供答复。

    此致、

    Zackary Fleenor

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

    尊敬的 Fleenor:  

    感谢您的回复并等待解决方案。

    此致、

    Shilpa.

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

    你好、Shilpa、

    对假日周末的延迟回复表示歉意。

    您能否验证 SW7 是否设置为引脚 1 以使用板载基准?

    https://www.ti.com/lit/ug/spruj86d/spruj86d.pdf#page=44

    此致、

    Zackary Fleenor

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

    是的、Fleenor。 我事先验证了开关设置。

    电路板开关:
    对于 ADC 示例和基准配置、我将 SW9.1 设置为引脚 1-2、将 SW9.2 设置为引脚 4-5。

    参考来源:
    我‑SW7 将 ON μ C 板设置为位置引脚 1–2 来选择板载 1.8V 基准 (REF3318)。

    您能再次进行检查、告诉我当输入电压从 0V 变为 1.8V 时、为什么要读取恒定的 ADC 计数 ?

    还有一点我想问:我们可以将 ADC 输入电压从 0V 馈送到 3.2V 、还是将其限制为 0V 到 1.8V 、因为 AM263Px 的 Vref 是 1.8V?

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

    你好、Shilpa、

    AM263x/263Px/261x 系列器件中的 ADC 会在内部降低输入电压、以便进行正确评估、与稳定的 1.8V 基准电压相比。 这意味着要从 0-4095 扫描、在满量程条件下、输入电压应从 0.0V - 3.2V 扫描。

    我可以在我这边得到一个相同的设置来评估示例、并在本周结束时告知您我的发现。

    只是想确认您没有对原始示例进行任何更改?

    此致、

    Zackary Fleenor

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

    你好、Shilpa、

    我已经能够在自己一侧运行 ADC 示例、并看到随着输入电压的变化、输出的预期变化。 这表明该示例本身按设计运行。

    为了帮助我了解您无法获得相同结果的原因、我想更详细地了解您的设置。 您是否愿意分步介绍您的设置、首先是为电路板加电、然后再介绍连接和开关设置?

    具体而言、我们来了解下:

    *如何将输入电压源连接到 ADC0_AIN2。
    *开关 SW7 和 SW9.1/9.2 的确切位置。
    *您如何测量输入电压。

    我相信我们可以做到这一点。

    此致、

    Zackary Fleenor

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

    尊敬的 Fleenor:

    感谢您的回答。

    [报价 userid=“679480“ url=“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1632427/am263p4-q1-am263px-adc-user-example-constant-adc-output“] V 至 3.2V 应用于 ADC0_AIN2 (soc 引脚 15)。

    该引脚为 ADC0_AIN0 和 ADC0_AIN1、而不是 ADC0_AIN2。 抱歉、通信错误、我们能够从 ADC0_AIN2 获得结果。

    对于您的查询:

    *如何将输入电压源连接到 ADC0_AIN0/1/2 — 通过跳线连接的不同直流电源
    *开关 SW7 和 SW9.1/9.2 的确切位置 — SW7:1-2 和 SW9.1:1-2 和 SW9.2:4-5
    *测量输入电压的方式 — 从结果寄存器读取 (
    ADC_RESULT_BASE   0x50100000U)

    此外、我检查了原理图、需要启用 ADC0_AIN0、ADC0_AIN1 引脚的 IO 扩展器以拉高。  我是否需要根据原理图配置 IO 扩展器?

    正在等待您的回答。

    此致、
    Shilpa.  

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

    你好、Shilpa、

    再次感谢您的快速和详细答复、并对最初有关 PIN 码的混淆表示歉意! 您已经确认现在使用的是 ADC0_AIN0/1/2、太棒了。

    我们使用 AM263Px 控制卡上的 TCA6424A I/O 扩展器。

    了解 I/O 扩展器和正确的方法

    AM263Px 控制卡使用 TCA6424A I/O 扩展器来管理额外的 GPIO 引脚、包括用于 ADC 输入的引脚。 ADC 输入 (ADC0_AIN0 和 ADC0_AIN1、以及可能的 ADC0_AIN2) 要求将这些引脚配置为输入以实现正常功能。

    配置 I/O 扩展器的最佳方法是使用 MCU+ SDK 中提供的 TCA6424 驱动程序。 此驱动程序为您处理所有低级寄存器写入、并避免潜在错误。

    以下是您应如何继续:

    1. 验证 SDK 版本: 请确保您使用的是 MCU+ SDK 10.00.01 或更高版本。 该版本包括对 TCA6424A 和必要 API 的支持。

    2. 使用 TCA6424 驱动程序: 避免手动写入 I2C 寄存器。 请使用 TCA6424 SDK 中的驱动程序模块。

    3. 配置为输入: 使用该 TCA6424_MODE_INPUT 设置将连接到 ADC0_AIN0 和 ADC0_AIN1 的引脚配置为输入。

    4. 识别 GPIO 索引:一点至关重要。 我需要确认对应于 ADC0_AIN0 和 ADC0_AIN1 的确切 TCA6424A GPIO 索引。 SDK 中的解析器示例演示了如何配置此参数、但具体映射可能会有所不同。

    5. 上拉电阻器: TCA6424A 数据表(和 SDK 驱动程序)介绍了如何配置上拉电阻器。 仔细检查电路板原理图、以确定是否存在外部上拉电阻器、或它们是否是驱动器配置的一部分。

    代码示例(说明性 — 使用 SDK):

    // Assuming you have the TCA6424 driver initialized
    // And have identified the correct GPIO index for ADC0_AIN0/1
    
    // Example for ADC0_AIN0 (replace with correct index)
    TCA6424_setConfig(GPIO_INDEX_FOR_AIN0, TCA6424_MODE_INPUT);
    
    // Example for ADC0_AIN1 (replace with correct index)
    TCA6424_setConfig(GPIO_INDEX_FOR_AIN1, TCA6424_MODE_INPUT);

    通过使用 SDK 的 TCA6424 驱动程序、参考旋转变压器示例并在原理图中验证 GPIO 引脚映射、您将能够获得准确的 ADC 读数。

    如果您在找到原理图时需要帮助、或者在将 TCA6424 驱动程序集成到代码中时遇到任何问题、请告诉我。 我很高兴为您演示。


    资源:

    此致、

    Zackary Fleenor

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

    尊敬的 Fleenor:

    感谢您的详细答复。  根据下图、只需选择 I2C 配置 I2C0、但  存在 I2C 实例 I2C2(值由 CONFIG_IOEXP0 锁定)。 因此、需要在此处更改配置中的任何内容、否则它将按原样工作??

    为了确认、我检查了上述更改、但我无法看到任何结果、可能会出现硬故障。 请告诉我启用 ADC0_AIN0/1 引脚的正确过程。

    此致、

    Shilpa.

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

    你好、Shilpa、

    感谢您的更新、感谢您继续与我一起完成此工作。 非常高兴您已开始进一步研究 I2C 配置。

    关于 I2C 实例 (I2C0 与 I2C2):

    你已经达到了一个非常重要的点! 您注意到预期的 I2C0 和锁定 I2C2 配置之间的差异是正确的。 Δ V CONFIG_IOEXP0``可能会强制对 AM263Px 控制卡上的 TCA6424A 使用 I2C2。 _请勿更改此设置。_即使文档最初指向 I2C0、也需要将代码配置为使用 I2C2。 这是电路板特定的 quirk。

    排除硬故障:

    硬故障强烈建议某个位置出现配置问题。 让我们重点确认 TCA6424A 是否正确初始化(使用 I2C2 *在*尝试读取 ADC 值之前*)。 以下是一种完善的故障排除方法:

    1. 仔细检查 I2C2 配置:确保您的项目已正确配置为使用 I2C2。 这包括:
      1. 验证在工程的器件树(或等效配置方法)中是否启用了 I2C2。
      2. 确认设置了正确的时钟速度和其他 I2C2 参数。
    2. 最小 TCA6424A 初始化代码:**对于测试、从一个*非常*的基本代码开始、该代码仅专注于初始化 TCA6424A。 尚未读取 ADC。 目标是确认可以与芯片进行通信。 下面是一个简单的概述:
      1. 初始化 I2C2。
      2. 初始化 TCA6424A 驱动器、指定正确的 I2C 实例 (I2C2) 和正确的 I2C 地址(0x20 很常见,但仔细检查原理图)。
      3. 尝试将测试值写入单个 TCA6424A 输出引脚(使用万用表轻松验证)。 如果有效、则通信良好。
    3. 引脚配置:我们来重新审视引脚配置。 建议使用驱动器时、必须确认 TCA6424A 是否正确配置:
      1. GPIO 索引:这是关键。 请参阅 AM263Px 控制卡原理图(如果需要,我可以帮助您在线找到它)、以*精确地*确定与 ADC0_AIN0 和 ADC0_AIN1 相对应的 TCA6424A GPIO 索引。 可能它们不是按顺序排列的。
      2. ``:获得正确的 GPIO 索引后、请使用 Δ V TCA6424_mode_input 将这些引脚配置为输入。
      3. 上拉电阻器:确认 I/O 扩展器已启用上拉电阻器(检查 SDK 驱动程序内的配置)。
    4. 调试:如果您仍然遇到硬故障:
      1. 断点:**在初始化 TCA6424A 驱动程序后*立即*设置断点。 逐行执行代码、查看在初始化过程中是否触发了任何错误。
      2. I2C 分析器:**使用 I2C 分析器(软件或硬件)来监控 I2C 总线、并验证您的代码是否正在发送正确的命令并接收来自 TCA6424A 的确认。

    关于查找有用资源:

    以下是在旋转变压器诊断示例中使用 TCA6424 驱动器的有用链接: https://www.ti.com/lit/ug/sprui71/sprui71.pdf

    如果您想分享您现有的初始化代码片段、我很高兴查看它并提供更具体的反馈。 我知道正确处理这些细节可能会很棘手。

    此致、

    Zackary Fleenor

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

    你好、Shilpa、

    我想登记入住、因为距离我上次的答复已经有几周了。 我希望您已经取得一些进展、但我知道这些配置问题可能很棘手。

    总结一下我们中断的地方:您在尝试初始化 TCA6424A I/O 扩展器以启用 ADC0_AIN0 和 ADC0_AIN1 时遇到了硬故障。 锁定的 I2C2 实例正确,不应更改 — 这是与 CONFIG_IOEXP0 AM263Px 控制卡上的 TCA6424A 通信的预期配置[1][2]。

    为帮助推进这一目标、下面是一些具体的后续步骤:

    1.隔离硬故障: 您可以将故障地址或任何堆栈跟踪信息与硬故障共享吗? 这将有助于确定问题是在 I2C2 初始化、TCA6424A 驱动器开路还是引脚配置调用期间。 在每个阶段设置断点将快速缩小范围。

    2.参考一个工作示例: SDK 中的旋转变压器诊断示例演示了此电路板上正确的 TCA6424A 初始化模式[3]。 我建议导入该示例、确认其编译和运行没有故障、然后将其 I/O 扩展器初始化代码修改到 ADC 工程中。 这为您提供了一个已知良好的 I2C2 + TCA6424A 通信基准。

    确定正确的 GPIO 索引: 映射到 ADC0_AIN0 和 ADC0_AIN1 的特定 TCA6424A GPIO 索引必须来自电路板原理图。 如果您能分享显示 I/O 扩展器与 ADC 输入多路复用器连接的相关原理图页面、我可以帮助确定 ioIndex 要传递到 TCA6424_config() [4]的确切值。

    4.极少测试方法: 在与 ADC 代码集成之前,请尝试以下隔离顺序:

    // After Board_init() and Drivers_open():
    TCA6424_Params_init(&ioExpParams);
    // Open TCA6424 on I2C2 (CONFIG_IOEXP0)
    status = TCA6424_open(&ioExpConfig, &ioExpParams);
    // If status == SystemP_SUCCESS, communication is working
    // Then configure the ADC0_AIN0/1 pins as inputs:
    TCA6424_config(&ioExpConfig, <ADC0_AIN0_IO_INDEX>, TCA6424_MODE_INPUT);
    TCA6424_config(&ioExpConfig, <ADC0_AIN1_IO_INDEX>, TCA6424_MODE_INPUT);
    如果 TCA6424_open() 自身导致硬故障、则问题出在 I2C2 引脚配置或时钟设置中、而不是 TCA6424 驱动器逻辑中。

    请告诉我:

    • 无论您是否能够解决此问题、还是您仍然困难重重
    • 如果您可以共享硬故障详细信息或初始化代码片段
    • 您是否希望我在幻灯片的原理图中查找特定的 GPIO 索引

    我很高兴能继续与您合作。


    1. AM263Px SDK - ADC 示例(I/O 扩展器要求)
    2. AM263Px E2E — 适用于 TCA6424A 的 FSI Pinmux/I2C2
    3. AM263Px SDK — 旋转变压器角度速度示例(TCA6424A 使用)
    4. TCA6424 驱动程序 API - CONFIG 函数

    此致、

    Zackary Fleenor