主题中讨论的其他器件:TMS320F28P650DK、 C2000WARE、 SysConfig
工具与软件:
大家好、
我使用 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 无法转换来自外部多路复用器的正确信号。
采取的步骤:
- ADC-A 的 INA0通道配置了外部多路复用器
- 设置 SOC0以从外部多路复用器进行转换(通道1)。
- 已验证寄存器设置并找到、
EXTCHSEL = 0
而不是预期的EXTCHSEL = 1
。 - 已调查函数
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 写入新值。*/
请提供有关此问题的帮助。
谢谢。