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.

[参考译文] TMS320F28379D:针对不同 EOC 使用相同的 ADCxINTx

Guru**** 2503205 points
Other Parts Discussed in Thread: TMDSCNCD28379D, TMS320F28379D, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1136029/tms320f28379d-using-the-same-adcxintx-for-different-eoc

器件型号:TMS320F28379D
主题中讨论的其他器件: TMDSCNCD28379DC2000WARE

我正在使用带 TMDSCNCD28379D 控制卡的 TMS320F28379D 控制器。 是否有办法让多 个转换结束(EOCx)触发同一 ADC 中断(ADCxINTx)?

我知道以下情况是可能的:我可以让多个 SOC 针对同一 ADC 通道或不同通道触发同一 ADC 模块的启动、然后选择批处理的*一* EOC 在完成后触发 ADC 中断。 然后、在 ISR 中、我可以读取被采样的每个 ADC 通道的所有结果。  


我要做的是使用相同的 ADC 中断、例如用于多个 SOC 的 ADCA INT1、以便在每次 ADC 转换结束时在 ADCA INT1上生成中断、然后使用一些标志寄存器我可以确定应该读取的结果。  

我现在看到的唯一方法是对每个 ADC 读数使用不同的 ADCx INTx、我希望在转换结果准备就绪后立即生成中断。

谢谢你
Erik  

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

    您好 Erik、

    我已将此问题分配给我们的 ADC 专家、请在不久的将来回复

    此致、

    Peter

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

    您好 Erik、

    浏览文档、似乎没有办法使用多个 EoC 触发中断。 相反、您可以使用多个 SOC 来触发 ADCA INT1、 然后使用 ADC SOC 标志寄存器(ADCSOCFLG1)、您可以确定触发中断的 SOC 并等待其数据[编辑: 这将导致中断溢出、因为它将持续触发中断。 更好的解决方案是使用一个 SOC 触发中断、而另一个 SOC 仍开始转换以获取结果。]  除非您打算 一次等待许多 SOC、否则等待不会产生重大影响。 很可惜,我看不到有一种写平机会标志的方法,因为没有一个单独的中断,便无法监察平机会的情况。

    此致、

    Omer Amir

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

    谢谢您 Omer

    我认为您提出的解决方案可能会起作用。  不过、我的理解是 、ADCSOCFLG1寄存器将具有由 SOC 设置的位、并且在 ADC 为 SOC 提供服务后立即将其清除。 ADC 转换完成并进入 ADC INTx ISR 后、我需要读取一些标志寄存器。 是否有一个寄存器位仍将被置位、该位将对应于哪个 SOC 启动了触发此中断的最新 ADC 转换?

    我希望 SOC 由 PWM 周期计数器比较自动触发。 因此、我不必在每次 ADC 触发后等待 ADC 完成。 这一切都应该在硬件中、然后在 ADC 完成后、我只想读取启动该 ADC 采样的 SOC 的相应结果。  

    谢谢你

    Erik  

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

    您好 Erik、

    澄清:

    [引用 userid="497538" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1136029/tms320f28379d-using-the-same-adcxintx-for-different-eoc/4217180 #4217180"]但是、我的理解是 ADCSOCFLG1寄存器将具有由 SOC 设置的位、并且一旦 ADC 为 SOC 提供服务、就会清除这些位。

    进入 ADC 中断后、SOC 标志位不会被清除、必须在中断内手动清除。 使用 ADCINTSOCSEL1/2寄存器来配置 ADC SOC 中断、并使用 ADCSOCFLG1寄存器来读取触发了哪个 SOC、您应该能够有多个 SOC 用于转换、然后选择为中断提供服务的 SOC。 然后、您应该能够从中断内部看到已发出哪些 SOC 标志。 SOC 使用循环来为转换提供服务、因此除了 首先触发外、没有会导致一个 SOC 转到另一个中断的固有优先级。

    此致、

    Omer Amir

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

    谢谢您 Omer

    我没有看到需要在中断中清除 SOC 标志位。 我的理解是、需要在中断中清除的标志位是1)清除中断标志、即 ADCINTx、 以及清除中断组标志、例如组1。  

    • 我已经在 ISR 的开头放置了断点、并且我看不到 ADCSOCFLG1寄存器中的任何 SOC 标志位都被置位。
    •  ADCINTSOCSEL1/2寄存 器似乎用于在完成之前的 ADC 读数后启动新的 SOC、方法是配置任一 ADCINT 触发所选的 SOC。  
    •  ADCINTSEL1N2寄存器用于选择哪个 EOC 可以触发 ADC 中断。 似乎只有一个 EOC 能够触发一个选定的 ADCINTx。 (请参阅寄存 器说明)因此、我不认为可以让多个 EOC 触发同一个中断。 请参阅 技术参考手册的第1569页。  

    谢谢你

    Erik  

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

    您好 Erik、

    [引用 userid="497538" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1136029/tms320f28379d-using-the-same-adcxintx-for-different-eoc/4218433 #4218433"]ADCINTSEL1N2 寄存器用于选择哪个 EOC 可以触发 ADC 中断。 似乎只有一个 EOC 能够触发一个选定的 ADCINTx[/引用]

    这是我在第一次答复中所说的、但只有一 个 EOC 可以触发 ADC 中断。 与另一位专家讨论后、我确认我错了、实际上无法在不产生中断溢出(和缺少转换)的情况下为同一中断配置多个 SOC。

    相反、您可以使用多个启用的 SOC 和1个触发中断的 SOC (我认为最多可使用8个 SOC 来触发一个中断)。 您可以查看 C2000Ware 中的 ADC 示例5 (C2000Ware_4_XX_XX_XX\driverlib\f2837xd\examples\CPU1\ADC)、其中包含使用轮询的示例。 但是、您可以将 while 循环中的代码插入 ISR、并使用中断读取结果。 如果您对配置此功能有更多疑问、请告诉我。

    此致、

    Omer Amir

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

    谢谢您 Omer

    我们提出的两种可能的解决方案似乎与此类似。  

    选项1:在 ISR 内循环更新 ADCINTSEL1N2中的 EOC 映射、以便下一个 SOC 触发中断。 记录/队列下一个 ADC 测量结果、并使用此记录/队列确定要运行的更新函数。  

    选项2:在每次测量中包含一个公共样本、并让该公共样本触发中断。 保留记录/队列、记录在 ISR 内读取的通用样本和执行其关联的更新函数之外的不同样本。   

    谢谢!

    Erik  

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

    您好 Erik、

    是的、这些选项是有效的。 如果您有任何疑问、请告诉我、否则我可以关闭此主题。

    此致、

    Omer Amir