一共对5路AD采样,将AD配置为顺序模式,软件触发,定时100us启动软件触发, 然而采样的结果与实际不符,通过仿真器观察发现:
AdcRegs.ADCCTL1.ADSBUSCHN 值一直不改变,始终为5,
另外AdcRegs.SOCPRICTL.RRPOINTER =5 一直不变化。
大家有谁遇到过这种情况吗?
囧:
你是怎么初始化ADC的?设置的什么样的SOC源?
一共对5路AD采样,将AD配置为顺序模式,软件触发,定时100us启动软件触发, 然而采样的结果与实际不符,通过仿真器观察发现:
AdcRegs.ADCCTL1.ADSBUSCHN 值一直不改变,始终为5,
另外AdcRegs.SOCPRICTL.RRPOINTER =5 一直不变化。
大家有谁遇到过这种情况吗?
MQ:
回复 囧:
我是这样初始化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;
}
不知道我这里是不是用什么问题?
一共对5路AD采样,将AD配置为顺序模式,软件触发,定时100us启动软件触发, 然而采样的结果与实际不符,通过仿真器观察发现:
AdcRegs.ADCCTL1.ADSBUSCHN 值一直不改变,始终为5,
另外AdcRegs.SOCPRICTL.RRPOINTER =5 一直不变化。
大家有谁遇到过这种情况吗?
囧:
回复 MQ:
SOC指针指到5是对的,你最后一个做的就是SOC。程序没什么问题,具体是看到采样结果什么样的不对?
TI中文支持网



