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.
您好!
我使用 ADC 序列发生器来监控电路板上的7个电源电压。
这是初始化 ADC 及其序列发生器的代码。
SysCtlPeripheralEnable (SYSCTL_Periph_ADC0);
while (!(SysCtlPeripheralReady (SYSCTL_Periph_ADC0))); //等待外设就绪
MAP_GPIOPinTypeADC (GPIO_PORTD_BASE、GPIO_PIN_0); //1V
MAP_GPIOPinTypeADC (GPIO_PORTD_BASE、GPIO_PIN_1); //1.2V
MAP_GPIOPinTypeADC (GPIO_PORTD_BASE、GPIO_PIN_2); //1.5V
MAP_GPIOPinTypeADC (GPIO_PORTD_BASE、GPIO_PIN_3); //1.8V
MAP_GPIOPinTypeADC (GPIO_PORTD_BASE、GPIO_PIN_4); //2.5V
MAP_GPIOPinTypeADC (GPIO_PORTD_BASE、GPIO_PIN_5); /3.3V (通过 DIO2电阻器)
MAP_GPIOPinTypeADC (GPIO_PORTD_BASE、GPIO_PIN_6); /5V (通过 DIO2电阻器)
ADCClockConfigSet (ADC0_BASE、ADC_CLOCK_SRC_PIOSC | ADC_CLOCK_RATE_FULL、1); //两个 ADC 的时钟
ADCReferenceSet (ADC0_BASE、ADC_REF_INT); //VDDA = 3.3V
ADCSequenceDisable (ADC0_BASE、0); //禁用序列、然后再更改它
ADCSequenceConfigure (ADC0_BASE、0、ADC_TRIGGER_PROCESSOR、0); //选择处理器(软件)触发器
ADCSequenceStepConfigure (ADC0_BASE、0、0、ADC_CTL_CH15);
ADCSequenceStepConfigure (ADC0_BASE、0、1、ADC_CTL_CH14);
ADCSequenceStepConfigure (ADC0_BASE、0、2、ADC_CTL_CH13);
ADCSequenceStepConfigure (ADC0_BASE、0、3、ADC_CTL_CH12);
ADCSequenceStepConfigure (ADC0_BASE、0、4、ADC_CTL_CH7);
ADCSequenceStepConfigure (ADC0_BASE、0、5、ADC_CTL_CH6);
ADCSequenceStepConfigure (ADC0_BASE、0、6、ADC_CTL_CH5);
ADCSequenceStepConfigure (ADC0_BASE、0、7、ADC_CTL_CH5 | ADC_CTL_END);
ADCIntClear (ADC0_BASE、0); //清除中断状态标志
ADCSequenceEnable (ADC0_BASE、0); //使能序列
序列发生器在应用程序中每秒触发一次、如下所示...
uint32_t ADC0_RAW[8];
ADCProcessorTrigger (ADC0_BASE、0); //触发
while (ADCIntStatus (ADC0_BASE、0、false) //等待完成
{
}
ADCIntClear (ADC0_BASE、0); //清除 ADC 中断标志
ADCSequenceDataGet (ADC0_BASE、0、ADC0_RAW); //读取 ADC 值
在大多数情况下、这种方法效果非常好。
但是、有时序列会导致通道错误、通道0获取通道1输入、通道1获取通道2等 我可以在调试器中看到这种情况。 一旦处于此状态、它将保持此状态、直到复位(我认为)。 这当然会使电源监控完全无用!
是否有人遇到过此问题、是否有解决方法或解决方法?
谢谢、
Richard
[引用 user="Richard aland">序列发生器偶尔会错误信道- CHAN 0获取 CHAN 1、CHAN 1获取 CHAN 2等 我可以在调试器中看到这种情况。[/quot]
Amit 已经建议、并且我们也注意到、调试器"打开 ADC 寄存器"可能会产生负面影响!
为了安全-我们的方法是"将每个 ADC 序列读数复制到安全变量中、我们在 IAR 的快速视图中显示该变量。