一共对5路AD采样,将AD配置为顺序模式,软件触发,定时100us启动软件触发, 然而采样的结果与实际不符,通过仿真器观察发现:
AdcRegs.ADCCTL1.ADSBUSCHN 值一直不改变,始终为5,
另外AdcRegs.SOCPRICTL.RRPOINTER =5 一直不变化。
大家有谁遇到过这种情况吗?
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.
我是这样初始化AD的:
初始化部分
{
AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; // Power ADC BG
AdcRegs.ADCCTL1.bit.ADCREFPWD = 1; // Power reference
AdcRegs.ADCCTL1.bit.ADCPWDN = 1; // Power ADC
AdcRegs.ADCCTL1.bit.ADCENABLE = 1; // Enable ADC
AdcRegs.ADCCTL1.bit.ADCREFSEL = 0; // Select interal BG
asm(" RPT#100 || NOP");
/* SOCx 通道选择 */
AdcRegs.ADCSOC0CTL.bit.CHSEL= 0;//0; //控制器温度传感器
AdcRegs.ADCSOC1CTL.bit.CHSEL= 1;
AdcRegs.ADCSOC2CTL.bit.CHSEL= 2;
AdcRegs.ADCSOC3CTL.bit.CHSEL= 3;
AdcRegs.ADCSOC4CTL.bit.CHSEL= 4;
AdcRegs.ADCSOC5CTL.bit.CHSEL= 5;
/* 采样窗设置 */
AdcRegs.ADCSOC0CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC1CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC2CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC3CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC4CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC5CTL.bit.ACQPS = 6;
/* 选软件方式触发的SOC */
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 0; //软件触发
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 0;
AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 0;
AdcRegs.ADCSOC3CTL.bit.TRIGSEL = 0;
AdcRegs.ADCSOC4CTL.bit.TRIGSEL = 0;
AdcRegs.ADCSOC5CTL.bit.TRIGSEL = 0;
}
在100us定时使能软件触发使能:
{
AdcRegs.ADCSOCFRC1.bit.SOC0 = 1;
AdcRegs.ADCSOCFRC1.bit.SOC1 = 1;
AdcRegs.ADCSOCFRC1.bit.SOC2 = 1;
AdcRegs.ADCSOCFRC1.bit.SOC3 = 1;
AdcRegs.ADCSOCFRC1.bit.SOC4 = 1;
AdcRegs.ADCSOCFRC1.bit.SOC5 = 1;
}
不知道我这里是不是用什么问题?