主题中讨论的其他器件:C2000WARE
我对 F280041上的三个 ADC 使用以下配置:
/*
* Enable internal reference on ADCs
*/
ADC_setVREF(ADCA_BASE, ADC_REFERENCE_INTERNAL, ADC_REFERENCE_3_3V);
ADC_setVREF(ADCB_BASE, ADC_REFERENCE_INTERNAL, ADC_REFERENCE_3_3V);
ADC_setVREF(ADCC_BASE, ADC_REFERENCE_INTERNAL, ADC_REFERENCE_3_3V);
/*
* Set ADCCLK divider to /2
*/
ADC_setPrescaler(ADCA_BASE, ADC_CLK_DIV_2_0);
ADC_setPrescaler(ADCB_BASE, ADC_CLK_DIV_2_0);
ADC_setPrescaler(ADCC_BASE, ADC_CLK_DIV_2_0);
/*
* Set pulse positions to late
*/
ADC_setInterruptPulseMode(ADCA_BASE, ADC_PULSE_END_OF_CONV);
ADC_setInterruptPulseMode(ADCB_BASE, ADC_PULSE_END_OF_CONV);
ADC_setInterruptPulseMode(ADCC_BASE, ADC_PULSE_END_OF_CONV);
/*
* Power up the ADC and then delay for 1 ms
*/
ADC_enableConverter(ADCA_BASE);
ADC_enableConverter(ADCB_BASE);
ADC_enableConverter(ADCC_BASE);
DEVICE_DELAY_US(1000);
当然、外设时钟被启用:
SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_ADCA);
SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_ADCB);
SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_ADCC);
当我将一个通道配置为由 ADCA 采样时、一切工作正常、AdcaResultsRegs.ADCRESULTx 包含有效值。
但是、ADC B 显示了一种奇怪的行为:例如、如果我将通道 B0配置为由 ADCB 使用 SOC nr 进行采样。 6、会发生以下情况:
- ADC 配置正确、

- ADC 实际转换以下内容:

- 但是:结果寄存器始终读为零!!

ADC B 和 ADC C 上的其他通道也会出现同样的问题。只有 ADC A 看起来工作正常。
我是否错过了一些配置? 什么可能导致此类问题?
提前非常感谢您的帮助。
谢谢、Emil

