【玩转 C2000 LaunchPad】ADC使用技巧
[复制链接]
【玩转C2000 下载附件
保存到相册
2012-12-31 15:15 上传
三、优先级问题
1、由SOCPRIORITY设置的优先级,为高优先级。
2、优先循环(Round Robin)
在一系列的SOC中,它们首尾相接,形成一个圆,并朝着SOC0、SOC、 ……的固定方向循环,与正在转换的SOC最近的下一个SOC的优先级最高。
这种方法很适用于电源、电机控制,因为需要有次序地处理。
四、同时采样
同时采样是在A及B通道中进行的。由硬件结构可见,只能设置一个A通 道及一个B通道同时采样。
F28系列的ADC的也规定,偶数SOC及下一个奇数SOC可以同时采样。 如,SOC0、SOC1可以同时采样,SOC6、SOC7可以同时采样。
同时采样对的触发源的任意一个均可以触发同时采样偶。
同时采样后,A通道先转换,B通道后转换。
五、ADC校准
一般使用TI提供的(*Device_cal)();,将TI预先存储在OTP中的ADC校准数 据拷贝到ADCREFSEL和ADCOFFTRIM寄存器中。
六、ADC的参考源
F28027提供了内部的带隙参考源,也可以由VREFHI/VREFLO引脚接入 外部的参考源。由ADCCTL1寄存器的内外部参考选择位选择。
七、示例
1、打开ADC时钟:
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1; // ADC
2、初始化ADC
(*Device_cal)();
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
3、配置中断
AdcRegs.INTSEL3N4.bit.INT3E = 1; // for PWM2A
AdcRegs.INTSEL3N4.bit.INT3SEL = 3; // EOC3
AdcRegs.INTSEL3N4.bit.INT3CONT = 1;
4、配置SOC
AdcRegs.SOCPRICTL.all = 0; // SOC0 is first SOC
AdcRegs.ADCSAMPLEMODE.all = 0x1B; // Simultaneous sampling enable For SOC0,2,6,8
AdcRegs.ADCINTSOCSEL1.all = 0; // Determined by the ADCSOCxCTL
AdcRegs.ADCINTSOCSEL2.all = 0; // Determined by the ADCSOCxCTL
AdcRegs.ADCSOCFRC1.all = 0;
// trigger source
AdcRegs.ADCSOC0CTL.bit.ACQPS = 6; // Sample window is 7 cycles
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 0x0d; // ePWM5A, ADCSOCA
AdcRegs.ADCSOC0CTL.bit.CHSEL = 2; // ADCINA2 -- current
[ 本帖最后由 dontium 于 2012-12-31 15:15 编辑 ]
|