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.

TMS320F28027 软件触发方式AD采样 问题



一共对5路AD采样,将AD配置为顺序模式,软件触发,定时100us启动软件触发, 然而采样的结果与实际不符,通过仿真器观察发现:

AdcRegs.ADCCTL1.ADSBUSCHN 值一直不改变,始终为5, 

另外AdcRegs.SOCPRICTL.RRPOINTER =5 一直不变化。

大家有谁遇到过这种情况吗?

  • 你是怎么初始化ADC的?设置的什么样的SOC源?

  • 我是这样初始化AD的:

    初始化部分

        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
        asm(" RPT#100 || NOP");



           /* SOCx 通道选择 */
        AdcRegs.ADCSOC0CTL.bit.CHSEL= 0;//0;   //控制器温度传感器

        AdcRegs.ADCSOC1CTL.bit.CHSEL= 1;
        AdcRegs.ADCSOC2CTL.bit.CHSEL= 2;
        AdcRegs.ADCSOC3CTL.bit.CHSEL= 3;
        AdcRegs.ADCSOC4CTL.bit.CHSEL= 4;  
        AdcRegs.ADCSOC5CTL.bit.CHSEL= 5;

       
        /* 采样窗设置 */
        AdcRegs.ADCSOC0CTL.bit.ACQPS = 6;   
        AdcRegs.ADCSOC1CTL.bit.ACQPS = 6;    
        AdcRegs.ADCSOC2CTL.bit.ACQPS = 6;
        AdcRegs.ADCSOC3CTL.bit.ACQPS = 6;
        AdcRegs.ADCSOC4CTL.bit.ACQPS = 6;
        AdcRegs.ADCSOC5CTL.bit.ACQPS = 6;



      /* 选软件方式触发的SOC */
        AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 0;     //软件触发       
        AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 0;           
        AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 0;             
        AdcRegs.ADCSOC3CTL.bit.TRIGSEL = 0;       
        AdcRegs.ADCSOC4CTL.bit.TRIGSEL = 0;             
        AdcRegs.ADCSOC5CTL.bit.TRIGSEL = 0;     

    在100us定时使能软件触发使能:


          AdcRegs.ADCSOCFRC1.bit.SOC0 = 1;             
          AdcRegs.ADCSOCFRC1.bit.SOC1 = 1;    
          AdcRegs.ADCSOCFRC1.bit.SOC2 = 1;             
          AdcRegs.ADCSOCFRC1.bit.SOC3 = 1;
          AdcRegs.ADCSOCFRC1.bit.SOC4 = 1;
          AdcRegs.ADCSOCFRC1.bit.SOC5 = 1;   

    不知道我这里是不是用什么问题?

  • SOC指针指到5是对的,你最后一个做的就是SOC。程序没什么问题,具体是看到采样结果什么样的不对?