一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內(nèi)不再提示

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

開發(fā)板試用精選 ? 來源:開發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-11-18 16:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

具體PWM初始化代碼如下:


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

*函數(shù)名:void InitEPWM(void) *參 數(shù) :無 *返回值:無 *作 用 :初始化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; /*當外部觸發(fā)事件發(fā)生時,強制EPWMxA為低電平*/ EPwm1Regs.TZCTL.bit.TZB = TZ_FORCE_LO; /*當外部觸發(fā)事件發(fā)生時,強制EPWMxA為低電平*/ EPwm1Regs.TZFRC.bit.OST = 1; /*強制單次觸發(fā)事件產(chǎn)生*/ 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; /*增減計數(shù)模式*/ EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; /*禁止TBCTR加載相位寄存器TBPHS中的值*/ EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; /*TBPHS寄存器工作模式選擇:映射模式*/ EPwm1Regs.TBCTL.bit.PHSDIR = TB_UP; /*相位同步后計數(shù)器方向為向上計數(shù)*/ EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; /*計數(shù)器CTR = Zero時發(fā)出同步信號*/ 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主寄存器從映射寄存器中加載數(shù)據(jù)*/ EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; /*當TBCTR=0x0000時,CMPB主寄存器從映射寄存器中加載數(shù)據(jù)*/ EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR; /*當時間基準計數(shù)器的值等于CMPA的值,且正在增計數(shù)時,使EPWMxA輸出低電平*/ EPwm1Regs.AQCTLA.bit.CAD = AQ_SET; /*當時間基準計數(shù)器的值等于CMPA的值,且正在減計數(shù)時,使EPWMxA輸出高電平*/ EPwm1Regs.AQCTLB.bit.CBU = AQ_SET; /*當時間基準計數(shù)器的值等于CMPB的值,且正在增計數(shù)時,使EPWMxB輸出高電平*/ EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR; /*當時間基準計數(shù)器的值等于CMPB的值,且正在減計數(shù)時,使EPWMxB輸出低電平*/ EPwm1Regs.ETSEL.bit.SOCASEL = ET_CTR_ZERO; /*選擇EPWMx_SOCA產(chǎn)生的條件:TBCTR=0x0000時產(chǎn)生*/ EPwm1Regs.ETPS.bit.SOCAPRD = ET_1ST; /*ePWM觸發(fā)采樣(EPWMx_SOCA)周期選擇:每發(fā)生1次事件產(chǎn)生中斷信號EPWMx_SOCA*/ EPwm1Regs.ETSEL.bit.SOCAEN = 1; /*使能產(chǎn)生觸發(fā)采樣信號EPWMx_SOCA*/ EPwm1Regs.CMPB = EPWM1_CMPB_INT_CNT; /*設置CMPB值為EPWM1_CMPB_INT_CNT*/ EPwm1Regs.ETSEL.bit.INTSEL = ET_CTRU_CMPB; /*選擇EPWMx_INT產(chǎn)生的條件:TBCTR=CMPB時產(chǎn)生*/ EPwm1Regs.ETPS.bit.INTPRD = ET_1ST; /*ePWM中斷(EPWMx_INT)周期選擇:每發(fā)生1次事件產(chǎn)生中斷信號EPWMx_INT*/ EPwm1Regs.ETSEL.bit.INTEN = 0; /*使能產(chǎn)生中斷信號EPWMx_INT*/ EPwm1Regs.AQSFRC.bit.RLDCSF = 0; /*當計數(shù)器TBCTR=0x0000時加載強制事件*/ EPwm1Regs.AQCSFRC.bit.CSFA = AQ_NO_ACTION; /*軟件強制觸發(fā)不動作*/ EPwm1Regs.AQCSFRC.bit.CSFB = AQ_NO_ACTION; EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; /*使能上升沿和下降沿延時信號*/ EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; /*主低模式:EPWMxA和EPWMxB都反轉(zhuǎn)極性*/ EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL; /*EPWMxA作為上升沿和下降沿時的信號源*/ EPwm1Regs.DBRED = EPWM1_TIMER_DB; /*死區(qū)上升沿延時計數(shù)器*/ EPwm1Regs.DBFED = EPWM1_TIMER_DB; /*死區(qū)下降沿延時計數(shù)器*/

//=============EPwm2 Init For INV-N===============// EALLOW; EPwm2Regs.TZCTL.bit.TZA = TZ_FORCE_LO; /*當外部觸發(fā)事件發(fā)生時,強制EPWMxA為低電平*/ EPwm2Regs.TZCTL.bit.TZB = TZ_FORCE_LO; /*當外部觸發(fā)事件發(fā)生時,強制EPWMxA為低電平*/ EPwm2Regs.TZFRC.bit.OST = 1; /*強制單次觸發(fā)事件產(chǎn)生*/ 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; /*增減計數(shù)模式*/ EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE; /*使能TBCTR加載相位寄存器TBPHS中的值*/ EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW; /*TBPHS寄存器工作模式選擇:映射模式*/ EPwm2Regs.TBCTL.bit.PHSDIR = TB_UP; /*相位同步后計數(shù)器方向為向上計數(shù)*/ 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主寄存器從映射寄存器中加載數(shù)據(jù)*/ EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; /*當TBCTR=0x0000時,CMPB主寄存器從映射寄存器中加載數(shù)據(jù)*/ EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR; /*當時間基準計數(shù)器的值等于CMPA的值,且正在增計數(shù)時,使EPWMxA輸出低電平*/ EPwm2Regs.AQCTLA.bit.CAD = AQ_SET; /*當時間基準計數(shù)器的值等于CMPA的值,且正在減計數(shù)時,使EPWMxA輸出高電平*/ EPwm2Regs.AQCTLB.bit.CBU = AQ_SET; /*當時間基準計數(shù)器的值等于CMPB的值,且正在增計數(shù)時,使EPWMxB輸出高電平*/ EPwm2Regs.AQCTLB.bit.CBD = AQ_CLEAR; /*當時間基準計數(shù)器的值等于CMPB的值,且正在減計數(shù)時,使EPWMxB輸出低電平*/ EPwm2Regs.AQSFRC.bit.RLDCSF = 0; /*當計數(shù)器TBCTR=0x0000時加載強制事件*/ EPwm2Regs.AQCSFRC.bit.CSFA = AQ_NO_ACTION; /*軟件強制觸發(fā)不動作*/ EPwm2Regs.AQCSFRC.bit.CSFB = AQ_NO_ACTION; EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; /*使能上升沿和下降沿延時信號*/ EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; /*主低模式:EPWMxA和EPWMxB都反轉(zhuǎn)極性*/ EPwm2Regs.DBCTL.bit.IN_MODE = DBA_ALL; /*EPWMxA作為上升沿和下降沿時的信號源*/ EPwm2Regs.DBRED = EPWM1_TIMER_DB; /*死區(qū)上升沿延時計數(shù)器*/ EPwm2Regs.DBFED = EPWM1_TIMER_DB; /*死區(qū)下降沿延時計數(shù)器*/ // 設置EPWM同步相位值 EPwm1Regs.TBPHS.half.TBPHS = 0; /*epwm時基計數(shù)器相位=0*/ EPwm2Regs.TBPHS.half.TBPHS = 0; /*epwm時基計數(shù)器相位=0*/ // 設置EPWM計數(shù)寄存器初值 EPwm1Regs.TBCTR = 0x0000; /*當時基計數(shù)器等于零(TBCTR = 0x0000)時,影子寄存器的內(nèi)容將傳輸?shù)交顒蛹拇嫫鱐BPRD(活 動)←TBPRD(影子)*/ EPwm2Regs.TBCTR = 0x0000; EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; /*所有使能的ePWM模塊同步使用TBCLK*/ EDIS;

}

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


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

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


} AdcRegs.INTSEL1N2.bit.INT1SEL = 15; /* ADCINT1 EOC 源選擇 EOC15 作為 ADCINT1作為觸發(fā)源 */ AdcRegs.INTSEL1N2.bit.INT1E = 0; /* ADCINT1中斷屏蔽 */ AdcRegs.INTSEL1N2.bit.INT1CONT = 0; /* 沒有進一步的中斷脈沖產(chǎn)生直到中斷信號標志位被清除 */ AdcRegs.ADCSOC0CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC0CTL.bit.CHSEL = 0; /* 選擇轉(zhuǎn)換的輸入通道是ADCINA0 */ AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 0x5; /* SOC0的觸發(fā)源是epwm1的ADCSOCA */ AdcRegs.ADCSOC1CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC1CTL.bit.CHSEL = 1; /* 選擇轉(zhuǎn)換的輸入通道是ADCINA1 */ AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 0x5; /* SOC1的觸發(fā)源是epwm1的ADCSOCA */ AdcRegs.ADCSOC2CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC2CTL.bit.CHSEL = 2; /* 選擇轉(zhuǎn)換的輸入通道是ADCINA2 */ AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 0x5; /* SOC2的觸發(fā)源是epwm1的ADCSOCA */ AdcRegs.ADCSOC3CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC3CTL.bit.CHSEL = 3; /* 選擇轉(zhuǎn)換的輸入通道是ADCINA3 */ AdcRegs.ADCSOC3CTL.bit.TRIGSEL = 0x5; /* SOC3的觸發(fā)源是epwm1的ADCSOCA */ AdcRegs.ADCSOC4CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC4CTL.bit.CHSEL = 4; /* 選擇轉(zhuǎn)換的輸入通道是ADCINA4 */ AdcRegs.ADCSOC4CTL.bit.TRIGSEL = 0x5; /* SOC4的觸發(fā)源是epwm1的ADCSOCA */ AdcRegs.ADCSOC5CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC5CTL.bit.CHSEL = 5; /* 選擇轉(zhuǎn)換的輸入通道是ADCINA5 */ AdcRegs.ADCSOC5CTL.bit.TRIGSEL = 0x5; /* SOC5的觸發(fā)源是epwm1的ADCSOCA */ AdcRegs.ADCSOC6CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC6CTL.bit.CHSEL = 6; /* 選擇轉(zhuǎn)換的輸入通道是ADCINA6 */ AdcRegs.ADCSOC6CTL.bit.TRIGSEL = 0x5; /* SOC6的觸發(fā)源是epwm1的ADCSOCA */ AdcRegs.ADCSOC7CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC7CTL.bit.CHSEL = 7; /* 選擇轉(zhuǎn)換的輸入通道是ADCINA7 */ AdcRegs.ADCSOC7CTL.bit.TRIGSEL = 0x5; /* SOC7的觸發(fā)源是epwm1的ADCSOCA */ AdcRegs.ADCSOC8CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC8CTL.bit.CHSEL = 8; /* 選擇轉(zhuǎn)換的輸入通道是ADCINB0 */ AdcRegs.ADCSOC8CTL.bit.TRIGSEL = 0x5; /* SOC8的觸發(fā)源是epwm1的ADCSOCA */ AdcRegs.ADCSOC9CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC9CTL.bit.CHSEL =9; /* 選擇轉(zhuǎn)換的輸入通道是ADCINB1 */ AdcRegs.ADCSOC9CTL.bit.TRIGSEL = 0x5; /* SOC9的觸發(fā)源是epwm1的ADCSOCA */ AdcRegs.ADCSOC10CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC10CTL.bit.CHSEL = 10; /* 選擇轉(zhuǎn)換的輸入通道是ADCINB2 */ AdcRegs.ADCSOC10CTL.bit.TRIGSEL = 0x5; /* SOC10的觸發(fā)源是epwm1的ADCSOCA */ AdcRegs.ADCSOC11CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC11CTL.bit.CHSEL = 11; /* 選擇轉(zhuǎn)換的輸入通道是ADCINB3 */ AdcRegs.ADCSOC11CTL.bit.TRIGSEL = 0x5; /* SOC11的觸發(fā)源是epwm1的ADCSOCA */ AdcRegs.ADCSOC12CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC12CTL.bit.CHSEL = 12; /* 選擇轉(zhuǎn)換的輸入通道是ADCINB4 */ AdcRegs.ADCSOC12CTL.bit.TRIGSEL = 0x5; /* SOC12的觸發(fā)源是epwm1的ADCSOCA */ AdcRegs.ADCSOC13CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC13CTL.bit.CHSEL = 13; /* 選擇轉(zhuǎn)換的輸入通道是ADCINB5 */ AdcRegs.ADCSOC13CTL.bit.TRIGSEL = 0x5; /* SOC13的觸發(fā)源是epwm4的ADCSOCA */ AdcRegs.ADCSOC14CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC14CTL.bit.CHSEL = 14; /* 選擇轉(zhuǎn)換的輸入通道是ADCINB6 */ AdcRegs.ADCSOC14CTL.bit.TRIGSEL = 0x5; /* SOC14的觸發(fā)源是epwm5的ADCSOCA */ AdcRegs.ADCSOC15CTL.bit.ACQPS = 6; /* 窗口的采樣周期是2n+6個clock cycles */ AdcRegs.ADCSOC15CTL.bit.CHSEL = 15; /* 選擇轉(zhuǎn)換的輸入通道是ADCINB7 */ AdcRegs.ADCSOC15CTL.bit.TRIGSEL = 0x5; /* SOC15的觸發(fā)源是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是最后一個轉(zhuǎn)換,SOC0是最高的round robin優(yōu)先 */ AdcRegs.SOCPRICTL.bit.ONESHOT = 0; /* One shot 模式不使能 */ EDIS;

}

然后配置PWM輸出的GPIO:

``

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

*函數(shù)名:void InitGPIO(void)

*參 數(shù) :無

*返回值:無

*作 用 :初始化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中斷使能

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

*函數(shù)名:void EnableInt(void)

*參 數(shù) :無

*返回值:無

*作 用 :使能外設中斷

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

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;

}

中斷服務函數(shù):在中斷服務函數(shù)中取得AD采樣值

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

*函數(shù)名:void INTERRUPT Epwm1_ISR(void)

*參 數(shù):無

*返回值:無

*作 用:中斷服務函數(shù)改變pwm死區(qū)

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

void INTERRUPT Epwm1_ISR(void)

{

EPwm1Regs.ETCLR.bit.INT = 1;

PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;


IntADResultGet();

}

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

// IntADResultGet

// 功能描述:AD采樣結(jié)果獲取

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

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采樣結(jié)束 }

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

主函數(shù)中打開總中斷和看門狗喂狗等


int main(void)

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


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

}

仿真讀取的AD采樣值:

image.png

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

image.png

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

image.png

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

image.png

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

    關(guān)注

    5

    文章

    83

    瀏覽量

    5527
  • 開發(fā)板試用
    +關(guān)注

    關(guān)注

    3

    文章

    302

    瀏覽量

    2400
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    中科Core_DSC280025C開發(fā)板試用體驗】+epwm周期性啟動光照傳感器工程

    Core_DSC280025C核心使用了HXS320F28025CRISC-V DSP芯片,該芯片集成了吳自主研發(fā)的H28x內(nèi)核。核
    發(fā)表于 07-11 20:55

    有獎丨米爾 瑞微RK3506開發(fā)板免費試用來啦!

    米爾與瑞微合作發(fā)布的新品基于瑞微RK3506應用處理器的MYD-YR3506開發(fā)板免費試用名額增加啦
    的頭像 發(fā)表于 07-10 08:03 ?93次閱讀
    有獎丨米爾 瑞<b class='flag-5'>芯</b>微RK3506<b class='flag-5'>開發(fā)板</b>免費<b class='flag-5'>試用</b>來啦!

    中科Core_DSC280025C開發(fā)板試用體驗】+2.RAM工程與FLASH工程對比

    前言 大家好,非常感謝電子發(fā)燒友與中科提供的DSC280025C開發(fā)板,這是一款DSP的開發(fā)板
    發(fā)表于 07-04 10:37

    中科Core_DSC280025C開發(fā)板試用體驗】+1.開箱之浮點計算對比

    中科Core_DSC280025C開發(fā)板試用體驗】+1.開箱之浮點計算對比 前言 大家好,
    發(fā)表于 06-29 10:01

    AioneMotor_DSC28034_L3F驅(qū)控一體現(xiàn)貨庫存

    AioneMotor_DSC28034_L3F驅(qū)控一體中科新推出的性能卓越電機驅(qū)控一體
    發(fā)表于 06-27 09:07

    有獎丨米爾 瑞微RK3506開發(fā)板免費試用

    米爾與瑞微合作發(fā)布的新品基于瑞微RK3506應用處理器的MYD-YR3506開發(fā)板免費試用名額來啦~~米爾提供了3塊價值299元的MYD-YR3506
    的頭像 發(fā)表于 06-19 08:04 ?337次閱讀
    有獎丨米爾 瑞<b class='flag-5'>芯</b>微RK3506<b class='flag-5'>開發(fā)板</b>免費<b class='flag-5'>試用</b>

    有獎丨米爾 瑞微RK3562開發(fā)板免費試用新增名額!

    米爾與瑞微合作發(fā)布的新品基于瑞微RK3562應用處理器的MYD-YR3562開發(fā)板免費試用名額增加
    的頭像 發(fā)表于 06-13 08:04 ?369次閱讀
    有獎丨米爾 瑞<b class='flag-5'>芯</b>微RK3562<b class='flag-5'>開發(fā)板</b>免費<b class='flag-5'>試用</b>新增名額!

    性能強悍!合眾HZ-RK3568開發(fā)板試用體驗

    月19日 ? 評測數(shù)量: 10塊 ? 更多熱點文章閱讀 基于平頭哥TH1520芯片,潤開鴻HH-SCDAYU800A開發(fā)板免費試用 RISC-V開發(fā)板深度評測!頂級開發(fā)板免費
    的頭像 發(fā)表于 06-05 16:30 ?509次閱讀
    性能強悍!合眾HZ-RK3568<b class='flag-5'>開發(fā)板</b><b class='flag-5'>試用</b>體驗

    中科Core_DSC280025C開發(fā)板免費試用

    Core_DSC280025C核心使用了HXS320F28025C RISC-V ? DSP芯片,該芯片集成了吳自主研發(fā)的H28x內(nèi)
    的頭像 發(fā)表于 06-03 19:30 ?252次閱讀
    <b class='flag-5'>中科</b><b class='flag-5'>昊</b><b class='flag-5'>芯</b>Core_<b class='flag-5'>DSC</b>280025C<b class='flag-5'>開發(fā)板</b>免費<b class='flag-5'>試用</b>

    【評測試用】合眾HZ-T536開發(fā)板免費試用體驗

    【評測試用】合眾HZ-T536開發(fā)板免費試用體驗
    的頭像 發(fā)表于 05-27 08:05 ?211次閱讀
    【評測<b class='flag-5'>試用</b>】合眾HZ-T536<b class='flag-5'>開發(fā)板</b>免費<b class='flag-5'>試用</b>體驗

    2025電子發(fā)燒友開發(fā)板評測大賽開啟!三大賽道火力全開,頂級開發(fā)板等你來戰(zhàn)!

    開發(fā)板免費試用https://bbs.elecfans.com/try_CF5010RBT60.html 【RISC-V專題】中科Cor
    發(fā)表于 05-15 15:09

    中科DSP產(chǎn)品及公司信息

    庫和驅(qū)動庫,幫助用戶降低遷移成本,縮短開發(fā)周期。同時,公司還推出了多種開發(fā)板和核心,如Core_DSC28027和Start_DSC28034
    發(fā)表于 04-07 09:16

    有獎丨米爾 瑞微YR3562開發(fā)板免費試用

    米爾與瑞微合作發(fā)布的新品基于瑞微RK3562應用處理器的MYD-YR3562開發(fā)板免費試用活動來啦~~米爾提供了3塊價值599元的MYD-YR3562
    的頭像 發(fā)表于 03-20 08:05 ?513次閱讀
    有獎丨米爾 瑞<b class='flag-5'>芯</b>微YR3562<b class='flag-5'>開發(fā)板</b>免費<b class='flag-5'>試用</b>

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

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

    有獎丨米爾 瑞微RK3576開發(fā)板免費試用

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