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.

[参考译文] TMS320F28P659DK-Q1:ADC 外部多路复用器配置

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1436190/tms320f28p659dk-q1-adc-external-mux-configuration

器件型号:TMS320F28P659DK-Q1
主题中讨论的其他器件:TMS320F28P650DKC2000WARESysConfig

工具与软件:

大家好、

我使用 TMS320F28P650DK 控制器、并使用 Code Composer Studio (版本:12.8.1.00005)和 C2000Ware_5_03_00_00进行开发。 我已经在 ADC-A 的 INA0通道上使用外部多路复用器对 ADC 外设进行了配置

若要启动转换、我需要将 SOC0设置为转换外部多路复用器通道(通道1)、并使用以下设置:

  • EXTCHSEL = 1
  • CHSEL = 0

此配置通过 SysConfig 完成。 不过、在运行代码时、我发现没有在该特定通道上进行转换。 在检查寄存器配置后、我发现该EXTCHSEL位保持为0、这会阻止选择正确的通道进行转换。

此外,我审查了函数的执行ADC_selectSOCExtChannel,这似乎是写入ACQPS寄存器。 这似乎是导致 ADC 无法转换来自外部多路复用器的正确信号。

采取的步骤:

  1. ADC-A 的 INA0通道配置了外部多路复用器
  2. 设置 SOC0以从外部多路复用器进行转换(通道1)。
  3. 已验证寄存器设置并找到、EXTCHSEL = 0而不是预期的EXTCHSEL = 1
  4. 已调查函数 ADC_selectSOCExtChannel、该函数正在写入ACQPS insted of EXTCHSEL、导致转换问题。

如果我在调试模式期间直接从观察窗口更改 EXTCHSEL 寄存器的值、它会按预期工作、并且我可以看到随着我更改通道、该值会发生变化。 下面是我完成的配置。

//开始转换0配置
//
//
//配置 ADC SOC 的外部通道多路复用器。
// base:myADC0_BASE
// SOC 编号:0
// extChannel:ADC_CH_ADCINX_1
//
ADC_selectSOCExtChannel (myADC0_BASE、ADC_SOC_NUMBER0、ADC_CH_ADCINX_1);/*在此函数执行后、EXTCHSEL 的值保持不变、我可以看到 ACQPS 中的变化。*/
//
//配置 ADC 中的转换启动(SOC)及其中断 SOC 触发器。
// SOC 编号:0
// Trigger:adc_trigger_EPWM1_SOCA
// Channel:ADC_CH_ADCIN0
//示例窗口:50个 SYSCLK 周期
// Interrupt Trigger:ADC_INT_SOC_TRIGGER_NONE
//
ADC_setupSOC (myADC0_BASE、ADC_SOC_NUMBER0、ADC_TRIGGER_EPWM1_SOCA、ADC_CH_ADCIN0、50U); /*执行此函数后、它会覆盖 ACQPS 值、并且仍然不会向 EXTCHSEL 写入新值。*/

请提供有关此问题的帮助。

谢谢。