色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【中科昊芯Start_DSC28034PNT湖人開發板試用體驗】針對逆變器的EPWM和ADC采樣配置

開發板試用精選 ? 來源:開發板試用 ? 作者:電子發燒友論壇 ? 2022-11-18 16:36 ? 次閱讀

本文來源電子發燒友社區,作者:jf_55236000, 帖子地址:https://bbs.elecfans.com/jishu_2292646_1_1.html

從官方對DSC28034芯片的定位可以看出,該芯片是比較適合應用于電力電子電源設備的主控芯片的,下面就針對電力電子應用的主要外設EPWM和ADC的配置進行簡單的說明,首先介紹PWM的配置,配置EPWM1模塊的兩路互補帶死區PWM輸出EPWM1A和EPWM1B作為單相H4橋的L橋臂兩管驅動,配置EPWM2模塊的兩路互補帶死區PWM輸出EPWM2A和EPWM2B作為單相H4橋的N橋臂兩管驅動,同時在EPWM1計數器為0時觸發AD采樣觸發信號EPWM1_SOCA,以實現電感電流上升沿中心點采樣,設置在計數器在AD采樣觸發后5us觸發EPWM1中斷,然后在中斷中讀取AD采樣值,然后就可以執行閉環算法了。

具體PWM初始化代碼如下:


/******************************************************************

*函數名:void InitEPWM(void) *參 數 :無 *返回值:無 *作 用 :初始化EPWM ******************************************************************/ void InitEPWM(void) { EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; /每個啟用的ePWM模塊中的TBCLK(時基時鐘)均已停止。/ EDIS;

//=============EPwm1 Init For INV-L===============// EALLOW; EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_LO; /*當外部觸發事件發生時,強制EPWMxA為低電平*/ EPwm1Regs.TZCTL.bit.TZB = TZ_FORCE_LO; /*當外部觸發事件發生時,強制EPWMxA為低電平*/ EPwm1Regs.TZFRC.bit.OST = 1; /*強制單次觸發事件產生*/ EDIS;


EPwm1Regs.TBPRD = EPWM1_TIMER_TBPRD; /* Period = 4000*TBCLK counts*/ EPwm1Regs.CMPA.half.CMPA = EPWM1_TIMER_HALFPRD; /*設置CMPA值為EPWM1_TIMER_HALFPRD*/ EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; /*增減計數模式*/ EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; /*禁止TBCTR加載相位寄存器TBPHS中的值*/ EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; /*TBPHS寄存器工作模式選擇:映射模式*/ EPwm1Regs.TBCTL.bit.PHSDIR = TB_UP; /*相位同步后計數器方向為向上計數*/ EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; /*計數器CTR = Zero時發出同步信號*/ EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; /*高速時鐘分頻 1倍分頻*/ EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; /*時基時鐘分頻 1倍分頻*/ EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; /*CMPA寄存器工作模式選擇:映射模式*/ EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; /*CMPB寄存器工作模式選擇:映射模式*/ EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; /*當TBCTR=0x0000時,CMPA主寄存器從映射寄存器中加載數據*/ EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; /*當TBCTR=0x0000時,CMPB主寄存器從映射寄存器中加載數據*/ EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR; /*當時間基準計數器的值等于CMPA的值,且正在增計數時,使EPWMxA輸出低電平*/ EPwm1Regs.AQCTLA.bit.CAD = AQ_SET; /*當時間基準計數器的值等于CMPA的值,且正在減計數時,使EPWMxA輸出高電平*/ EPwm1Regs.AQCTLB.bit.CBU = AQ_SET; /*當時間基準計數器的值等于CMPB的值,且正在增計數時,使EPWMxB輸出高電平*/ EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR; /*當時間基準計數器的值等于CMPB的值,且正在減計數時,使EPWMxB輸出低電平*/ EPwm1Regs.ETSEL.bit.SOCASEL = ET_CTR_ZERO; /*選擇EPWMx_SOCA產生的條件:TBCTR=0x0000時產生*/ EPwm1Regs.ETPS.bit.SOCAPRD = ET_1ST; /*ePWM觸發采樣(EPWMx_SOCA)周期選擇:每發生1次事件產生中斷信號EPWMx_SOCA*/ EPwm1Regs.ETSEL.bit.SOCAEN = 1; /*使能產生觸發采樣信號EPWMx_SOCA*/ EPwm1Regs.CMPB = EPWM1_CMPB_INT_CNT; /*設置CMPB值為EPWM1_CMPB_INT_CNT*/ EPwm1Regs.ETSEL.bit.INTSEL = ET_CTRU_CMPB; /*選擇EPWMx_INT產生的條件:TBCTR=CMPB時產生*/ EPwm1Regs.ETPS.bit.INTPRD = ET_1ST; /*ePWM中斷(EPWMx_INT)周期選擇:每發生1次事件產生中斷信號EPWMx_INT*/ EPwm1Regs.ETSEL.bit.INTEN = 0; /*使能產生中斷信號EPWMx_INT*/ EPwm1Regs.AQSFRC.bit.RLDCSF = 0; /*當計數器TBCTR=0x0000時加載強制事件*/ EPwm1Regs.AQCSFRC.bit.CSFA = AQ_NO_ACTION; /*軟件強制觸發不動作*/ EPwm1Regs.AQCSFRC.bit.CSFB = AQ_NO_ACTION; EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; /*使能上升沿和下降沿延時信號*/ EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; /*主低模式:EPWMxA和EPWMxB都反轉極性*/ EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL; /*EPWMxA作為上升沿和下降沿時的信號源*/ EPwm1Regs.DBRED = EPWM1_TIMER_DB; /*死區上升沿延時計數器*/ EPwm1Regs.DBFED = EPWM1_TIMER_DB; /*死區下降沿延時計數器*/

//=============EPwm2 Init For INV-N===============// EALLOW; EPwm2Regs.TZCTL.bit.TZA = TZ_FORCE_LO; /*當外部觸發事件發生時,強制EPWMxA為低電平*/ EPwm2Regs.TZCTL.bit.TZB = TZ_FORCE_LO; /*當外部觸發事件發生時,強制EPWMxA為低電平*/ EPwm2Regs.TZFRC.bit.OST = 1; /*強制單次觸發事件產生*/ EDIS;


EPwm2Regs.TBPRD = EPWM1_TIMER_TBPRD; /* Period = 4000*TBCLK counts*/ EPwm2Regs.CMPA.half.CMPA = EPWM1_TIMER_HALFPRD; /*設置CMPA值為EPWM1_TIMER_HALFPRD*/ EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; /*增減計數模式*/ EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE; /*使能TBCTR加載相位寄存器TBPHS中的值*/ EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW; /*TBPHS寄存器工作模式選擇:映射模式*/ EPwm2Regs.TBCTL.bit.PHSDIR = TB_UP; /*相位同步后計數器方向為向上計數*/ EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; /*將輸入同步信號作為同步信號輸出*/ EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; /*高速時鐘分頻 1倍分頻*/ EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1; /*時基時鐘分頻 1倍分頻*/ EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; /*CMPA寄存器工作模式選擇:映射模式*/ EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; /*CMPB寄存器工作模式選擇:映射模式*/ EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; /*當TBCTR=0x0000時,CMPA主寄存器從映射寄存器中加載數據*/ EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; /*當TBCTR=0x0000時,CMPB主寄存器從映射寄存器中加載數據*/ EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR; /*當時間基準計數器的值等于CMPA的值,且正在增計數時,使EPWMxA輸出低電平*/ EPwm2Regs.AQCTLA.bit.CAD = AQ_SET; /*當時間基準計數器的值等于CMPA的值,且正在減計數時,使EPWMxA輸出高電平*/ EPwm2Regs.AQCTLB.bit.CBU = AQ_SET; /*當時間基準計數器的值等于CMPB的值,且正在增計數時,使EPWMxB輸出高電平*/ EPwm2Regs.AQCTLB.bit.CBD = AQ_CLEAR; /*當時間基準計數器的值等于CMPB的值,且正在減計數時,使EPWMxB輸出低電平*/ EPwm2Regs.AQSFRC.bit.RLDCSF = 0; /*當計數器TBCTR=0x0000時加載強制事件*/ EPwm2Regs.AQCSFRC.bit.CSFA = AQ_NO_ACTION; /*軟件強制觸發不動作*/ EPwm2Regs.AQCSFRC.bit.CSFB = AQ_NO_ACTION; EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; /*使能上升沿和下降沿延時信號*/ EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; /*主低模式:EPWMxA和EPWMxB都反轉極性*/ EPwm2Regs.DBCTL.bit.IN_MODE = DBA_ALL; /*EPWMxA作為上升沿和下降沿時的信號源*/ EPwm2Regs.DBRED = EPWM1_TIMER_DB; /*死區上升沿延時計數器*/ EPwm2Regs.DBFED = EPWM1_TIMER_DB; /*死區下降沿延時計數器*/ // 設置EPWM同步相位值 EPwm1Regs.TBPHS.half.TBPHS = 0; /*epwm時基計數器相位=0*/ EPwm2Regs.TBPHS.half.TBPHS = 0; /*epwm時基計數器相位=0*/ // 設置EPWM計數寄存器初值 EPwm1Regs.TBCTR = 0x0000; /*當時基計數器等于零(TBCTR = 0x0000)時,影子寄存器的內容將傳輸到活動寄存器TBPRD(活 動)←TBPRD(影子)*/ EPwm2Regs.TBCTR = 0x0000; EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; /*所有使能的ePWM模塊同步使用TBCLK*/ EDIS;

}

以下是ADC采樣初始化:設置16路AD采樣通道,所有通道采樣觸發為EPWM1_SOCA


/******************************************************************

*函數名:void InitAdcSample(void) *參 數 :無 *返回值:無 *作 用 :初始化AD采樣 *****************************************************************/ void InitAdcSample(void) { EALLOW; AdcRegs.ADCCTL1.bit.ADCENABLE = 1; / 使能ADC,并給ADC上電,寫0無效,寫1使能ADC / AdcRegs.ADCCTL2.bit.CLKDIV2EN = 1; / 當系統時鐘是120M的時候,配置為1,為SYSCLK/4, 當系統時鐘是60M的時候,保持默認值0,為SYSCLK/2 / while(AdcRegs.ADCCTL1.bit.ADCRDY != 1) / ADC 復位完成,當ADCRDY = 1表示復位完成,0表示復位未完成 */ {


} AdcRegs.INTSEL1N2.bit.INT1SEL = 15; /* ADCINT1 EOC 源選擇 EOC15 作為 ADCINT1作為觸發源 */ AdcRegs.INTSEL1N2.bit.INT1E = 0; /* ADCINT1中斷屏蔽 */ AdcRegs.INTSEL1N2.bit.INT1CONT = 0; /* 沒有進一步的中斷脈沖產生直到中斷信號標志位被清除 */ AdcRegs.ADCSOC0CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC0CTL.bit.CHSEL = 0; /* 選擇轉換的輸入通道是ADCINA0 */ AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 0x5; /* SOC0的觸發源是epwm1的ADCSOCA */ AdcRegs.ADCSOC1CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC1CTL.bit.CHSEL = 1; /* 選擇轉換的輸入通道是ADCINA1 */ AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 0x5; /* SOC1的觸發源是epwm1的ADCSOCA */ AdcRegs.ADCSOC2CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC2CTL.bit.CHSEL = 2; /* 選擇轉換的輸入通道是ADCINA2 */ AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 0x5; /* SOC2的觸發源是epwm1的ADCSOCA */ AdcRegs.ADCSOC3CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC3CTL.bit.CHSEL = 3; /* 選擇轉換的輸入通道是ADCINA3 */ AdcRegs.ADCSOC3CTL.bit.TRIGSEL = 0x5; /* SOC3的觸發源是epwm1的ADCSOCA */ AdcRegs.ADCSOC4CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC4CTL.bit.CHSEL = 4; /* 選擇轉換的輸入通道是ADCINA4 */ AdcRegs.ADCSOC4CTL.bit.TRIGSEL = 0x5; /* SOC4的觸發源是epwm1的ADCSOCA */ AdcRegs.ADCSOC5CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC5CTL.bit.CHSEL = 5; /* 選擇轉換的輸入通道是ADCINA5 */ AdcRegs.ADCSOC5CTL.bit.TRIGSEL = 0x5; /* SOC5的觸發源是epwm1的ADCSOCA */ AdcRegs.ADCSOC6CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC6CTL.bit.CHSEL = 6; /* 選擇轉換的輸入通道是ADCINA6 */ AdcRegs.ADCSOC6CTL.bit.TRIGSEL = 0x5; /* SOC6的觸發源是epwm1的ADCSOCA */ AdcRegs.ADCSOC7CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC7CTL.bit.CHSEL = 7; /* 選擇轉換的輸入通道是ADCINA7 */ AdcRegs.ADCSOC7CTL.bit.TRIGSEL = 0x5; /* SOC7的觸發源是epwm1的ADCSOCA */ AdcRegs.ADCSOC8CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC8CTL.bit.CHSEL = 8; /* 選擇轉換的輸入通道是ADCINB0 */ AdcRegs.ADCSOC8CTL.bit.TRIGSEL = 0x5; /* SOC8的觸發源是epwm1的ADCSOCA */ AdcRegs.ADCSOC9CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC9CTL.bit.CHSEL =9; /* 選擇轉換的輸入通道是ADCINB1 */ AdcRegs.ADCSOC9CTL.bit.TRIGSEL = 0x5; /* SOC9的觸發源是epwm1的ADCSOCA */ AdcRegs.ADCSOC10CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC10CTL.bit.CHSEL = 10; /* 選擇轉換的輸入通道是ADCINB2 */ AdcRegs.ADCSOC10CTL.bit.TRIGSEL = 0x5; /* SOC10的觸發源是epwm1的ADCSOCA */ AdcRegs.ADCSOC11CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC11CTL.bit.CHSEL = 11; /* 選擇轉換的輸入通道是ADCINB3 */ AdcRegs.ADCSOC11CTL.bit.TRIGSEL = 0x5; /* SOC11的觸發源是epwm1的ADCSOCA */ AdcRegs.ADCSOC12CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC12CTL.bit.CHSEL = 12; /* 選擇轉換的輸入通道是ADCINB4 */ AdcRegs.ADCSOC12CTL.bit.TRIGSEL = 0x5; /* SOC12的觸發源是epwm1的ADCSOCA */ AdcRegs.ADCSOC13CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC13CTL.bit.CHSEL = 13; /* 選擇轉換的輸入通道是ADCINB5 */ AdcRegs.ADCSOC13CTL.bit.TRIGSEL = 0x5; /* SOC13的觸發源是epwm4的ADCSOCA */ AdcRegs.ADCSOC14CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC14CTL.bit.CHSEL = 14; /* 選擇轉換的輸入通道是ADCINB6 */ AdcRegs.ADCSOC14CTL.bit.TRIGSEL = 0x5; /* SOC14的觸發源是epwm5的ADCSOCA */ AdcRegs.ADCSOC15CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC15CTL.bit.CHSEL = 15; /* 選擇轉換的輸入通道是ADCINB7 */ AdcRegs.ADCSOC15CTL.bit.TRIGSEL = 0x5; /* SOC15的觸發源是epwm6的ADCSOCA */ AdcRegs.ADCINTSOCSEL1.all = 0x0000; /* No ADCInterrupt will trigger SOCx*/ AdcRegs.ADCINTSOCSEL2.all = 0x0000; AdcRegs.SOCPRICTL.bit.SOCPRIORITY = 0x00; /* SOC priority is handled in round robin mode for all channels.*/ AdcRegs.SOCPRICTL.bit.RRPOINTER = 0x0F; /* SOC15是最后一個轉換,SOC0是最高的round robin優先 */ AdcRegs.SOCPRICTL.bit.ONESHOT = 0; /* One shot 模式不使能 */ EDIS;

}

然后配置PWM輸出的GPIO:

``

/******************************************************************

*函數名:void InitGPIO(void)

*參 數 :無

*返回值:無

*作 用 :初始化GPIO

******************************************************************/

void InitGPIO(void)

{

EALLOW;

GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;

GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // GPIO0 = PWM1A-->OPWM1A/GPIO0


GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0;

GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1; // GPIO1 = PWM1B-->OPWM1B/GPIO1

GpioCtrlRegs.GPAPUD.bit.GPIO2 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1; // GPIO2 = PWM2A-->OPWM2A/GPIO2

GpioCtrlRegs.GPAPUD.bit.GPIO3 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 1; // GPIO3 = PWM2B-->OPWM2B/GPIO3

GpioCtrlRegs.GPAPUD.bit.GPIO4 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 1; // GPIO4 = PWM3A-->OPWM3A/GPIO4

GpioCtrlRegs.GPAPUD.bit.GPIO5 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 1; // GPIO5 = PWM3B-->OPWM3B/GPIO5

GpioCtrlRegs.GPAPUD.bit.GPIO6 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 1; // GPIO6 = PWM4A-->OPWM4A/GPIO6

GpioCtrlRegs.GPAPUD.bit.GPIO7 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 1; // GPIO7 = PWM4B-->OPWM4B/GPIO7

GpioCtrlRegs.GPAPUD.bit.GPIO8 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 1; // GPIO8 = PWM5A-->OPWM5A/GPIO8

GpioCtrlRegs.GPAPUD.bit.GPIO9 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO9 = 1; // GPIO9 = PWM5B-->OPWM5B/GPIO9

GpioCtrlRegs.GPAPUD.bit.GPIO10 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 1; // GPIO10 = PWM6A-->OPWM6A/GPIO10

GpioCtrlRegs.GPAPUD.bit.GPIO11 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 1; // GPIO11 = PWM6B-->OPWM6B/GPIO11 EDIS; }

配置好PWM中斷使能

/******************************************************************

*函數名:void EnableInt(void)

*參 數 :無

*返回值:無

*作 用 :使能外設中斷

******************************************************************/

void EnableInt(void)

{

EALLOW; /允許訪問受保護的空間/

PieVectTable.EPWM1_INT = &Epwm1_ISR; /將Epwm1_ISR入口地址賦給EPWM1_INT/

EDIS; /禁止訪問受保護的空間/


IER |= M_INT3; /*使能CPU中斷組3*/

PieCtrlRegs.PIEIER3.bit.INTx1 = 1; /使能PIE3.1的中斷/

// EINT;

}

中斷服務函數:在中斷服務函數中取得AD采樣值

/******************************************************************

*函數名:void INTERRUPT Epwm1_ISR(void)

*參 數:無

*返回值:無

*作 用:中斷服務函數改變pwm死區

******************************************************************/

void INTERRUPT Epwm1_ISR(void)

{

EPwm1Regs.ETCLR.bit.INT = 1;

PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;


IntADResultGet();

}

/************************************************************************************

// IntADResultGet

// 功能描述:AD采樣結果獲取

************************************************************************************/

Uint16 AdcSample[16];

void CODE_SECTION("ramfuncs") IntADResultGet(void)

{

Uint16 iAdRltA0_0, iAdRltA1_0, iAdRltA2_0, iAdRltA3_0, iAdRltA4_0, iAdRltA5_0, iAdRltA6_0, iAdRltA7_0;

Uint16 iAdRltB0_0, iAdRltB1_0, iAdRltB2_0, iAdRltB3_0, iAdRltB4_0, iAdRltB5_0, iAdRltB6_0, iAdRltB7_0;


while(AdcRegs.ADCCTL1.bit.ADCBSY == 1)

{ continue; // 等待AD采樣結束 }

iAdRltA0_0 = AdcResult.ADCRESULT0; iAdRltA1_0 = AdcResult.ADCRESULT1; iAdRltA2_0 = AdcResult.ADCRESULT2; iAdRltA3_0 = AdcResult.ADCRESULT3; iAdRltA4_0 = AdcResult.ADCRESULT4; iAdRltA5_0 = AdcResult.ADCRESULT5; iAdRltA6_0 = AdcResult.ADCRESULT6; iAdRltA7_0 = AdcResult.ADCRESULT7; iAdRltB0_0 = AdcResult.ADCRESULT8; iAdRltB1_0 = AdcResult.ADCRESULT9; iAdRltB2_0 = AdcResult.ADCRESULT10; iAdRltB3_0 = AdcResult.ADCRESULT11; iAdRltB4_0 = AdcResult.ADCRESULT12; iAdRltB5_0 = AdcResult.ADCRESULT13; iAdRltB6_0 = AdcResult.ADCRESULT14; iAdRltB7_0 = AdcResult.ADCRESULT15;

AdcSample[0] = iAdRltA0_0; AdcSample[1] = iAdRltA1_0; AdcSample[2] = iAdRltA2_0; AdcSample[3] = iAdRltA3_0; AdcSample[4] = iAdRltA4_0; AdcSample[5] = iAdRltA5_0; AdcSample[6] = iAdRltA6_0; AdcSample[7] = iAdRltA7_0;

AdcSample[8] = iAdRltB0_0; AdcSample[9] = iAdRltB1_0; AdcSample[10] = iAdRltB2_0; AdcSample[11] = iAdRltB3_0; AdcSample[12] = iAdRltB4_0; AdcSample[13] = iAdRltB5_0; AdcSample[14] = iAdRltB6_0; AdcSample[15] = iAdRltB7_0; }

主函數中打開總中斷和看門狗喂狗等


int main(void)

{ SystemInit(); // 片上外設初始化


EnableDog(); // 使能看門狗 EPwm1Regs.ETCLR.bit.INT = 1; // 使能中斷 EPwm1Regs.ETSEL.bit.INTEN = 1; EINT; while(1) { ServiceDog(); // 看門狗喂狗 SysTimeBase(); // 系統時基 StateLEDCtrl(); // 系統狀態燈控制 } return 0;

}

仿真讀取的AD采樣值:

image.png

只有第ADC_A4通道接著3.3V,所以它的采樣值為4096,其他都為0

image.png

另外說明一個小問題,在仿真時是沒辦法實時看變量的,IDE不支持,這個很影響調試

image.png

同時,手冊上說的參考2.5.8,實際是沒有這個章節的

image.png

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 中科昊芯
    +關注

    關注

    5

    文章

    80

    瀏覽量

    5184
  • 開發板試用
    +關注

    關注

    3

    文章

    301

    瀏覽量

    2109
收藏 人收藏

    評論

    相關推薦

    開發板/主板Android系統APK簽名文件使用方法,實用干貨

    微主板/開發板Android系統,APK系統簽名文件使用方法
    的頭像 發表于 12-26 09:43 ?259次閱讀
    瑞<b class='flag-5'>芯</b>微<b class='flag-5'>開發板</b>/主板Android系統APK簽名文件使用方法,實用干貨

    有獎丨米爾 全志T536開發板免費試用

    米爾與全志合作發布的新品基于全志T536應用處理器的MYD-LT536-GK開發板免費試用活動來啦~~米爾提供了3塊價值750元的MYD-LT536-GK開發板發起試用活動您不僅可以免
    的頭像 發表于 12-26 08:05 ?130次閱讀
    有獎丨米爾 全志T536<b class='flag-5'>開發板</b>免費<b class='flag-5'>試用</b>

    微主板/開發板Linux系統播放音頻方法,觸覺智能RK3562開發板演示

    本文介紹瑞微方案主板/開發板Linux系統播放音頻的方法,觸覺智能RK3562開發板演示,通用RK3566、RK3568、RK3588等
    的頭像 發表于 12-13 11:40 ?243次閱讀
    瑞<b class='flag-5'>芯</b>微主板/<b class='flag-5'>開發板</b>Linux系統播放音頻方法,觸覺智能RK3562<b class='flag-5'>開發板</b>演示

    追加名額丨米爾瑞微RK3576開發板有獎試用

    米爾與瑞微合作發布的新品基于瑞微RK3576應用處理器的MYD-LR3576開發板免費試用活動加碼啦~~米爾追加了2塊價值849元的MYD-LR3576
    的頭像 發表于 11-22 01:00 ?205次閱讀
    追加名額丨米爾瑞<b class='flag-5'>芯</b>微RK3576<b class='flag-5'>開發板</b>有獎<b class='flag-5'>試用</b>

    【RA8D1試用活動】RA8D1B-CPKCOR開發板移植linux

    【RA8D1試用活動】RA8D1B-CPKCOR開發板移植linux
    的頭像 發表于 11-16 01:02 ?256次閱讀
    【RA8D1<b class='flag-5'>試用</b>活動】RA8D1B-CPKCOR<b class='flag-5'>開發板</b>移植linux

    有獎丨米爾 瑞微RK3576開發板免費試用

    米爾與瑞微合作發布的新品基于瑞微RK3576應用處理器的MYD-LR3576開發板免費試用活動來啦~~米爾提供了7塊價值849元的MYD-LR3576
    的頭像 發表于 11-12 01:00 ?343次閱讀
    有獎丨米爾 瑞<b class='flag-5'>芯</b>微RK3576<b class='flag-5'>開發板</b>免費<b class='flag-5'>試用</b>

    有獎試用!!RA-Eco-RA4E2-64PIN-V1.0開發板試用活動開始報名

    有獎試用!!RA-Eco-RA4E2-64PIN-V1.0開發板試用活動開始報名
    的頭像 發表于 11-09 01:02 ?274次閱讀
    有獎<b class='flag-5'>試用</b>!!RA-Eco-RA4E2-64PIN-V1.0<b class='flag-5'>開發板</b><b class='flag-5'>試用</b>活動開始報名

    【龍芯2K0300蜂鳥試用】龍芯2K0300蜂鳥開發板引腳定義及體驗開發板

    /6 通道可以獨立采樣, 也可以作為差分采樣 9ADC 通道 33/7 通道可以獨立采樣, 也可以作為差分采樣 10
    發表于 09-19 18:54

    用4型EPWM實現三電平逆變器的延時保護

    電子發燒友網站提供《用4型EPWM實現三電平逆變器的延時保護.pdf》資料免費下載
    發表于 09-14 10:02 ?0次下載
    用4型<b class='flag-5'>EPWM</b>實現三電平<b class='flag-5'>逆變器</b>的延時保護

    喜報!中科榮獲國家級專精特新“小巨人”企業稱號

    喜訊!近日,國家工業和信息化部門正式揭曉了第六批國家專精特新“小巨人”企業名單,中科憑借卓越的技術實力和創新能力,榮獲了專精特新“小巨人”企業殊榮。這一榮譽不僅是對中科
    的頭像 發表于 09-14 08:00 ?684次閱讀
    喜報!<b class='flag-5'>中科</b><b class='flag-5'>昊</b><b class='flag-5'>芯</b>榮獲國家級專精特新“小巨人”企業稱號

    關于ADC采樣的問題

    請教一下,我在使用28035芯片時,利用epwm觸發ADC采樣,但是發現改變epwm周期值改變不了ADC頻率,之后將TBCTL.BIT.PH
    發表于 08-28 09:16

    點擊參與米爾NXP i.MX 93開發板有獎試用

    米爾與NXP合作發布的新品基于NXPi.MX93應用處理器的MYD-LMX9X開發板免費試用活動來啦~~米爾提供了3塊價值678元的MYD-LMX9X開發板發起試用活動您不僅可以免費體
    的頭像 發表于 06-13 08:02 ?559次閱讀
    點擊參與米爾NXP i.MX 93<b class='flag-5'>開發板</b>有獎<b class='flag-5'>試用</b>

    免費!NXP i.MX 93開發板有獎試用

    米爾與NXP合作發布的新品基于NXPi.MX93應用處理器的MYD-LMX9X開發板免費試用活動來啦~~米爾提供了2塊價值678
    的頭像 發表于 05-23 08:01 ?742次閱讀
    免費!NXP i.MX 93<b class='flag-5'>開發板</b>有獎<b class='flag-5'>試用</b>

    fpga開發板是什么?fpga開發板有哪些?

    FPGA開發板是一種基于FPGA(現場可編程門陣列)技術的開發平臺,它允許工程師通過編程來定義和配置FPGA芯片上的邏輯電路,以實現各種數字電路和邏輯功能。FPGA開發板通常包括FPG
    的頭像 發表于 03-14 18:20 ?2052次閱讀

    fpga開發板與linux開發板區別

    (Field-Programmable Gate Array)是一種可編程邏輯器件,它可以通過編程改變硬件邏輯電路的功能和結構。FPGA采用了可編程的門極,可以根據需要重新配置內部電路,從而實現不同的功能和邏輯關系。而Linux開發板則是一種嵌入式計算機平臺,其核心是Li
    的頭像 發表于 02-01 17:09 ?2293次閱讀
    主站蜘蛛池模板: 亚洲 日韩 色 图网站| 国产亚洲精品久久久久久一区二区 | 一攻多受h嗯啊巨肉bl巨污| 秋霞电影院兔费理论84MB| 久久6699精品国产人妻| 国产成人久久婷婷精品流白浆| 97国产精品视频在线观看| 亚洲 在线 日韩 欧美| 日本68xxxxxxxxx老师| 快播苍井空| 精品无码乱码AV| 男人桶爽女人| 超碰视频在线观看| 语文老师扒开胸罩喂我奶| 性XXXXX搡XXXXX搡景甜| 人妻夜夜爽99麻豆AV| 蜜芽TV影院在线视频| 久久99精品国产99久久6男男| 国产精品禁18久久久夂久| xxxx老妇性hdbbbb| 999久久国产精品免费人妻| 亚洲伊人色| 亚洲日韩成人| 亚洲国产成人精品久久久久| 色琪琪丁香婷婷综合久久| 欧美伦理片第7页| 免费国产福利| 老熟风间由美AV在线一区二区| 紧缚束缚调教丨vk| 果冻传媒在线观看进入窗口| 国产伦精品一区二区三区精品| 国产 日韩 欧美 综合 激情| 爱做久久久久久| VIDEOSGGRATIS欧美另类| 99热这里只有的精品| 99精品视频在线观看免费播放 | 在线视频网站www色| 亚洲野狼综合网站| 野花日本高清在线观看免费吗| 亚洲国产三级在线观看| 美国69xxxx59|