TI论坛
直播中

周必镜

8年用户 989经验值
私信 关注

请各位大神帮忙指教以下DSP28035的ADC转换初始化程序是否错误?

本帖最后由 一只耳朵怪 于 2018-6-13 16:10 编辑

大家好
         我最近在用28035进行ADC测试,使用官方F2803XILEG_VDC.H 头文件的ADC_MACRO_INIT宏,进行了一些修改如下,用定时器触发ADC转换,使用的是内部参考电压,但现在调试结果是输入低于1.4V电压没有采样值,高于1.4V才开始有采样值(从0开始)例如:输入1.8V,采样到1F5,换算后是0.4V(是把1.4当做起始值吗?),各位高手帮忙看看我的ADC初始化程序是不是错了,谢谢各位了。

#define ADC_MACRO_INIT(ChSel,Trigsel,ACQPS)              
  asm(" RPT#100 || NOP");                                         
                        
    AdcRegs.ADCCTL1.all=ADC_RESET_FLAG;               
asm(" NOP ");                    
asm(" NOP ");                       
                        
EALLOW;                     
AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; /* Power up band gap */        
                        
                                                                                 
                           
AdcRegs.ADCCTL1.bit.ADCREFSEL = 0; /*选择内部参考电压*/         
    AdcRegs.ADCCTL1.bit.ADCREFPWD = 1; /* Power up reference */      
    AdcRegs.ADCCTL1.bit.ADCPWDN  = 1; /* Power up rest of ADC */      
AdcRegs.ADCCTL1.bit.ADCENABLE = 1; /* Enable ADC */         
                        
asm(" RPT#100 || NOP");                                             
                                                                                                
AdcRegs.ADCCTL1.bit.INTPULSEPOS= 1;  /*ADC转换后把结果锁存在结果寄存器*/     
AdcRegs.ADCCTL1.bit.TEMPCONV= 0;               
AdcRegs.ADCCTL1.bit.VREFLOCONV = 0;                                                         
                                                                                                
                        
/*AdcRegs.ADCCTL2.bit.CLKDIV2EN = 1; ADC时钟分频 */         
while(delay_cout >1) [ delay_cout--; ]   /*延时1MS*/                  
                        
AdcRegs.SOCPRICTL.bit.RRPOINTER = 1;  /*循环指针返回指向SOC1*/      
                        

回帖(9)

冯敬宇

2018-6-13 07:18:16
liangheng,
请问你测的1.4V是否直接在芯片的ADC输入引脚测出来的。
建议是先确保ADC引脚有确切的电平,然后再查看对应的结果寄存器,这样子排除硬件本身的问题。
Eric
                                                                         - ERIC
举报

周必镜

2018-6-13 07:31:04
引用: guigui_7044 发表于 2018-6-13 07:18
liangheng,
请问你测的1.4V是否直接在芯片的ADC输入引脚测出来的。
建议是先确保ADC引脚有确切的电平,然后再查看对应的结果寄存器,这样子排除硬件本身的问题。

Eric
          你好,谢谢你的答复。
          我是直接用电源给ADC输入引脚输入指定值的,输入时我用万用表测MCU的ADC引脚电压值是一致的。
         但是低于一定值的电压(例如1.4V)查看CCS的ADC结果寄存器没有数值显示,大于一定电压值才有采样值,但这个采样值不准确。
         我刚用了TI228035的ADC例子程序来调试那个电压值又要高于2.4V才有采样值,不知道这个是什么原因?求解答,是不是采样频率问题?还是初始化的问题(不知ADC初始化重点是哪部分,我对延时不是很了解,重置ADC要2个空操作吗?配置完到采样要有1MS延时吗?),问题有点多,请能帮我解答一下,谢谢。
       liangheng
举报

冯敬宇

2018-6-13 07:43:13
引用: kiifwerw 发表于 2018-6-13 07:31
Eric
          你好,谢谢你的答复。
          我是直接用电源给ADC输入引脚输入指定值的,输入时我用万用表测MCU的ADC引脚电压值是一致的。

liangheng,
 先建议你使用controlSUITE中关于ADC的例程
C:ticontrolSUITEdevice_supportf2803xv127DSP2803x_examples_ccsv5adc_soc
先定位一下问题在软件还是在硬件,如果这个例程还存在上述问题,你就把原理图贴上来一起讨论。
Eric
                                                                         - ERIC
举报

周必镜

2018-6-13 07:48:44
引用: guigui_7044 发表于 2018-6-13 07:43
liangheng,
 先建议你使用controlSUITE中关于ADC的例程
C:ticontrolSUITEdevice_supportf2803xv127DSP2803x_examples_ccsv5adc_soc

Eric
       你好。我用controlSUITE的例程测试是2.3V以上才有采样值,但是用我自己写的定时器触发ADC的程序测试是1.6V以上才有采样值(还有我发现改变定时器的频率那个1.6V的边界有点变化,不知是不是跟ADC的触发频率有关。若有关,关系又是怎么的呢)。这样应该是软件问题吧,但我又不清楚问题在哪?请指点一下,谢谢了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分