现想实现28069芯片的AD上电就开始采样,不需要任何事件触发,请问应该怎么设置呢
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.
刚学DSP,这个弄了1个星期了,还没搞懂,能发个配置的范例吗?想看一下,谢谢
我这样可以吗?急用
// Configure ADC
EALLOW;
AdcRegs.ADCCTL1.bit.ADCREFSEL = 1; // Page485 选择外部VREF
AdcRegs.ADCCTL2.bit.ADCNONOVERLAP = 0; // Enable non-overlap mode 0允许重叠/1不允许
AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1; //ADCINT1 trips after AdcResults latch
AdcRegs.INTSEL1N2.bit.INT2E = 1; //Enabled ADCINT2
AdcRegs.INTSEL1N2.bit.INT2CONT = 1; //Disable ADCINT2 Continuous mode
AdcRegs.INTSEL1N2.bit.INT2SEL = 1; //setup EOC1 to trigger ADCINT2 to fire
AdcRegs.ADCSOC0CTL.bit.CHSEL = 0; //set SOC0 channel select to ADCINA0
AdcRegs.ADCSOC1CTL.bit.CHSEL = 8; //set SOC1 channel select to ADCINB0
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 0; //set SOC0 start trigger on software
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 0; //set SOC1 start trigger on software
AdcRegs.ADCSOC0CTL.bit.ACQPS = 6; //set SOC0 S/H Window to 7 ADC Clock Cycles, (6 ACQPS plus 1)
AdcRegs.ADCSOC1CTL.bit.ACQPS = 6; //set SOC0 S/H Window to 7 ADC Clock Cycles, (6 ACQPS plus 1)
AdcRegs.ADCINTSOCSEL1.bit.SOC0 = 2; //ADCINT2 will trigger SOC0. TRIGSEL field is ignored.
AdcRegs.ADCINTSOCSEL2.bit.SOC8 = 2; //ADCINT2 will trigger SOC0. TRIGSEL field is ignored.
//使用ADCSOCFRC1启动
AdcRegs.ADCSOCFRC1.bit.SOC0 = 1;
AdcRegs.ADCSOCFRC1.bit.SOC8 = 1;
EDIS;
中断函数部分
__interrupt void adc_isr(void)
{
Voltage1[0] = AdcResult.ADCRESULT0; //ADCINA0
Voltage2[0] = AdcResult.ADCRESULT1; //ADCINB0 正常
Voltage1[1] = 0; //ADCINA0
Voltage2[1] = 0; //ADCINB0 正常
Voltage1[2] = 0; //ADCINA0
Voltage2[2] = 0; //ADCINB0 正常
Voltage1[3] = 0; //ADCINA0
Voltage2[3] = 0; //ADCINB0 正常
AdcRegs.ADCINTFLGCLR.bit.ADCINT2 = 1; //Clear ADCINT1 flag reinitialize for next SOC
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // Acknowledge interrupt to PIE
return;
}
我是想改成AdcRegs.INTSEL1N2.bit.INT1CONT = 1 连续转换模式,然后中断不开,用DMA传送ADC值到我的内存,这样就不会占用CPU资源了吧~~~应该可以的吧??
贡献一下调好的代码吧,能用了
EALLOW;
AdcRegs.ADCCTL1.bit.ADCREFSEL = 1; // Page485 选择外部VREF
AdcRegs.ADCCTL2.bit.ADCNONOVERLAP = 0; // Enable non-overlap mode 0允许重叠/1不允许
AdcRegs.INTSEL1N2.bit.INT1E = 1; //Enabled ADCINT1
AdcRegs.INTSEL1N2.bit.INT1CONT = 1; //Disable ADCINT1 Continuous mode
AdcRegs.INTSEL1N2.bit.INT1SEL = 0; //setup EOC0 to trigger ADCINT1 to fire
AdcRegs.ADCSAMPLEMODE.bit.SIMULEN0 = 1; // 同时采样
AdcRegs.ADCSOC0CTL.bit.CHSEL = 0; //set SOC0 channel select to ADCINA0
AdcRegs.ADCSOC1CTL.bit.CHSEL = 8; //set SOC1 channel select to ADCINB0 page510
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 0; //set SOC0 start trigger on software
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 0; //set SOC1 start trigger on software
AdcRegs.ADCSOC0CTL.bit.ACQPS = 6; //set SOC0 S/H Window to 7 ADC Clock Cycles, (6 ACQPS plus 1)
AdcRegs.ADCSOC1CTL.bit.ACQPS = 6; //set SOC0 S/H Window to 7 ADC Clock Cycles, (6 ACQPS plus 1)
AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1; //ADCINT1 trips after AdcResults latch
AdcRegs.ADCINTSOCSEL1.bit.SOC0 = 1; //软件触发源ADCINT1
AdcRegs.ADCINTSOCSEL1.bit.SOC1 = 1; //ADCINT2 will trigger SOC0. TRIGSEL field is ignored.
//使用ADCSOCFRC1启动
//AdcRegs.ADCSOCFRC1.all = 0X0101; //0000 0001 0000 0001
AdcRegs.ADCSOCFRC1.bit.SOC0 = 1;
AdcRegs.ADCSOCFRC1.bit.SOC8 = 1;
EDIS;
3Q,总算暂时搞得了~~时间比较赶,似懂非懂,没非常细看资料,下次有时间再看了