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.

[参考译文] TMS320F2802:ADC SOC0和内部温度传感器

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/979582/tms320f2802-adc-soc0-and-internal-temperature-sensor

器件型号:TMS320F2802

您好!

[问题1]

我使用内部温度传感器来监测温度、但有时它会捕获异常值。

查看勘误表、可以看到错误"ADC:温度传感器最小采样窗口要求"导致采样周期延长。

我将 ACQPS 从6增加到了63、但情况并未改善。  

如果您有任何对策、请告诉我。

 

[问题2]

TMS320F2802x 的勘误表(sprz292)中描述的错误"ADC:初始转换"是否即使在当前市场上的器件上也存在?

谢谢、

科基

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

    您好!

    主题专家回答您的问题。 但是、我们一直在应对该地区恶劣的天气和停电、而且响应速度可能很慢。

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

    科基

    是的、此勘误表适用于当前正在生产的器件。  

    如果您仅使用 ADC 对内部温度传感器进行采样、则需要在此输入上执行虚拟采样、以避免 ADC 首次采样问题。  在这种情况下、无需缩短温度传感器采样的采样保持窗口、因为这符合针对温度传感器最小采样案例列出的其他权变措施。

    请告诉我这是否能解决您的问题、或者您仍然看到解决方法存在异常。

    最棒的

    Matthew   

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

    您好、Matthew   

    目前、我正在对红色框周围的内容进行测量、但情况并没有改善。

    您能更具体地告诉我我需要做什么吗?

     

    最棒的

    科基

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

    科基

    为了进行调试、您可以尝试解决方法#1、看看它是否可以解决您看到的问题?  #2将起作用、但 TRM 中列出的 ACQPS 的有效值也受到限制。  我想确保我们能够从#1中获得良好的结果、然后我们可以获得合适的 ACQPS 来使#2正常工作。

    最棒的

    Matthew

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

    您好、Matthew  

    > TRM 中列出的 ACQPS 的有效值也受到限制。

    我在 TRM 中找不到有关 ACQPS 限制的说明。 它在哪个页面上列出?

    我已经验证了#1。

    该器件集成到 SOC14和 SOC15中以进行双采样。 两者都可能异常。

    2我将 ACQPS 从6增加到了63、但该值没有提高。

    目前、通过连续检测基准温度超过10次来避免异常输出。

    如果您有任何对策、请告诉我。

     最棒的

    科基  

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

    科基

    您是否能够从温度传感器中发布10个仅适用于 SOC15 (弃用 SOC14)的连续值、以便我查看差异的幅度。  如果转换更简单、则可以进行所有转换 SOC0-15读取温度传感器(然后全部触发)并报告 SOC1-15。

    如果您还可以在设置 ADC 的位置附加 C 文件、我也可以查看该文件。

    您还能评论一下您在系统中尝试使用的分辨率、以摄氏度为单位吗?  即、您需要检测10度的上升/下降等

    最棒的
    Matthew

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

    Matthew

    很抱歉迟到了。

    >您是否能够仅针对 SOC15 (丢弃 SOC14)从温度传感器中发布10个连续值,

    由于异常值很少、我附加了 CCS 图形、而不是连续10个片段的转换结果。

    ■正常值

    AdcResult.ADCRESULT15 (=temp)= 1914~1921

    degC=40~42

    ■异常值

    AdcResult.ADCRESULT15 (=temp)= 4090

    degC=429

    ■温度 图

    如果检测到异常温度、操作将停止。

    因此、图像仍然是异常值、但异常值会暂时发生。

     

    ■°C 图

    >如果您还可以在设置 ADC 的位置附加 C 文件,我也可以查看该文件。  

    附加设置 ADC 的 main.c 文件。

    e2e.ti.com/.../HVLLC_2D00_Main.c

    >您是否还可以对您要在系统中使用的分辨率(以摄氏度为单位)进行注释?

    ■温度传感器的使用

    当 C2000℃120 μ s 时、执行 PWM 输出停止处理。

    ■分辨率、单位为度

    1 μ s℃分辨率。

    如果您需要任何其他信息、请告诉我。

    最棒的

    科基

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

    科基

    感谢您提供更多详细信息。  我没有想到温度传感器上的误差项是一个饱和 ADC 转换;温度传感器不应该能够向转换器提供这种输出电压(因为温度计算得出结果)。  出现问题时、转换是否始终进入电源轨/4095?  即使使用超出规格的温度传感器、这也不是我所见过的行为。

    您能评论一下引脚 ADCINA5以及它从外部连接到了什么吗?  我想排除这个引脚上的过压、在温度传感器进入 ADC 之前、它会以某种方式破坏温度传感器的电压输出。

    "temp"变量是否可能被覆盖、转换是否在正确的范围内?  一个选项是将 ADCRESULT15直接馈送到温度传感器功能、并查看问题是否消失。  我意识到、我们立即使用了"temp"、但最好查看一下。

    最棒的
    Matthew

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

    您好、Matthew

    感谢您的及时响应。

     

    >出现问题时,转换是否始终进入电源轨/4095?

    →ADC 转换结果有多种异常值。 (例如、temp = 2170)

      

    >您能评论引脚 ADCINA5以及它从外部连接到什么吗?

    →TMS320F28027没有 ADCINA 5引脚。

     

    >是否有可能覆盖"temp"变量,转换在正确的范围内?

    >一个选项是将 ADCRESULT15直接馈送到温度传感器功能,并查看问题是否消失。  

    →温度是直接使用 ADC 转换结果计算得出的。

    但是、情况是相同的、会出现异常值。

     

    谢谢、

    科基

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

    科基

    我将在内部与其他一些团队成员讨论这一点、以查看他们是否从温度传感器中看到过这种行为。  我可能需要在收到更多数据时、在下一次回复之前多花一天或两天的时间。

    最棒的

    Matthew

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

    Matthew

    谢谢、我正在等待您的回复。

    最棒的

    科基

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

    科基

    我已经查看过您附加的几个帖子的代码、您是否还可以在初始设置完成后附加所有 ADC 寄存器的屏幕截图?  在开始控制环路/采样之前、我想确切地验证 ADC 的配置方式。

    设置后、您是否还可以确认它在运行期间不会被更改、即发生的所有情况是 ADC 触发器和寄存器读取?

    最后、如果您可以了解不同的触发源及其发生频率、即 SOC1连接到 PWM SOCA、每10kHz 发生一次等

    最棒的

    Matthew

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

    您好、Matthew

    >在初始设置完成后,还会附加所有 ADC 寄存器的屏幕截图吗?

    以下是 ADC 初始化后的 ADC 寄存器设置。

     

    >您能否确认在运行时不会更改,即只会发生 ADC 触发器和寄存器读取?

    以下是 ADC 转换期间的 ADC 寄存器设置。

    ADCCTL1・・・持续变化(较低字节 E5是固定的)

    ADCINTFLG・・・0x0000

    ADCINTOVF・・・0x0080

    SOCPRICTL・・・ 持续变化(最低字节0是固定的)

    ADCSOCFLG1・・・不断变化

     

    >如果您可以了解不同的触发源及其发生频率,

    >即 SOC1连接到 PWM SOCA、每10kHz 发生一次等

    I 从软件触发更改为 PWM4 (固定为100kHz)触发。

    它运行了1小时、但没有出现异常值。

    在软件触发时、它在几分钟内发生。

    谢谢、

    科基

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

    科基

    感谢您收集这些信息、这对您有很大帮助。  我相信我知道会发生什么情况导致温度传感器读数"随机"不良。

    在您的系统(和许多控制系统)中、通常有多个采样域、这样、随着采样频率的时域彼此移动、转换顺序可能不一致。

    对于温度传感器、当它处于其 SW 触发计划中时、您必须考虑初始转换样本、因此您需要对通道进行双采样。  根据以上代码、这是:

    其他 ADC ISR 之一可能出现在这些指令之间、这会使虚拟样本无效、并使 SOC15成为 ADC 空闲状态下的第一个样本。  这将导致 SOC15的读数不准确。

    当您将 SOC14/15与其他 SOC 置于同一 ePWM 触发器中时、您保证 ADC 不会在最后一个通道被转换之前停止。

    我认为、如果您将上述行替换为

    AdcRegs.ADCSOCFRC1.ALL = 0xC000;

    它也会产生相同的效果、因为强制寄存器将同时写入两个位。

    如果您有更多问题、请告诉我、但是您之前实施的方法或上述方法都应该解决这个问题。

    我非常感谢您在与我合作解决该问题时所表现的耐心和帮助

    最棒的

    Matthew

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

    您好!

    感谢您的礼貌回应。

    我更改了您提供的说明。

    检测到的异常值的频率已降低、但在运行约4小时后仍然发生一次。

    我是否可以采取任何措施来改进这一点?

    根据 ADC 结束中断的时序、SOC14可能不是虚拟采样、SOC15可能是第一个采样。

    因此、检测到异常值。

    我的看法是否正确?

    此外、您能否详细地告诉我在检测到异常值时的流速?

    Ex) SOC14启动→SOC15启动 ...

    我无法很好地理解下一行。

    我 想深入了解原因、因此请详细解释以下各行。

     >在您的系统(和许多控制系统)中、通常有多个采样域、  

     >这样转换顺序可能与采样的时域不一致

     >频率相互移动。

     

    谢谢、

    科基

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

    您好、Koki、星期五是 TI 假日、Matt 今天下班了、明天他应该回来并作出回应。  感谢您的耐心等待。

    此致、

    Joe

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

    你好、Joe

    好的、感谢您的联系!

    科基

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

    科基

    您对 SOC15有时成为第1个样本的理解是正确的、如果发生这种情况、它将受到我们先前在该主题中讨论的勘误表的影响。

    不同的采样频率意味着、当 SOC15是第2个采样或第1个采样时、将会出现不一致的行为、具体取决于 ePWM (在您的系统中)何时触发其他 SOC。

    当您提到在实施之前的权变措施时、如果您在4小时后仍然看到问题、这是写入 SOC.all = 0xC 还是将温度传感器与 ePWM 触发器相关联?

    最棒的

    Matthew

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

    Matthew

    AdcRegs.ADCSOCFRC1.ALL = 0xC000;

    使用上述设置运行4小时后、检测到异常值一次。

    谢谢、

    科基

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

    是否可以将寄存器写入放置在 PWM ISR 或 PWM 更新函数中?  我想看看我们能否保证温度传感器采样的时序与更新环路频率相关、以尝试避免采样顺序中的任何潜在中断。

    另一种方法是将 SOC14/15触发器移至其中一个 PWM、就像您之前所做的那样。  这将消除软件写入与 PWM 模块中的其他 SOC 混合的可能性。

    最棒的

    Matthew  

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

    您好、Matthew

    我不明白您在发生错误时对 ADC 操作流程的评价。

    现在、SOC14和 SOC15进行双采样。

    SOC14的优先级高于 SOC15、因此首先开始采样。

    轮询指针指示正在转换或最近已转换的通道。

    因此、在转换期间指针指示 SOC14、当 SOC14完成时 、指针指示 SOC15并开始转换

    这种感觉是否正确?

    如果正确、在双采样的情况下、我认为按 SOC14→SOC15顺序进行的转换始终保持不变。

    ===========================================================================================================

    AdcRegs.ADCSOCFRC1.bit.SOC14 = 1;// SOC14 SW 触发器

    AdcRegs.ADCSOCFRC1.bit.SOC15 = 1;// SOC14 SW 触发器

    while (AdcRegs.ADCINTFlG.bit.ADCINT8 = 0){}// SOC15 SOC 结束等待

    AdcRegs.ADCINTFLGCLR.bit.ADCINT8 = 1;// ADCINT8 FLG 清零

    temp = AdcResult.ADCRESULT15;//从 SOC15获取温度传感器采样结果

    ===========================================================================================================

     

    [引用 userid="8973" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/979582/tms320f2802-adc-soc0-and-internal-temperature-sensor/3665150 #3665150"]是否可以将寄存器写入内容放入 PWM ISR 或 PWM 更新函数中?  [/报价]

    很抱歉、请更详细地告诉我该过程。

    谢谢、

    科基

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

    科基

    您对 ADC 状态机的理解是正确的。  但是、由于一些 ADCSOC 直接连接到 PWM 触发器、因此可能会异步进入依赖于 C28x 执行代码的 CPU/SW 触发器、从而将 SOC14/15锁存到 ADC 状态机。

    通过这种方式、PWM 触发 SOC 有可能出现在温度传感器 SOC14和 SOC15之间。  我曾希望使用:

    AdcRegs.ADCSOCFRC1.ALL = 0xC000;

    这将消除这种情况的可能性、但虽然它减少了不良温度传感器读数的出现、但它并未完全消除(我相信您在运行4小时后看到了不良值)。  

    我相信、在其他 SOC 仍处于待定状态时、SOC14/15仍有可能被置位、或者其他 SOC 可能会从 PWM 模块触发、而 PWM 模块基于自己的时基与线性 C 代码。

    我认为有两种选择可以尝试:

    1)将 SOC14/15的触发源从 SW 触发器中切换为已使用的 PWM 触发器之一: 这将确保始终按照规定的顺序锁存和处理这些触发器、因为它们将根据已知时间(即 PWM 比较值)触发。  这样做的缺点是、您可能会使 ADC 在2个采样时保持忙碌状态的时间更长、这可能会影响您的其他 PWM 触发器。  根据这些更新速率、这可能无关紧要。  如果对您的系统来说可以、这将是最干净的解决方案。

    2)将 SW 触发器/写入放置在其中一个 PWM ISR 内(假设 ISR 与某些 PWM 事件相关联以进行更新)。  这将保证触发器相对于系统中其他事件的同步写入。  如果您不需要对温度传感器进行采样、通常可以在此处插入本地计数器的比较以限制 ADC 使用量、如果需要任何 ADC BW、我们可能会考虑。  像每100次调用 ISR 一样、继续并强制使用 SOC14/15。

    请告诉我、以上内容是否进一步明确了我认为问题可能是什么以及解决方案。

    最棒的

    Matthew

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

    您好、Matthew

    [引用 userid="8973" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/979582/tms320f2802-adc-soc0-and-internal-temperature-sensor/3668738 #366878"]由于一些 ADCSOC 直接与 PWM 触发器关联、因此这些触发器可能异步于依赖 C28x 执行代码将 SOC14/15锁存到 ADC 状态机的 CPU/SW 触发器。

    我不理解所引用的句子。 请详细解释。

    我还将尝试两种解决方案、稍后我将向您介绍结果。

    谢谢、

    科基

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

    科基

    例如、您已将 SOC0和 SOC1配置为从 ePWM1 ADCSOCA、SOC2和 SOC3从 ePWM5 ADCSOCB、SOC4和 SOC5从 ePWM7 ADCSOCB 等触发  

    所有这些触发器在时间上都可能不同、并且不一定与您在 CPU 域中用于 SOC14/SOC15的软件强制同步。  如果它们是彼此的非整数倍数、它们将移入和移出相位、并且可能会重叠。  

    公平地说、如果我们没有针对该器件的第一个示例勘误表、这不会是问题、但由于存在该器件、它会在这里带来一些独特的问题。

    最棒的

    Matthew

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

    您好、Matthew

    通过使用(1)中的 PWM 触发器、异常值检测得到解决。

    再次感谢您的礼貌回应。

    科基