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.
各位早安,最近我在用F28335上的ADC时遇到一个问题:据资料上说28335自带的ADC有两个采样保持器,可以用一个ADC实现两路信号同时采样;目前我需要实现这个功能,但写的ADC配置可能有些问题,一直无法输出正确的数,想请大家帮我看看哪里有问题,或是缺少了什么部分;代码如下:
AdcRegs.ADCTRL3.bit.SMODE_SEL = 1; //设置同步采样模式 AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x00;//设置1对转换,共2通道 AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x1; //设置ADCINA1和ADCINB1 AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 = 1; //使能PWMA SOC触发 AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; //使能SEQ1中断
我的预期是ADCINA1的结果存入AdcRegs.ADCRESULT0中,ADCINB1的结果存入AdcRegs.ADCRESULT1中,可程序运行并暂停后并没有我期望的结果。
上面是我根据书上的代码改的,可能问题不少,请大家不吝赐教。
啊,对,这也是我想问的;看书的时候对启停模式和连续模式的区别没太弄明白;现在我只是想在运行程序后立即开始采样,采够了双路的1024个点后自动停止采样,请问应该如何选择模式?
我是在TI官方的例程Example_2833xAdcSoc修改的,配置ADC后的内容我也贴一下:
// Assumes ePWM1 clock is already enabled in InitSysCtrl(); EPwm1Regs.ETSEL.bit.SOCAEN = 1; // Enable SOC on A group EPwm1Regs.ETSEL.bit.SOCASEL = 4; // Select SOC from from CPMA on upcount EPwm1Regs.ETPS.bit.SOCAPRD = 1; // Generate pulse on 1st event EPwm1Regs.CMPA.half.CMPA = 0x0080; // Set compare A value EPwm1Regs.TBPRD = 0xFFFF; // Set period for ePWM1 EPwm1Regs.TBCTL.bit.CTRMODE = 0; // count up and start // Wait for ADC interrupt for(;;) { LoopCount++; } } interrupt void adc_isr(void) { Voltage1[ConversionCount] = AdcRegs.ADCRESULT0 >>4; Voltage2[ConversionCount] = AdcRegs.ADCRESULT1 >>4; // If 40 conversions have been logged, start over if(ConversionCount == 255) { ConversionCount = 0; } else ConversionCount++; // Reinitialize for next ADC sequence AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1 AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // Clear INT SEQ1 bit PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // Acknowledge interrupt to PIE return; }