1.1、特征
1.2、功能框图
2.1、ADC模块配置
1、ADC时钟使能。ADC时钟没有使能的话,后续对ADC相关寄存器的配置值虽然被写入,但实际不会生效。
2、校准ADC参考、DAC偏移和内部振荡器。
Device_cal();
3、配置ADC模块转换误差、参考模式、参考基准、时钟分频、ADC中断触发时刻,最后ADC转换功能使能。
EALLOW;
AdcaRege.ADCOFFTRIM.bit.OFFTRIM = 0;
AnalogSubsysRegs.ANAREFCTL.bit.ANAREFSEL = ADC_EXTERNAL;
AnalogSubsysRegs.ANAREFCTL.bit.ANAREF2P5SEL = ADC_VREF3P3;
AdcaRegs.ADCCTL2.bit.PRESCALE = 2;
EDIS;
EALLOW;
AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1;
AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;
EDIS;
- a、参考模式选择外部参考,根据VERFHI和VREFLO引脚的输入作为ADC转换的输入范围。
- b、TMS320F280039C的SYSCLK为120MHz,ADCCLK最大为60MMHz,因此最小需要2分频。
图2.1-1
- c、配置ADC中断触发时间,是在tSH段结束时触发(配置为0)还是在tEOC段结束时触发(配置为1),触发后会进入相应的ADC中断。当配置成tSH段结束时触发时需要注意图2.1-3中事项:
图2.1-2
图2.1-3
- d、ADC转换使能前必须配置ADC时钟使能和分频,并且ADC转换使能后必须有一个延时。
4、延时1ms后配置ADC转换顺序、转换通道、采样窗口持续时间、触发源。该项配置主要通过宏定义实现,只需在宏定义中修改相关配置项。
// ADC模块A配置 SOC通道 模拟端口 采样窗口 触发源设定
#define DRV_ADCA_SOC0_CFG DRV_ADCA_SOC_CFG(0, 1, 6, DRV_ADC_TRIGSRC_EPWM8SOCA)
#define DRV_ADCA_SOC0_CFG DRV_ADCA_SOC_CFG(1, 4, 6, DRV_ADC_TRIGSRC_EPWM8SOCA)
#define DRV_ADCA_SOC0_CFG DRV_ADCA_SOC_CFG(2, 0, 6, DRV_ADC_TRIGSRC_EPWM8SOCA)
- a、SOC通道从0开始,范围为0-15。
- b、转换通道根据实际使用的通道配置,范围为0-15。
- c、采样窗口持续时间至少为1个ADCCLK时间,且持续时间是基于SYSCLK。配置采样窗口持续时间为:(6+1)*8.3ns=58.1ns。1个ADCCLK时间为1/60MHz=16.7ns。
5、配置ADC中断标志置位触发位置、使能ADCINT1中断、配置中断模式,清除中断标志。
EALLOW;
AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = DRV_ADCA_TRIGISR_SOCNUM;
AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;
AdcaRegs.ADCINTSEL1N2.bit.INT1CONT = 1;
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
EDIS;
- a、设置当所有通道转换完成时ADC中断标志置位。
- b、中断模式写1表示只要转换结束就会产生中断,写0表示在中断标志清除前不会产生新的中断。
ADC的A、B、C模块初始化都可按照上述描述进行配置。