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.

[参考译文] TMS320F28377D:ADC:DMA 读取过时结果

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1507934/tms320f28377d-adc-dma-read-of-stale-result

器件型号:TMS320F28377D

工具/软件:

您好、

我最近考虑了 Silicon errata sprz412n、我很难理解这一点 "ADC:DMA 读取过时结果" 特别是在可视化调度方面。

根据我在详细信息部分中的理解、 ADCINT 采集结束前触发、这可能会导致上一周期的数据过时。 我的说法是否正确、因为这只会影响的数据 配置 直流/直流转换器 ADCINT (以及后续 SOC -但这不会被视为异常行为)?

对我来说、令人困惑的是 权变措施 部分。 使用"虚拟 DMA"引入延迟似乎有点极端、这使我认为我可能不完全理解该通报。

由于我们已经使用所有 DMA 通道、但并非所有 ADC SOC、因此我们考虑使用"虚拟 SOC"来触发 ADCINT 进而触发 DMA 的 PWM 信号。 您能否确认这是正确的解决方法?

谨致问候、BR

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

    您好:

     "虚拟 DMA"延迟用于在 ADCINT 中断和实际 DMA 传输之间引入延迟。 该延迟使 ADC 能够完成采集、并确保数据在 DMA 读取数据之前有效。

    我认为使用"dummy SOC"的权变措施是一个很好的替代方法、也应该可以使用。 让我循环访问 DMA 专家、以获得有关此问题的另一个确认。

    此致

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

    您好 Bruno、

    很抱歉耽误您的时间。 我假设您使用的是12位 ADC 模式和早期中断模式、如时序图屏幕截图所示。

    为了进行澄清、在采集窗口的最末端触发 ADCINT (请参阅黄色突出显示部分)、但此时结果不会锁存到结果寄存器中。 之后会锁存许多 SYSCLK 周期(请参阅蓝色突出显示部分)。 问题在于、DMA 可以在 S + H 窗口完成后(请参阅绿色突出显示部分)(最早)读取结果寄存器的3个 SYSCLK 周期、此时新数据尚未锁存到结果寄存器中。  

    我说这只影响的数据是正确的 配置 直流/直流转换器 ADCINT (以及后续 SOC、但这不会被视为异常行为)?

    是的。 这种"异常"行为并不像您在应用中只需要考虑的行为(并且由于时序原因、需要比大多数 DMA+外设实现不太直观的解决方案)。 在较新的器件中、我们解决了此问题。  

    您提到的虚拟 SOC 应该起作用。 您只需配置 DMA 中断、以便在 SOC1的 S+H 窗口结束时触发、但让 DMA 读取 ADCRESULT0寄存器、以便在 DMA 访问 SOC0数据时锁存该数据。

    如果回答了您的问题、请支持此回答。 Slight smileμ s

    此致、

    Delaney

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

    尊敬的 Delaney:

    感谢您的回答、特别是详细的图表  

    BR