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 有疑问。 如果我想在不产生 ADC 中断的情况下知道转换结束(EOC)状态、该怎么做? 请有人告诉我。
谢谢、此致、
Akshay
您好、Akshay、
EOC 仅进入 ADC 中断逻辑(根据 TRM 第13.7章)。 希望了解您在生成中断时的顾虑。 也许我们可以解决这个问题。
此致、
Joseph
您好、Joseph、
由于 功能安全问题、我无法在项目中使用中断。 我可以使用延迟来完成转换、但效率很低。 这就是为什么我还在想其他的东西!
也许我可以阻止向 CPU 传播中断的过程?
谢谢、此致、
Akshay
您好、Akshay、
ADCCTL1寄存器中有位和字段、您可以像 ADCBSY 和 ADCBSYCHN 以及寄存器 ADCSOCFLG1一样进行轮询。 这将指示 ADC 是否正在转换(繁忙)、转换或当前正在转换的最后一个 SOC 是什么、或者哪个 SOC 接收到触发信号。 您可能会编写一个例程来轮询这些寄存器、以了解何时接收到启动转换的触发信号。 有一个自由运行的12位时钟 ADCCOUNTER 、它相对于 SYSCLK 进行计数、SYSCLK 与用于控制转换的时钟相同(S/H、EOC、 量化 -请参考 TRM 第13.12章中的 ADC 时序图)。 随附的表中包含时序图、用于指示 SOC S+H 过期后、当 tEOC 和 tLAT (量化延迟时间-数字值将在 ADC 结果寄存器中可用)事件发生后所需的 SYSCLK 周期数。 根据使用的预分频器、该表将具有不同的 tEOC 和 tLAT 值。
使用上述寄存 器时会有警告:寄存器轮询将会产生 CPU 开销、自由运行计数器将在4095 SYSCLK 计数后溢出、并将再次重新启动、因此您需要注意这一点。 读取 SOC 启动/触发器和 ADC 计数器时的 CPU 开销很大、可能会导致缺少 tEOC / tLAT 事件、并可能导致从 ADC 结果寄存器读取错误的结果。 我们还没有尝试过这种方法、也没有这方面的示例、但这是您可能可以尝试和试验的方法。
此致、
Joseph