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.

[参考译文] TMS320F280049C:ADC 结果寄存器的行为

Guru**** 2952510 points

Other Parts Discussed in Thread: TMS320F280049C

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1651727/tms320f280049c-behavior-of-adc-result-register

器件型号: TMS320F280049C

您好、  

   我使用 TMS320F280049C 来配置 ADC-A:SOC0、SOC1、SOC2、SOC3、用于对不同的模拟信号进行采样。 并为 ADC 中断触发源设置 SOC1。

  在用于收集所有数据(包括 SOC2 和 SOC3)的相关 ADC ISR(由 SOC1 触发)中、我的问题是:这种方法是否有问题?  我知道在读取 SOC2 和 SOC3 ADC 结果寄存器时、SOC2 和 SOC3 可能尚未完成 ADC 转换、那么 SOC2 和 SOC3 结果寄存器中的值是多少? 值为零? 或者它将保留以前的值(如果以前的值不为零)?

   另一个问题是完成 ADC 转换时、将 ADC 值写入 ADC 结果寄存器需要多长时间? 当 CPU 读取 ADC 结果寄存器与写入结果寄存器发生冲突时、是否存在任何可能的情况?

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

    尊敬的 Xu:

    如果 SOC0-SOC3 的触发源相同、最好通过最后一个 SOC (SOC3) 触发 ISR、以便在 ISR 中读取结果时、可以确保 SOC0 至 SOC3 的结果是最新的。  如果触发源相同、SOC0 将首先进行转换、并在 tLAT 结束时 (请参阅数据表中的时序图)、转换结果将在 ADCRESULTx 寄存器中提供。  SOC0 转换之后、SOC1 将后跟 SOC2 和 SOC3、然后先更新 ADCRESULT0、然后更新 ADCRESULT1 至 ADCRESULT3。  如果 SOC 在 tLAT 之前的任何时候尚未完成转换、则 ADCRESULTx 寄存器将包含前一个转换结果。

    仅   当转换完成时、才会在 tLAT 之后写入 ADC 结果寄存器(tEOC 请参阅数据表中的时序图和表)  。  为了确保在之后读取最新结果、应在 tLAT 之后进行 ADC 读取。

    此致、

    Joseph

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

    您好、Joseph:

    在我们的当前设计中、由于某些要求、我们没有设置由最后一个 SOC (SOC3) 触发的 ADC ISR。  我们刚刚为 ADC 中断触发源设置 SOC1。  但我们想知道我是否  在此 ISR 中获得所有 ADCRESULTx 寄存器、  当 CPU 读取 SOC2 和 SOC3 结果寄存器数据 、而 Haradware  同时将数据写入结果寄存器时、是否存在任何冲突、所以我将得到错误的数据、而不是 之前的转换结果。

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

    尊敬的 Xu:

    由于在 ADC 结果写入操作期间流水线处于繁忙状态、因此不可能获得错误的数据、因为在此期间不允许进行读取。  读取将位于队列中、并将在写入操作完成后继续。

    此致、

    Joseph