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.

[参考译文] TM4C1294KCPDT:CADC 放电

Guru**** 2563960 points
Other Parts Discussed in Thread: LM3S8971, EK-TM4C1294XL, TIDA-00909

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/772017/tm4c1294kcpdt-cadc-discharge

器件型号:TM4C1294KCPDT
主题中讨论的其他器件:LM3S8971EK-TM4C1294XLTIDA-00909

  3个特定 AINx 通道的 ADC 转换器周期花费了不合理的400us、 CADC 在采样之间放电需要这一时间。 CADC 充电 电压不愿意低于 某些任意阈值、但 ANIx 输入 电平 会大大低于 1/4 VREFP 振幅<80mV。  因此 、触发 转换之间的400us 允许 CADC 不情愿地放电回最初确定的任意阈值、尽管不正确。 OPAMP 输出会考虑在9.6us 内稳定至最终值的0.5%、因此 ADC 会在这些转换中混乱。

 运算放大器将 4.87k 串联电阻耦合到单端 AINx 输入中。  运算放大器向 每个 AINx 输入提供小于1nf 的负载。  在 推挽周期期间、OPAMP 应该能够轻松地对 CADC 放电、但却没有放电。     什么情况下 CADC 仍然被充电至任意阈值、而 FIFO 在采样停止后返回0V 结果?  仅  在通过 GPTM 单次触发间隔400us 触发期间、才会发生3 AINx 的转换中断。  在  AINx 电压 变化后、CADC 在低于 1/4 VREFP 时似乎有足够的时间放电。 应用甚至在每个最小值/最大值评估后每个中断周期强制采样变量为0x0。  正在 对变量和 FIFO 值进行排空、并针对流速不足/过流情况进行测试。  应用程序处理 FIFO 结果 不 是 问题 、因为硬件 由于 某种原因在 CADC 周围出现错误行为。  

 为什么 CADC 需要这么多的放电时间 、以及 在 ADC 配置中可以做些什么来纠正 行为?  NSH 置1 0x4或任何其他值不会影响任意 CADC 阈值的降低、在 这种情况下、很明显、FIFO 值悬空时高于 AINx 输入电压。

示波器捕获表明 CADC 充电时间仅 超过400us 稳定时间:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否将预期的 ADC 结果与原始电压或1nF 电容器上的电压进行了比较? 4.87K 和1nF 的时间常数为5uS。 ADC 引脚本身的时间常数为25nS (2.5k Ω 至10pF)。 当 ADC 时钟为32MHz 且采样时间为4周期时、应使您处于1%以内。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:

    我想说上面的1/4 VREFP 并将进行编辑。 OPAMP 输出表示<1nf 负载、无持续振铃、无其他外部电容可保持 CADC 充电。

    经过更多调查、发现低于1/4 VREFP 或4096/326 (18.123mV)的样本具有极高的噪声、即使在4/3低通滤波之后也是如此。
    从40mV/1A 输入到3 AINx 的4mV/100mA 精度。 奇怪的是、仅需不到6x80us 的 PWM 周期(480us)即可在最后一个 PWM 周期获得结果<>1/4 VREFP、100mA 高达1A、1A 高达>20A。 与 Stellaris 10位 ADC 使用的基本软件相同、在 AINx 输入或运算放大器输出上无需添加电容器即可转换<40us 的 PWM 周期。

    即使在软件更新和12位精密 ADC 之后、它也无法通过4/3 LPF 产生低于1/4 VREFP 的类似结果。 非常奇怪的 TM4C1294 ADC 需要比 LM3S8971多10倍的稳定时间。 在某些情况下、对于与通过50MHz SYSCLK 采样的 Stellaris LM3S 非常相同的 PWM 频率、40us 典型转换趋稳已成为400us。 每帧有六个80us PWM 周期、只能以任何精度对最后80us 周期(@400us)进行采样。 这使得 CADC 在其他5个 PWM 周期内似乎没有放电。 这是我第一次想到为什么通过 WA 几乎不可能实现小于18mV 1/4 VREP 的精度。

    Stellaris 10位 SAR 如何比12位 SAR 要求(400us)更短的建立时间(40us)? 也许什么情况下 不能正确计时 ADC0 32MHz 和 PWM 模块 SYSCLK/2或60MHz????????? ADC0与 PWM0时钟源的相位差似乎不是原来的10倍。 除了 CADC、我们还能解释为什么我们只能对最后一个 PWM 周期@400us 采样 、而不能对其他周期进行任何精度采样???? 什么计时会导致来自 PWM 模块时钟源的 ADC0触发器的10倍相移、并使 CADC 看起来没有放电?

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

    我在 EK-TM4C1294XL Launchpad 上执行了一个简单的应用、该应用可转换两个通道。 该 ADC 在16MHz 时脱离 PIOSC 运行、使用标准的4周期采样时间、无需使用硬件取平均值。 第一个通道为3.3V、第二个通道为接地。 采样时间为250nS、采样电容器在该时间内从3.3V 放电至小于1mV、如印刷输出结果所示。 您看到的问题不是固有的芯片问题。

    /cfs-file/__key/communityserver-discussions-components-files/908/2768.ADCtwoChannel.zip

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

    尊敬的 Bob:

    重点是向 AINx 中添加一个 OPAMP 1nf 负载、同时伴随80us 周期性脉冲、使 CADC 在最初充电后保持>40mV。 奇数部分是初始充电斜率 CADC (0-40mV)非常精确、但在保持阶跃达到>40mV 后、放电斜率(40-0mV)永远不会出现。 当 PWM0在 AHB 上激活并且所有其他 AINx 保持相当精确时、会产生线性 MCU 温度、直流电压、PCB 温度等 仅假定 PWM0确实与 ADC0时钟源同步、因为它们都与 AHB 仲裁时序相关。

    LM3S8971 400MHz PLL 在 PWM0和 ADC0之间保持50MHz SYSCLK/AHB 时序完全同步。 没有人会知道 TM4C PLL 是否倾斜、直到他们确认可以在两个外设之间保持闭环。

    产生小于2.5us 稳定时间的正确采样值的唯一时间是 PWM0输入信号进入 AINx 的初始斜坡(0-40mV)期间。 否则、每个80us 样本在5个 PMW 周期(400us)内变为非法。 如果通过 PWM0触发序列发生器、则样本永远不会稳定至/且3个 AINx 中的任何一个上存在实际模拟电压。 时序对于根据 PWM0和 ADC0之间闭环中的中断处理来生成正确的值至关重要。 如果 PWM0与 ADC 时钟或 AHB 仲裁不完全同步、它可能会解释400us 的趋稳时间是否不同步?

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

     LM3S8971数据表 ADC0时钟配置自动1MSPS 采样时钟分频器(16.667mHz)、而不是 16MHz 或30Mhz。 因此 、当     SYSCLK 被2分频时、Tivaware ADCClockConfigSet()为(1-2MSPS)创建可能与 PWM0发生器模块(ADC0触发源)时序不同步的偶数采样时钟。

    TM4C1294 SYSCLK 120MHz PWM0 时钟 @60MHz 和 ADC0-120MHz (1630mHz 序列发生器样本) 在 PWM0激活后的间隔大于400us。  当 PWM0在 AHB 上激活时、似乎 CADC 保持充电>40mV 从不采样 PWM0生成的波形<40mV、而 CADC 充电>40mV。 采样永远不 会与  PWM 生成的波形中的波谷对齐 ADC0尝试通过 GPTM 或 PWM 触发源进行监控。  相反、ADC0从  AINx  通道上存在的触发源(GPTM)监控的模拟信号中采样>40mV。 PWM0触发源一旦达到40mV、就永远不会采样>40mV、因此两个触发源都不会产生正确的读数、CADC 的趋稳时间小于400us。

    12.2.2模块控制:在采样序列发生器之外、控制逻辑的其余部分负责执行以下任务:

    ■中断生成■序列优先级■触发配置

    大多数 ADC 控制逻辑以14-18MHz 的 ADC 时钟速率运行。 当选择系统 XTAL 时、内部 ADC 分频器由硬件自动配置。 自动时钟分频器配置针对所有 StellarisRegistered器件的16.667 MHz 运行。

      LM3S8971 RCC REG8中缺少 TM4C1294 PWM0模块(PWMCC REG89)位域文本以下说明:

    PWM 单元时钟分频值(PWMDIV)

    该域指定了二进制分频值、该分频值用于对系统时钟进行预分频、以用作 PWM 模块的时序参考。 该时钟仅为2分频供电、上升沿同步、而不会与系统时钟相移。

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    BP101、
    您已切换了我的主题。 我们是否可以同意问题不是采样电容器稳定至新电压的固有时间? 如果是这样、我想拆分这个线程、并在一个单独的线程中提出有关将 ADC 与 PWM 输出同步的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:

    这个问题超出了我的专业知识范围、只能从表面看一下可能发生的情况。 为什么需要将 GPTM4 >400us 配置为沿 OPAMP 输出峰值>40mV AINx 输入进行采样? 这似乎在 LM3S8971 @1MSPS 下运行良好、但不能通过 TM4C1294 SAR ADC @1或2MSPS 运行。 TM4C1294时钟与 LM3S8971有何不同以影响 CADC 电荷共享?

    我们应该能够从 PWM 80us 周期的中心触发并产生非常精确的采样结果。 即使通过 GPTM OneShot Set <400us 间隔、触发序列发生器样本也不会产生正确的 FIFO 值。 在  ADC 配置中、似乎会影响 CADC 电荷与基本 OPAMP 开环增益的共享。

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

    我的观点很明显地不同、这个线程的最终目的是量化差异、Stellaris 10位 ADC 与 TM4C1294 12位 ADC 的差异。 ADC 设计的差异似乎限制了通过序列发生器的 PWM0触发源共享 CADC 电荷、这可能是由于添加了 NSH 编码。 反向跟踪是唯一一种让人质疑的方法、即什么会影响 CADC 为40us PWM 脉冲中心充电。

    业界的其他工程师使用具有精确采样架构的 M4F ADC、PWM0触发 PWM 序列发生器中心对 OPAMP 信号进行采样、并且不报告同一问题。 针对新帖子的问题移至通过序列发生器的 TAOTE 控制对 PWM0时序进行采样的信号识别、这似乎是一种可能的 WA。 或者、可以对 ADC 配置执行哪些操作来禁用 NSH 保持时间、以确定当 PWM0与占空比周期中心同步触发序列发生器时、为什么或什么可能导致 CADC 拒绝放电<40mV 或>40mV。 如果伟大的检测工作发现了问题、TI 维护 ADC 器件的修订版可能会有危险、对吧?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 BP101:
    是的、我们的观点有所不同。 您确信 TM4C1294器件存在问题、因为您的硬件和软件无法获得预期的结果。 我已尝试通过为您提供一个可在 Launchpad 上轻松运行的示例项目来开启您的想法、该示例项目演示了 ADC 可在250nS 采样时间内完全充电或放电。 我无法为您调试代码或硬件。 我们在发布此器件之前进行的器件验证、我自己的测试以及成千上万声称 TM4C1294的 ADC 采样时序有问题的客户中唯一的一位都支持我的当前观点。 您声称我们的器件无法正常工作。 我对索赔进行了调查、发现索赔不正确、然后向您提供了证明您索赔的测试案例。 进一步讨论 TM4C1294为采样电容器充电的固有能力没有意义。

    别让我弄错了。 我知道您遇到了系统问题。 我建议您评估:
    源阻抗
    引脚上的实际电压
    ADC 采样的实际时序。 (如果系统中使用了任何其他中断、则使用中断触发通用计时器会使您受到中断延迟的影响。)

    如果系统的一部分无法正常工作、请将其简化。 创建一个只执行该功能的新项目。 与尝试同时调试整个系统相比、将小型工作部件组合在一起会更加成功。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:

    您确实需要为项目添加一些 PWM 触发、因为它错过了 CADC 在与序列发生器的中心 PWM 触发一起通用时不能正常工作的点。 我怀疑在 中断事件期间读取采样后、如果 FIFO 正常耗尽、则从未评估过 CADC 充电。 LM3S8971同样不受影响、因为它在 FIFO 消耗期间没有 NSH 编码限制。 看似反向的电流从 FIFO 寄存器流入 CADC、保持其充电至 PWM 80us 周期的特定 RC 时间常数。  相对较慢的周期 CADC 在很大程度上受 FIFO 事件处理的 RC 时间常数的影响。

    一个适当的代码示例必须在每个中断事件期间和读取之后耗尽 FIFO、否则结果数据可能会在没有通知的情况下流入/流出、直到测试代码最终使序列发生器发生故障。 显然、Tivaware 未遵循正确的 FIFO 读取或标志事件处理、并导致多位工程师对硬件进行错误假设、而没有任何问题。  当读取(POP)寄存器值后 FIFO 结果被清零时、在 CADC 充电事件期间、看似 NSH 保持值也可能导致 FIFO 值较低。 MCU 系列之间的主要区别似乎是添加了 NSH、这是 TM4C1294不可操作性的罪魁祸首。 如果在将样本读取到 C++数组后 FIFO 未被清空、TPTR/HPTR 寄存器将变为无效、除了 CADC 的 RC 时间常数在该过程中受到严重影响。

    [引用 user="Bob Crosby">如果系统的一部分无法正常工作,请简化该过程。 创建一个只执行该功能的新项目。 与尝试一次调试整个系统相比、将小型工作部件组合在一起会更加成功。

    简化的 WA 通过 OneShot 计时器(TAOTE)触发序列发生   器解决 CADC 时序问题、其速度比中心 PWM 事件慢40倍。 这 种触发方法 允许 在采样采集之间进行400us 的采样 、从而为 CADC  提供用于充电/放电 时间 的巨大窗口纠正 FIFO 结果清除方面的 ADC 行为不当。 数据表未披露 FIFO 读取(POP)如何影响 CADC 时间常数/充电级别 、我怀疑没有人知道这 一奇怪的勘误表。 我的看法是、读取 FIFO 不应以任何方式影响 CADC、但 它对 PWM0高速触发的影响却非常糟糕。  

    [引用 user="Bob Crosby"]3. ADC 采样的实际时序。 (如果系统中使用了任何其他中断、则使用中断触发通用计时器会使您受到中断延迟的影响。)

    那么 、TAOTE 计时 器方法为什么比 触发 PWM 周期中心更有效、这会影响基于 CADC 采集步骤的 FIFO 结果数据?

    不要误会我只想识别 此 故障、以便 TI 生产 出经过校正的未来 ADC 模块、在该模块中快速读取 FIFO 结果数据不会像现在那样直接影响 CADC 充电事件。  根据源自   PWM0高速触发的 FIFO 读取结果时间帧的 RC 时间常数、CADC 采集步骤似乎处于奇数保持状态。

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

    [引用 user="BP101"]看似反向的电流从 FIFO 寄存器流入 CADC,使其保持在 PWM 80us 周期的特定 RC 时间常数中。

    不可以、这是不可能的。 ADC 是在3V 逻辑中完成的模拟宏、FIFO 是1.2V 域中的所有数字宏。 从芯片设计的角度来看、您的结论毫无意义。

    同样、我建议您不要查看芯片内部的问题。 如果器件中存在这样一个根本问题、其他人也会看到它。 验证您在引脚上的电压以及您是否在正确的时间进行采样。 检查中断例程中的 FIFO 溢出。

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

    尊敬的 Bob:

    [引用 user="Bob Crosby">否、这是不可能的。 ADC 是在3V 逻辑中完成的模拟宏、FIFO 是1.2V 域中的所有数字宏。 从芯片设计的角度来看、您的结论毫无意义[/quot]

    好的、CADC 根本不是  80us 周期的电荷共享中心。 采样的 CADC 值保持非常低 的 FIFO 读取结果。 然而、如果在样本之间给出400µs μ s 的触发转换、则 CADC 似乎共享电荷并采集 >40mV 的信号、但绝不 会再次放电 <40mV。  因此、可以对信号进行边界采样、但不能 以 PWM0触发速度进行采样。 当我们尝试对 信号进行采样 20x 增益 时,CADC 拒绝对>50-80mV 的信号进行低于400us 的电荷共享,有些信号在该范围内。 只要模拟信号振幅 从未超过80mV、CADC 电荷共享周期 就会 在 PWM0触发速度下通过同一个软件发生。  

    相同的 OPAMP 通过 Piccolo ADC TIDA-00909正常工作、我们需要知道 TM4C 数据表中可能没有披露如何使其正常工作?  客户是否 必须降低或改变 放大器增益才能使 TM4C ADC 在 PWM0 触发速度下正确地进行电荷共享?    

    [引用 user="Bob Crosby">同样、我建议您不要查看芯片内部的问题。 如果器件中存在这样一个根本问题、其他人也会看到它。 [/报价]

    似乎 代表您假设其他人将相同的 TI 放大器与 TM4C1294搭配使用、 但从未遇到过此问题。   

    这些样本 与 FIFO 结果的读数一致、 并通过 GPTM 输出引脚进行验证。 然而 、一旦20倍增益信号变为> 80mV 左右、一旦 CADC 被充电至或超过该价差水平、FIFO 值永远不会稳定<400us 或下降至40mV 以下。

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

    以下示波器捕获表示通过400us OneShot GPTM 进行的样本、而不是通过 PWM0高速触发。 两个样本@400us 是 所有 ADC 都可以通过 CADC 电荷共享为 重新布置在线程顶部的 OPAMP 信号解析。  PWM0 CH1需要 大约 8个80us 的周期才能使 CADC 稳定至1/2 LSB。  我们是否应该能够 通过 PWM0触发序列发生器来对20倍增益模拟信号进行采样?  似乎 存在一个限制   、即 TM4C 无法在 PWM0 40US 触发速度超过特定增益的情况下对信号进行采样(周期性)、并将信号正确采集到1/2 LSB。     这种对放大器增益的限制允许 误差%增加到超出 SW 的数学可预测性、从而正确确定 为降低上述增益而进行的任何硬件更改。  对于为什么以两种不同的方式中断 PWM0高速触发序列发生器样本、存在矛盾之处。  

    Piccolo ADC TIDA-00909与之有何不同 、因为它 能够以   相同的20x 放大器增益正确采集10-25us 周期性信号? 正弦 属性是否可以解释 CADC 电荷共享在20x 增益中的行为?

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

    尊敬的 Bob:

    有趣的是、在本例中、奈奎斯特速率或采样转换速率400us (2500Hz)比 PWM 频率(12.5KHz)或25KHz 奈奎斯特速率的一半慢10倍。 OPAMP 带宽为400kHz、ADC 采样率为2MSPS、通过32MHz ADC 时钟实现。

    PWM 时钟似乎与 ADC 时钟不同步10倍、触发精密 转换失败@40us (25KHz)。  因此、PWM 中心触发的转换会在 奈奎斯特速率采样分量的两倍(25KHz)上引起混叠。 在高速转换中、样本似乎关闭了几百个电度。 问题是 、为了    实现 精密 信号采集、需要将奈奎斯特采样率大幅降低至25KHz 以下?

    我不知道 PWM 时钟速率(60MHz)与 奈奎斯特采样率中的 ADC 转换时钟速率(32MHz)的关系。  为什么      正确的奈奎斯特速率无法准确采集由 PWM0创建并由 ADC0时钟源转换的信号 CH1?  很明显、如果您的测试示例证明 ADC 可以采样1mV、那么在     PWM 触发器的25KHz 转换中、CADC 保持大于40mV 和<80mV 的充电状态是不正确的。  我们需要基本外设时钟 图 才能解决此问题。  TI 未在数据表中提供必要的信息来完成 现场任务。  配置 ADC0时、PWM0 60MHz 不会产生影响、 ADC0时钟16MHz (1MSPS)仅注意到采样幅度的微小差异。

    "通话"选项卡顶部段落添加了有关 Wikipedia 主题的另一个工程师视图。

    https://en.wikipedia.org/wiki/Nyquist_frequency