我在学习28335控制电机,想用28335的adc的双通道ADCINA0,ADCINA1同时采样2相电流,用ADCINA2采样电池电压,不知如何配置寄存器?
如下是我的程序,
SysCtrlRegs.HISPCP.all = 0x0003; //AdcClock = SYSCLKOUT/6 = 25MHZ
EALLOW; // Enable EALLOW
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1; // Enable SYSCLKOUT to ADC
ADC_cal();
EDIS; // Disable EALLOW
EALLOW;
// 设置ADC的参考电压源
AdcRegs.ADCREFSEL.all=0;
//ADC模块上电
AdcRegs.ADCTRL3.all = 0x00E0; // ADC power-up
AdcRegs.ADCTRL1.bit.ACQ_PS = 0;
AdcRegs.ADCTRL3.bit.ADCCLKPS = 0;
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // Setup cascaded sequencer mode
AdcRegs.ADCTRL1.bit.CONT_RUN = 1; // Setup continuous run
AdcRegs.ADCTRL1.bit.SEQ_OVRD = 0; // Enable Sequencer override feature
AdcRegs.ADCMAXCONV.all = 0x0002; // 3 double conv's (16 total)
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; // Setup conv from ADCINA0
AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1; // Setup conv from ADCINA1
AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x2; // Setup conv from ADCINA2
AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 = 1; // Enable SOCA from ePWM to start SEQ1
// Start SEQ1
AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1; // Start SEQ1
EDIS;
DELAY_US( ADC_usDELAY );
在pwm中断里里取adc值:
while (AdcRegs.ADCST.bit.INT_SEQ1== 0){}
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
EPwm2Regs.ETCLR.bit.SOCA = 1;
ad1 = ((AdcRegs.ADCRESULT0)>>4 ;
ad2 = ((AdcRegs.ADCRESULT1)>>4 ;
ad3 = ((AdcRegs.ADCRESULT2)>>4);
请帮我解决纠错一下:多谢多谢!