TI中文支持网
TI专业的中文技术问题搜集分享网站

28027 软件触发AD转换问题

AD配置: #define ADC_MACRO_INIT(ChSel,Trigsel,ACQPS) \

 DELAY_US(ADC_usDELAY); \

AdcRegs.ADCCTL1.all=ADC_RESET_FLAG; \

asm(" NOP "); \ asm(" NOP "); \

EALLOW; \

AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; /* Power up band gap */ \ 

DELAY_US(ADC_usDELAY); /* Delay before powering up rest of ADC */ \

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; \

AdcRegs.ADCCTL1.bit.TEMPCONV=0; \ 

DELAY_US(ADC_usDELAY); \

\ \ /******* CHANNEL SELECT *******/ \

AdcRegs.ADCSOC0CTL.bit.CHSEL = ChSel[0]; \

AdcRegs.ADCSOC1CTL.bit.CHSEL = ChSel[1]; \

AdcRegs.ADCSOC2CTL.bit.CHSEL = ChSel[2]; \

AdcRegs.ADCSOC3CTL.bit.CHSEL = ChSel[3]; \

AdcRegs.ADCSOC4CTL.bit.CHSEL = ChSel[4]; \

AdcRegs.ADCSOC5CTL.bit.CHSEL = ChSel[5]; \

AdcRegs.ADCSOC6CTL.bit.CHSEL = ChSel[6]; \

AdcRegs.ADCSOC7CTL.bit.CHSEL = ChSel[7]; \

AdcRegs.ADCSOC8CTL.bit.CHSEL = ChSel[8]; \

AdcRegs.ADCSOC9CTL.bit.CHSEL = ChSel[9]; \

AdcRegs.ADCSOC10CTL.bit.CHSEL = ChSel[10]; \

AdcRegs.ADCSOC11CTL.bit.CHSEL = ChSel[11]; \

AdcRegs.ADCSOC12CTL.bit.CHSEL = ChSel[12]; \

AdcRegs.ADCSOC13CTL.bit.CHSEL = ChSel[13]; \

AdcRegs.ADCSOC14CTL.bit.CHSEL = ChSel[14]; \

AdcRegs.ADCSOC15CTL.bit.CHSEL = ChSel[15]; \ 

AdcRegs.ADCSOC0CTL.bit.TRIGSEL = Trigsel[0]; /* Set SOC0 start trigger on EPWM1A */ \

AdcRegs.ADCSOC1CTL.bit.TRIGSEL = Trigsel[1]; \

AdcRegs.ADCSOC2CTL.bit.TRIGSEL = Trigsel[2]; \

AdcRegs.ADCSOC3CTL.bit.TRIGSEL = Trigsel[3]; \

AdcRegs.ADCSOC4CTL.bit.TRIGSEL = Trigsel[4]; \

AdcRegs.ADCSOC5CTL.bit.TRIGSEL = Trigsel[5]; \

AdcRegs.ADCSOC6CTL.bit.TRIGSEL = Trigsel[6]; \

AdcRegs.ADCSOC7CTL.bit.TRIGSEL = Trigsel[7]; \

AdcRegs.ADCSOC8CTL.bit.TRIGSEL = Trigsel[8]; \

AdcRegs.ADCSOC9CTL.bit.TRIGSEL = Trigsel[9]; \

AdcRegs.ADCSOC10CTL.bit.TRIGSEL = Trigsel[10]; \

AdcRegs.ADCSOC11CTL.bit.TRIGSEL = Trigsel[11]; \

AdcRegs.ADCSOC12CTL.bit.TRIGSEL = Trigsel[12]; \

AdcRegs.ADCSOC13CTL.bit.TRIGSEL = Trigsel[13]; \

AdcRegs.ADCSOC14CTL.bit.TRIGSEL = Trigsel[14]; \

AdcRegs.ADCSOC15CTL.bit.TRIGSEL = Trigsel[15]; \ 

AdcRegs.ADCSOC0CTL.bit.ACQPS = ACQPS[0];/* Set SOC0 S/H Window to 6+1 ADC Clock Cycles */ \

AdcRegs.ADCSOC1CTL.bit.ACQPS = ACQPS[1]; \

AdcRegs.ADCSOC2CTL.bit.ACQPS = ACQPS[2]; \

AdcRegs.ADCSOC3CTL.bit.ACQPS = ACQPS[3]; \

AdcRegs.ADCSOC4CTL.bit.ACQPS = ACQPS[4]; \

AdcRegs.ADCSOC5CTL.bit.ACQPS = ACQPS[5]; \

AdcRegs.ADCSOC6CTL.bit.ACQPS = ACQPS[6]; \

AdcRegs.ADCSOC7CTL.bit.ACQPS = ACQPS[7]; \

AdcRegs.ADCSOC8CTL.bit.ACQPS = ACQPS[8]; \

AdcRegs.ADCSOC9CTL.bit.ACQPS = ACQPS[9]; \

AdcRegs.ADCSOC10CTL.bit.ACQPS = ACQPS[10]; \

AdcRegs.ADCSOC11CTL.bit.ACQPS = ACQPS[11]; \

AdcRegs.ADCSOC12CTL.bit.ACQPS = ACQPS[12]; \

AdcRegs.ADCSOC13CTL.bit.ACQPS = ACQPS[13]; \

AdcRegs.ADCSOC14CTL.bit.ACQPS = ACQPS[14]; \

AdcRegs.ADCSOC15CTL.bit.ACQPS = ACQPS[15]; \

EDIS; \

初始化后为何ad就一直在转换。

AdcRegs.ADCSOCFRC1.all = 0x00FF;

while(AdcRegs.ADCSOCFLG1.all != 0){};

软件触发,我在while前设置了个断点,看了一下寄存器,ADCSOCFRC1寄存器并没有被置1

Eric Ma:

你程序中配置的触发源是什么,PWM吗?

Eric

AD配置: #define ADC_MACRO_INIT(ChSel,Trigsel,ACQPS) \

 DELAY_US(ADC_usDELAY); \

AdcRegs.ADCCTL1.all=ADC_RESET_FLAG; \

asm(" NOP "); \ asm(" NOP "); \

EALLOW; \

AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; /* Power up band gap */ \ 

DELAY_US(ADC_usDELAY); /* Delay before powering up rest of ADC */ \

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; \

AdcRegs.ADCCTL1.bit.TEMPCONV=0; \ 

DELAY_US(ADC_usDELAY); \

\ \ /******* CHANNEL SELECT *******/ \

AdcRegs.ADCSOC0CTL.bit.CHSEL = ChSel[0]; \

AdcRegs.ADCSOC1CTL.bit.CHSEL = ChSel[1]; \

AdcRegs.ADCSOC2CTL.bit.CHSEL = ChSel[2]; \

AdcRegs.ADCSOC3CTL.bit.CHSEL = ChSel[3]; \

AdcRegs.ADCSOC4CTL.bit.CHSEL = ChSel[4]; \

AdcRegs.ADCSOC5CTL.bit.CHSEL = ChSel[5]; \

AdcRegs.ADCSOC6CTL.bit.CHSEL = ChSel[6]; \

AdcRegs.ADCSOC7CTL.bit.CHSEL = ChSel[7]; \

AdcRegs.ADCSOC8CTL.bit.CHSEL = ChSel[8]; \

AdcRegs.ADCSOC9CTL.bit.CHSEL = ChSel[9]; \

AdcRegs.ADCSOC10CTL.bit.CHSEL = ChSel[10]; \

AdcRegs.ADCSOC11CTL.bit.CHSEL = ChSel[11]; \

AdcRegs.ADCSOC12CTL.bit.CHSEL = ChSel[12]; \

AdcRegs.ADCSOC13CTL.bit.CHSEL = ChSel[13]; \

AdcRegs.ADCSOC14CTL.bit.CHSEL = ChSel[14]; \

AdcRegs.ADCSOC15CTL.bit.CHSEL = ChSel[15]; \ 

AdcRegs.ADCSOC0CTL.bit.TRIGSEL = Trigsel[0]; /* Set SOC0 start trigger on EPWM1A */ \

AdcRegs.ADCSOC1CTL.bit.TRIGSEL = Trigsel[1]; \

AdcRegs.ADCSOC2CTL.bit.TRIGSEL = Trigsel[2]; \

AdcRegs.ADCSOC3CTL.bit.TRIGSEL = Trigsel[3]; \

AdcRegs.ADCSOC4CTL.bit.TRIGSEL = Trigsel[4]; \

AdcRegs.ADCSOC5CTL.bit.TRIGSEL = Trigsel[5]; \

AdcRegs.ADCSOC6CTL.bit.TRIGSEL = Trigsel[6]; \

AdcRegs.ADCSOC7CTL.bit.TRIGSEL = Trigsel[7]; \

AdcRegs.ADCSOC8CTL.bit.TRIGSEL = Trigsel[8]; \

AdcRegs.ADCSOC9CTL.bit.TRIGSEL = Trigsel[9]; \

AdcRegs.ADCSOC10CTL.bit.TRIGSEL = Trigsel[10]; \

AdcRegs.ADCSOC11CTL.bit.TRIGSEL = Trigsel[11]; \

AdcRegs.ADCSOC12CTL.bit.TRIGSEL = Trigsel[12]; \

AdcRegs.ADCSOC13CTL.bit.TRIGSEL = Trigsel[13]; \

AdcRegs.ADCSOC14CTL.bit.TRIGSEL = Trigsel[14]; \

AdcRegs.ADCSOC15CTL.bit.TRIGSEL = Trigsel[15]; \ 

AdcRegs.ADCSOC0CTL.bit.ACQPS = ACQPS[0];/* Set SOC0 S/H Window to 6+1 ADC Clock Cycles */ \

AdcRegs.ADCSOC1CTL.bit.ACQPS = ACQPS[1]; \

AdcRegs.ADCSOC2CTL.bit.ACQPS = ACQPS[2]; \

AdcRegs.ADCSOC3CTL.bit.ACQPS = ACQPS[3]; \

AdcRegs.ADCSOC4CTL.bit.ACQPS = ACQPS[4]; \

AdcRegs.ADCSOC5CTL.bit.ACQPS = ACQPS[5]; \

AdcRegs.ADCSOC6CTL.bit.ACQPS = ACQPS[6]; \

AdcRegs.ADCSOC7CTL.bit.ACQPS = ACQPS[7]; \

AdcRegs.ADCSOC8CTL.bit.ACQPS = ACQPS[8]; \

AdcRegs.ADCSOC9CTL.bit.ACQPS = ACQPS[9]; \

AdcRegs.ADCSOC10CTL.bit.ACQPS = ACQPS[10]; \

AdcRegs.ADCSOC11CTL.bit.ACQPS = ACQPS[11]; \

AdcRegs.ADCSOC12CTL.bit.ACQPS = ACQPS[12]; \

AdcRegs.ADCSOC13CTL.bit.ACQPS = ACQPS[13]; \

AdcRegs.ADCSOC14CTL.bit.ACQPS = ACQPS[14]; \

AdcRegs.ADCSOC15CTL.bit.ACQPS = ACQPS[15]; \

EDIS; \

初始化后为何ad就一直在转换。

AdcRegs.ADCSOCFRC1.all = 0x00FF;

while(AdcRegs.ADCSOCFLG1.all != 0){};

软件触发,我在while前设置了个断点,看了一下寄存器,ADCSOCFRC1寄存器并没有被置1

yongliang li1:

回复 Eric Ma:

是pwm触发,但是我没打开呢,我软件触发采样的到6个数据以后再打开,pwm触发。我初始化完成后,我在ccs里面就看到ADCRESULT有更新啊,没触发怎么在不断转换。。。。!?

AD配置: #define ADC_MACRO_INIT(ChSel,Trigsel,ACQPS) \

 DELAY_US(ADC_usDELAY); \

AdcRegs.ADCCTL1.all=ADC_RESET_FLAG; \

asm(" NOP "); \ asm(" NOP "); \

EALLOW; \

AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; /* Power up band gap */ \ 

DELAY_US(ADC_usDELAY); /* Delay before powering up rest of ADC */ \

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; \

AdcRegs.ADCCTL1.bit.TEMPCONV=0; \ 

DELAY_US(ADC_usDELAY); \

\ \ /******* CHANNEL SELECT *******/ \

AdcRegs.ADCSOC0CTL.bit.CHSEL = ChSel[0]; \

AdcRegs.ADCSOC1CTL.bit.CHSEL = ChSel[1]; \

AdcRegs.ADCSOC2CTL.bit.CHSEL = ChSel[2]; \

AdcRegs.ADCSOC3CTL.bit.CHSEL = ChSel[3]; \

AdcRegs.ADCSOC4CTL.bit.CHSEL = ChSel[4]; \

AdcRegs.ADCSOC5CTL.bit.CHSEL = ChSel[5]; \

AdcRegs.ADCSOC6CTL.bit.CHSEL = ChSel[6]; \

AdcRegs.ADCSOC7CTL.bit.CHSEL = ChSel[7]; \

AdcRegs.ADCSOC8CTL.bit.CHSEL = ChSel[8]; \

AdcRegs.ADCSOC9CTL.bit.CHSEL = ChSel[9]; \

AdcRegs.ADCSOC10CTL.bit.CHSEL = ChSel[10]; \

AdcRegs.ADCSOC11CTL.bit.CHSEL = ChSel[11]; \

AdcRegs.ADCSOC12CTL.bit.CHSEL = ChSel[12]; \

AdcRegs.ADCSOC13CTL.bit.CHSEL = ChSel[13]; \

AdcRegs.ADCSOC14CTL.bit.CHSEL = ChSel[14]; \

AdcRegs.ADCSOC15CTL.bit.CHSEL = ChSel[15]; \ 

AdcRegs.ADCSOC0CTL.bit.TRIGSEL = Trigsel[0]; /* Set SOC0 start trigger on EPWM1A */ \

AdcRegs.ADCSOC1CTL.bit.TRIGSEL = Trigsel[1]; \

AdcRegs.ADCSOC2CTL.bit.TRIGSEL = Trigsel[2]; \

AdcRegs.ADCSOC3CTL.bit.TRIGSEL = Trigsel[3]; \

AdcRegs.ADCSOC4CTL.bit.TRIGSEL = Trigsel[4]; \

AdcRegs.ADCSOC5CTL.bit.TRIGSEL = Trigsel[5]; \

AdcRegs.ADCSOC6CTL.bit.TRIGSEL = Trigsel[6]; \

AdcRegs.ADCSOC7CTL.bit.TRIGSEL = Trigsel[7]; \

AdcRegs.ADCSOC8CTL.bit.TRIGSEL = Trigsel[8]; \

AdcRegs.ADCSOC9CTL.bit.TRIGSEL = Trigsel[9]; \

AdcRegs.ADCSOC10CTL.bit.TRIGSEL = Trigsel[10]; \

AdcRegs.ADCSOC11CTL.bit.TRIGSEL = Trigsel[11]; \

AdcRegs.ADCSOC12CTL.bit.TRIGSEL = Trigsel[12]; \

AdcRegs.ADCSOC13CTL.bit.TRIGSEL = Trigsel[13]; \

AdcRegs.ADCSOC14CTL.bit.TRIGSEL = Trigsel[14]; \

AdcRegs.ADCSOC15CTL.bit.TRIGSEL = Trigsel[15]; \ 

AdcRegs.ADCSOC0CTL.bit.ACQPS = ACQPS[0];/* Set SOC0 S/H Window to 6+1 ADC Clock Cycles */ \

AdcRegs.ADCSOC1CTL.bit.ACQPS = ACQPS[1]; \

AdcRegs.ADCSOC2CTL.bit.ACQPS = ACQPS[2]; \

AdcRegs.ADCSOC3CTL.bit.ACQPS = ACQPS[3]; \

AdcRegs.ADCSOC4CTL.bit.ACQPS = ACQPS[4]; \

AdcRegs.ADCSOC5CTL.bit.ACQPS = ACQPS[5]; \

AdcRegs.ADCSOC6CTL.bit.ACQPS = ACQPS[6]; \

AdcRegs.ADCSOC7CTL.bit.ACQPS = ACQPS[7]; \

AdcRegs.ADCSOC8CTL.bit.ACQPS = ACQPS[8]; \

AdcRegs.ADCSOC9CTL.bit.ACQPS = ACQPS[9]; \

AdcRegs.ADCSOC10CTL.bit.ACQPS = ACQPS[10]; \

AdcRegs.ADCSOC11CTL.bit.ACQPS = ACQPS[11]; \

AdcRegs.ADCSOC12CTL.bit.ACQPS = ACQPS[12]; \

AdcRegs.ADCSOC13CTL.bit.ACQPS = ACQPS[13]; \

AdcRegs.ADCSOC14CTL.bit.ACQPS = ACQPS[14]; \

AdcRegs.ADCSOC15CTL.bit.ACQPS = ACQPS[15]; \

EDIS; \

初始化后为何ad就一直在转换。

AdcRegs.ADCSOCFRC1.all = 0x00FF;

while(AdcRegs.ADCSOCFLG1.all != 0){};

软件触发,我在while前设置了个断点,看了一下寄存器,ADCSOCFRC1寄存器并没有被置1

Martin Yu:

回复 yongliang li1:

PWM模块那边初始化设置是什么信号产生SOC信号的呢?TBCTR = ?建议检查下是不是PWM模块产生了SOC信号。

AD配置: #define ADC_MACRO_INIT(ChSel,Trigsel,ACQPS) \

 DELAY_US(ADC_usDELAY); \

AdcRegs.ADCCTL1.all=ADC_RESET_FLAG; \

asm(" NOP "); \ asm(" NOP "); \

EALLOW; \

AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; /* Power up band gap */ \ 

DELAY_US(ADC_usDELAY); /* Delay before powering up rest of ADC */ \

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; \

AdcRegs.ADCCTL1.bit.TEMPCONV=0; \ 

DELAY_US(ADC_usDELAY); \

\ \ /******* CHANNEL SELECT *******/ \

AdcRegs.ADCSOC0CTL.bit.CHSEL = ChSel[0]; \

AdcRegs.ADCSOC1CTL.bit.CHSEL = ChSel[1]; \

AdcRegs.ADCSOC2CTL.bit.CHSEL = ChSel[2]; \

AdcRegs.ADCSOC3CTL.bit.CHSEL = ChSel[3]; \

AdcRegs.ADCSOC4CTL.bit.CHSEL = ChSel[4]; \

AdcRegs.ADCSOC5CTL.bit.CHSEL = ChSel[5]; \

AdcRegs.ADCSOC6CTL.bit.CHSEL = ChSel[6]; \

AdcRegs.ADCSOC7CTL.bit.CHSEL = ChSel[7]; \

AdcRegs.ADCSOC8CTL.bit.CHSEL = ChSel[8]; \

AdcRegs.ADCSOC9CTL.bit.CHSEL = ChSel[9]; \

AdcRegs.ADCSOC10CTL.bit.CHSEL = ChSel[10]; \

AdcRegs.ADCSOC11CTL.bit.CHSEL = ChSel[11]; \

AdcRegs.ADCSOC12CTL.bit.CHSEL = ChSel[12]; \

AdcRegs.ADCSOC13CTL.bit.CHSEL = ChSel[13]; \

AdcRegs.ADCSOC14CTL.bit.CHSEL = ChSel[14]; \

AdcRegs.ADCSOC15CTL.bit.CHSEL = ChSel[15]; \ 

AdcRegs.ADCSOC0CTL.bit.TRIGSEL = Trigsel[0]; /* Set SOC0 start trigger on EPWM1A */ \

AdcRegs.ADCSOC1CTL.bit.TRIGSEL = Trigsel[1]; \

AdcRegs.ADCSOC2CTL.bit.TRIGSEL = Trigsel[2]; \

AdcRegs.ADCSOC3CTL.bit.TRIGSEL = Trigsel[3]; \

AdcRegs.ADCSOC4CTL.bit.TRIGSEL = Trigsel[4]; \

AdcRegs.ADCSOC5CTL.bit.TRIGSEL = Trigsel[5]; \

AdcRegs.ADCSOC6CTL.bit.TRIGSEL = Trigsel[6]; \

AdcRegs.ADCSOC7CTL.bit.TRIGSEL = Trigsel[7]; \

AdcRegs.ADCSOC8CTL.bit.TRIGSEL = Trigsel[8]; \

AdcRegs.ADCSOC9CTL.bit.TRIGSEL = Trigsel[9]; \

AdcRegs.ADCSOC10CTL.bit.TRIGSEL = Trigsel[10]; \

AdcRegs.ADCSOC11CTL.bit.TRIGSEL = Trigsel[11]; \

AdcRegs.ADCSOC12CTL.bit.TRIGSEL = Trigsel[12]; \

AdcRegs.ADCSOC13CTL.bit.TRIGSEL = Trigsel[13]; \

AdcRegs.ADCSOC14CTL.bit.TRIGSEL = Trigsel[14]; \

AdcRegs.ADCSOC15CTL.bit.TRIGSEL = Trigsel[15]; \ 

AdcRegs.ADCSOC0CTL.bit.ACQPS = ACQPS[0];/* Set SOC0 S/H Window to 6+1 ADC Clock Cycles */ \

AdcRegs.ADCSOC1CTL.bit.ACQPS = ACQPS[1]; \

AdcRegs.ADCSOC2CTL.bit.ACQPS = ACQPS[2]; \

AdcRegs.ADCSOC3CTL.bit.ACQPS = ACQPS[3]; \

AdcRegs.ADCSOC4CTL.bit.ACQPS = ACQPS[4]; \

AdcRegs.ADCSOC5CTL.bit.ACQPS = ACQPS[5]; \

AdcRegs.ADCSOC6CTL.bit.ACQPS = ACQPS[6]; \

AdcRegs.ADCSOC7CTL.bit.ACQPS = ACQPS[7]; \

AdcRegs.ADCSOC8CTL.bit.ACQPS = ACQPS[8]; \

AdcRegs.ADCSOC9CTL.bit.ACQPS = ACQPS[9]; \

AdcRegs.ADCSOC10CTL.bit.ACQPS = ACQPS[10]; \

AdcRegs.ADCSOC11CTL.bit.ACQPS = ACQPS[11]; \

AdcRegs.ADCSOC12CTL.bit.ACQPS = ACQPS[12]; \

AdcRegs.ADCSOC13CTL.bit.ACQPS = ACQPS[13]; \

AdcRegs.ADCSOC14CTL.bit.ACQPS = ACQPS[14]; \

AdcRegs.ADCSOC15CTL.bit.ACQPS = ACQPS[15]; \

EDIS; \

初始化后为何ad就一直在转换。

AdcRegs.ADCSOCFRC1.all = 0x00FF;

while(AdcRegs.ADCSOCFLG1.all != 0){};

软件触发,我在while前设置了个断点,看了一下寄存器,ADCSOCFRC1寄存器并没有被置1

yongliang li1:

回复 Martin Yu:

#define ADC_Trigger                                                                                \    /* Set up Event Trigger with period enable for Time-base of EPWM1 */                        \    EPwm1Regs.ETSEL.bit.SOCAEN = 1;     /* Enable SOCA */                                        \    EPwm1Regs.ETSEL.bit.SOCASEL = 2;    /* Enable period event for SOCA */                        \    EPwm1Regs.ETPS.bit.SOCAPRD = 1;     /* Generate SOCA on the 1st event */                    \    EPwm1Regs.ETCLR.bit.SOCA = 1;       /* Clear SOCA flag */                                    \    AdcRegs.INTSEL1N2.bit.INT1E     = 1;    /*Enabled ADCINT1*/                                    \    AdcRegs.INTSEL1N2.bit.INT1CONT  = 0;    /*Disable ADCINT1 Continuous mode*/                    \    AdcRegs.INTSEL1N2.bit.INT1SEL    = 3;    /*setup EOC3 to trigger ADCINT1 to fire*/            \这是触发ADC的配置

AD配置: #define ADC_MACRO_INIT(ChSel,Trigsel,ACQPS) \

 DELAY_US(ADC_usDELAY); \

AdcRegs.ADCCTL1.all=ADC_RESET_FLAG; \

asm(" NOP "); \ asm(" NOP "); \

EALLOW; \

AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; /* Power up band gap */ \ 

DELAY_US(ADC_usDELAY); /* Delay before powering up rest of ADC */ \

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; \

AdcRegs.ADCCTL1.bit.TEMPCONV=0; \ 

DELAY_US(ADC_usDELAY); \

\ \ /******* CHANNEL SELECT *******/ \

AdcRegs.ADCSOC0CTL.bit.CHSEL = ChSel[0]; \

AdcRegs.ADCSOC1CTL.bit.CHSEL = ChSel[1]; \

AdcRegs.ADCSOC2CTL.bit.CHSEL = ChSel[2]; \

AdcRegs.ADCSOC3CTL.bit.CHSEL = ChSel[3]; \

AdcRegs.ADCSOC4CTL.bit.CHSEL = ChSel[4]; \

AdcRegs.ADCSOC5CTL.bit.CHSEL = ChSel[5]; \

AdcRegs.ADCSOC6CTL.bit.CHSEL = ChSel[6]; \

AdcRegs.ADCSOC7CTL.bit.CHSEL = ChSel[7]; \

AdcRegs.ADCSOC8CTL.bit.CHSEL = ChSel[8]; \

AdcRegs.ADCSOC9CTL.bit.CHSEL = ChSel[9]; \

AdcRegs.ADCSOC10CTL.bit.CHSEL = ChSel[10]; \

AdcRegs.ADCSOC11CTL.bit.CHSEL = ChSel[11]; \

AdcRegs.ADCSOC12CTL.bit.CHSEL = ChSel[12]; \

AdcRegs.ADCSOC13CTL.bit.CHSEL = ChSel[13]; \

AdcRegs.ADCSOC14CTL.bit.CHSEL = ChSel[14]; \

AdcRegs.ADCSOC15CTL.bit.CHSEL = ChSel[15]; \ 

AdcRegs.ADCSOC0CTL.bit.TRIGSEL = Trigsel[0]; /* Set SOC0 start trigger on EPWM1A */ \

AdcRegs.ADCSOC1CTL.bit.TRIGSEL = Trigsel[1]; \

AdcRegs.ADCSOC2CTL.bit.TRIGSEL = Trigsel[2]; \

AdcRegs.ADCSOC3CTL.bit.TRIGSEL = Trigsel[3]; \

AdcRegs.ADCSOC4CTL.bit.TRIGSEL = Trigsel[4]; \

AdcRegs.ADCSOC5CTL.bit.TRIGSEL = Trigsel[5]; \

AdcRegs.ADCSOC6CTL.bit.TRIGSEL = Trigsel[6]; \

AdcRegs.ADCSOC7CTL.bit.TRIGSEL = Trigsel[7]; \

AdcRegs.ADCSOC8CTL.bit.TRIGSEL = Trigsel[8]; \

AdcRegs.ADCSOC9CTL.bit.TRIGSEL = Trigsel[9]; \

AdcRegs.ADCSOC10CTL.bit.TRIGSEL = Trigsel[10]; \

AdcRegs.ADCSOC11CTL.bit.TRIGSEL = Trigsel[11]; \

AdcRegs.ADCSOC12CTL.bit.TRIGSEL = Trigsel[12]; \

AdcRegs.ADCSOC13CTL.bit.TRIGSEL = Trigsel[13]; \

AdcRegs.ADCSOC14CTL.bit.TRIGSEL = Trigsel[14]; \

AdcRegs.ADCSOC15CTL.bit.TRIGSEL = Trigsel[15]; \ 

AdcRegs.ADCSOC0CTL.bit.ACQPS = ACQPS[0];/* Set SOC0 S/H Window to 6+1 ADC Clock Cycles */ \

AdcRegs.ADCSOC1CTL.bit.ACQPS = ACQPS[1]; \

AdcRegs.ADCSOC2CTL.bit.ACQPS = ACQPS[2]; \

AdcRegs.ADCSOC3CTL.bit.ACQPS = ACQPS[3]; \

AdcRegs.ADCSOC4CTL.bit.ACQPS = ACQPS[4]; \

AdcRegs.ADCSOC5CTL.bit.ACQPS = ACQPS[5]; \

AdcRegs.ADCSOC6CTL.bit.ACQPS = ACQPS[6]; \

AdcRegs.ADCSOC7CTL.bit.ACQPS = ACQPS[7]; \

AdcRegs.ADCSOC8CTL.bit.ACQPS = ACQPS[8]; \

AdcRegs.ADCSOC9CTL.bit.ACQPS = ACQPS[9]; \

AdcRegs.ADCSOC10CTL.bit.ACQPS = ACQPS[10]; \

AdcRegs.ADCSOC11CTL.bit.ACQPS = ACQPS[11]; \

AdcRegs.ADCSOC12CTL.bit.ACQPS = ACQPS[12]; \

AdcRegs.ADCSOC13CTL.bit.ACQPS = ACQPS[13]; \

AdcRegs.ADCSOC14CTL.bit.ACQPS = ACQPS[14]; \

AdcRegs.ADCSOC15CTL.bit.ACQPS = ACQPS[15]; \

EDIS; \

初始化后为何ad就一直在转换。

AdcRegs.ADCSOCFRC1.all = 0x00FF;

while(AdcRegs.ADCSOCFLG1.all != 0){};

软件触发,我在while前设置了个断点,看了一下寄存器,ADCSOCFRC1寄存器并没有被置1

Eric Ma:

回复 yongliang li1:

你检查一下PWM的寄存器是否有在计数。

ERIC

赞(0)
未经允许不得转载:TI中文支持网 » 28027 软件触发AD转换问题
分享到: 更多 (0)