本文來源電子發(fā)燒友社區(qū),作者:yjp, 帖子地址:https://bbs.elecfans.com/jishu_2293870_1_1.html
ADC例子如下
首先配置ADC,對ADC進(jìn)行初始化。
作 用:配置ADC**********************/void ADC_Init(void){ EALLOW; AdcRegs.ADCCTL1.bit.ADCREFSEL = 0; /NT脈沖產(chǎn)生在ADC結(jié)果鎖定到其結(jié)果寄存器之前發(fā)生一個周期/ AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1; /中斷選擇3寄存器/ AdcRegs.INTSEL3N4.bit.INT3E = 1; /每當(dāng)產(chǎn)生EOC脈沖時,都會產(chǎn)生附加脈沖,而不管是否清除了標(biāo)記位/ AdcRegs.INTSEL3N4.bit.INT3CONT = 0; /EOC6是ADCINT3的觸發(fā)器*/ AdcRegs.INTSEL3N4.bit.INT3SEL = 6;AdcRegs.ADCSAMPLEMODE.all = 1;
?
/*將SOC0設(shè)置為樣本A0*/
AdcRegs.ADCSOC0CTL.bit.CHSEL = 0;
/*將SOC1設(shè)置為樣本A1*/
AdcRegs.ADCSOC1CTL.bit.CHSEL = 1;
/*將SOC2設(shè)置為樣本A2*/
AdcRegs.ADCSOC2CTL.bit.CHSEL = 2;
/*將SOC3設(shè)置為樣本A3*/
AdcRegs.ADCSOC3CTL.bit.CHSEL = 3;
/*將SOC4設(shè)置為樣本A4*/
AdcRegs.ADCSOC4CTL.bit.CHSEL = 4;
/*將SOC5設(shè)置為樣本A6*/
AdcRegs.ADCSOC5CTL.bit.CHSEL = 6;
/*將SOC6設(shè)置為樣本A7*/
AdcRegs.ADCSOC6CTL.bit.CHSEL = 7;
/*將SOC7設(shè)置為樣本B1*/
AdcRegs.ADCSOC7CTL.bit.CHSEL = 9;
/*將SOC8設(shè)置為樣本B2*/
AdcRegs.ADCSOC8CTL.bit.CHSEL = 10;
/*將SOC9設(shè)置為樣本B3*/
AdcRegs.ADCSOC9CTL.bit.CHSEL = 11;
/*將SOC10設(shè)置為樣本B4*/
AdcRegs.ADCSOC10CTL.bit.CHSEL = 12;
/*將SOC11設(shè)置為樣本B6*/
AdcRegs.ADCSOC11CTL.bit.CHSEL = 14;
/*將SOC12設(shè)置為樣本B7*/
AdcRegs.ADCSOC12CTL.bit.CHSEL = 15;
?
/*SOCx觸發(fā)源選擇:ADCTRIG5-ePWM1,ADCSOCA*/
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC3CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC4CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC5CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC6CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC7CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC8CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC9CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC10CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC11CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC12CTL.bit.TRIGSEL = 0x05;
?
/*采樣窗口長達(dá)6個周期(2n+6個時鐘周期)*/
AdcRegs.ADCSOC0CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC1CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC2CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC3CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC4CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC5CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC6CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC7CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC8CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC9CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC10CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC11CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC12CTL.bit.ACQPS = 0;
?
EDIS;
}
ADC的中斷服務(wù)函數(shù)如下Uint32 adcVal[16];/***********************函數(shù)名:void INTERRUPT adc_isr() *參 數(shù):無 *返回值:無 *作 用:adc中斷服務(wù)函數(shù)**********************/void INTERRUPT adc_isr(){ while(AdcRegs.ADCCTL1.bit.ADCBSY == 1) { }adcVal[0] = AdcResult.ADCRESULT0;
adcVal[1] = AdcResult.ADCRESULT1;
adcVal[2] = AdcResult.ADCRESULT2;
adcVal[3] = AdcResult.ADCRESULT3;
adcVal[4] = AdcResult.ADCRESULT4;
adcVal[5] = AdcResult.ADCRESULT5;
adcVal[6] = AdcResult.ADCRESULT6;
?
adcVal[7] = AdcResult.ADCRESULT7;
adcVal[8] = AdcResult.ADCRESULT8;
adcVal[9] = AdcResult.ADCRESULT9;
adcVal[10] = AdcResult.ADCRESULT10;
adcVal[11] = AdcResult.ADCRESULT11;
adcVal[12] = AdcResult.ADCRESULT12;
?
EALLOW;
/*清除ADCINTFLG寄存器中各自的標(biāo)志位*/
AdcRegs.ADCINTFLGCLR.bit.ADCINT3 = 0x1;
/* 清除ADCINTOVF寄存器中相應(yīng)的溢出位*/
AdcRegs.ADCINTOVFCLR.bit.ADCINT3 = 0x1;
/* 中斷應(yīng)答*/
PieCtrlRegs.PIEACK.all = PIEACK_GROUP10;
EDIS;}
ADC例子如下
首先配置ADC,對ADC進(jìn)行初始化。
作 用:配置ADC**********************/void ADC_Init(void){ EALLOW; AdcRegs.ADCCTL1.bit.ADCREFSEL = 0; /NT脈沖產(chǎn)生在ADC結(jié)果鎖定到其結(jié)果寄存器之前發(fā)生一個周期/ AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1; /中斷選擇3寄存器/ AdcRegs.INTSEL3N4.bit.INT3E = 1; /每當(dāng)產(chǎn)生EOC脈沖時,都會產(chǎn)生附加脈沖,而不管是否清除了標(biāo)記位/ AdcRegs.INTSEL3N4.bit.INT3CONT = 0; /EOC6是ADCINT3的觸發(fā)器*/ AdcRegs.INTSEL3N4.bit.INT3SEL = 6;AdcRegs.ADCSAMPLEMODE.all = 1;
?
/*將SOC0設(shè)置為樣本A0*/
AdcRegs.ADCSOC0CTL.bit.CHSEL = 0;
/*將SOC1設(shè)置為樣本A1*/
AdcRegs.ADCSOC1CTL.bit.CHSEL = 1;
/*將SOC2設(shè)置為樣本A2*/
AdcRegs.ADCSOC2CTL.bit.CHSEL = 2;
/*將SOC3設(shè)置為樣本A3*/
AdcRegs.ADCSOC3CTL.bit.CHSEL = 3;
/*將SOC4設(shè)置為樣本A4*/
AdcRegs.ADCSOC4CTL.bit.CHSEL = 4;
/*將SOC5設(shè)置為樣本A6*/
AdcRegs.ADCSOC5CTL.bit.CHSEL = 6;
/*將SOC6設(shè)置為樣本A7*/
AdcRegs.ADCSOC6CTL.bit.CHSEL = 7;
/*將SOC7設(shè)置為樣本B1*/
AdcRegs.ADCSOC7CTL.bit.CHSEL = 9;
/*將SOC8設(shè)置為樣本B2*/
AdcRegs.ADCSOC8CTL.bit.CHSEL = 10;
/*將SOC9設(shè)置為樣本B3*/
AdcRegs.ADCSOC9CTL.bit.CHSEL = 11;
/*將SOC10設(shè)置為樣本B4*/
AdcRegs.ADCSOC10CTL.bit.CHSEL = 12;
/*將SOC11設(shè)置為樣本B6*/
AdcRegs.ADCSOC11CTL.bit.CHSEL = 14;
/*將SOC12設(shè)置為樣本B7*/
AdcRegs.ADCSOC12CTL.bit.CHSEL = 15;
?
/*SOCx觸發(fā)源選擇:ADCTRIG5-ePWM1,ADCSOCA*/
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC3CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC4CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC5CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC6CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC7CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC8CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC9CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC10CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC11CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC12CTL.bit.TRIGSEL = 0x05;
?
/*采樣窗口長達(dá)6個周期(2n+6個時鐘周期)*/
AdcRegs.ADCSOC0CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC1CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC2CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC3CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC4CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC5CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC6CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC7CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC8CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC9CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC10CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC11CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC12CTL.bit.ACQPS = 0;
?
EDIS;
}
ADC的中斷服務(wù)函數(shù)如下Uint32 adcVal[16];/***********************函數(shù)名:void INTERRUPT adc_isr() *參 數(shù):無 *返回值:無 *作 用:adc中斷服務(wù)函數(shù)**********************/void INTERRUPT adc_isr(){ while(AdcRegs.ADCCTL1.bit.ADCBSY == 1) { }adcVal[0] = AdcResult.ADCRESULT0;
adcVal[1] = AdcResult.ADCRESULT1;
adcVal[2] = AdcResult.ADCRESULT2;
adcVal[3] = AdcResult.ADCRESULT3;
adcVal[4] = AdcResult.ADCRESULT4;
adcVal[5] = AdcResult.ADCRESULT5;
adcVal[6] = AdcResult.ADCRESULT6;
?
adcVal[7] = AdcResult.ADCRESULT7;
adcVal[8] = AdcResult.ADCRESULT8;
adcVal[9] = AdcResult.ADCRESULT9;
adcVal[10] = AdcResult.ADCRESULT10;
adcVal[11] = AdcResult.ADCRESULT11;
adcVal[12] = AdcResult.ADCRESULT12;
?
EALLOW;
/*清除ADCINTFLG寄存器中各自的標(biāo)志位*/
AdcRegs.ADCINTFLGCLR.bit.ADCINT3 = 0x1;
/* 清除ADCINTOVF寄存器中相應(yīng)的溢出位*/
AdcRegs.ADCINTOVFCLR.bit.ADCINT3 = 0x1;
/* 中斷應(yīng)答*/
PieCtrlRegs.PIEACK.all = PIEACK_GROUP10;
EDIS;}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
中科昊芯
+關(guān)注
關(guān)注
5文章
85瀏覽量
6004 -
開發(fā)板試用
+關(guān)注
關(guān)注
3文章
303瀏覽量
2763
發(fā)布評論請先 登錄
相關(guān)推薦
熱點(diǎn)推薦
【獲獎名單】2025開發(fā)板評測大賽優(yōu)秀開發(fā)者、最受歡迎開發(fā)板公布
試用測評后通過問卷調(diào)查投票,選出了各自心目中最受歡迎的開發(fā)板?,F(xiàn)將名單一同予以公示。
大賽作品詳情:【作品精選】2025電子發(fā)燒友開發(fā)板測評大賽作品合集!
優(yōu)秀作品
發(fā)表于 11-21 09:31
【作品合集】飛凌嵌入式OK527N-C開發(fā)板測評
作品合集
第十三期合集 : 玄鐵Banana Pi BPI-RV2開發(fā)板測評作品合集
第十四期合集 : 玄鐵BPI-CanMV-K230D-Zero開發(fā)板測評作品合集
第十五期合集 : 中科昊
發(fā)表于 09-22 15:54
【作品合集】中科昊芯Core_DSC280025C開發(fā)板測評
的應(yīng)用
【中科昊芯Core_DSC280025C開發(fā)板試用體驗(yàn)】---外部中斷問題
第
發(fā)表于 09-18 10:52
【作品精選】2025電子發(fā)燒友開發(fā)板測評大賽作品合集!
Milk-V Duo S 開發(fā)板免費(fèi)試用
玄鐵Banana Pi BPI-RV2開發(fā)板試用
玄鐵Banana Pi BPI-CanMV-K230D-Zero17
發(fā)表于 09-03 15:24
中科昊芯Core_DSC280025C開發(fā)板的外部中斷問題
獲得中科昊芯Core_DSC280025C開發(fā)板開發(fā)板后,我就抓緊時間研究,無奈學(xué)識淺薄,學(xué)得很
發(fā)表于 08-08 22:06
【中科昊芯Core_DSC280025C開發(fā)板試用體驗(yàn)】+4. CAN外設(shè)調(diào)試(含源碼)
前言
大家好,非常感謝電子發(fā)燒友與中科昊芯提供的DSC280025C開發(fā)板,這是一款DSP的
發(fā)表于 08-05 20:46
【中科昊芯Core_DSC280025C開發(fā)板試用體驗(yàn)】+SCI測試與代碼解讀
Core_DSC280025C核心板使用了昊芯HXS320F28025CRISC-V DSP芯片,該芯片集成了吳芯自主研發(fā)的H28x內(nèi)核。核
發(fā)表于 07-17 10:42
【中科昊芯Core_DSC280025C開發(fā)板試用體驗(yàn)】+3.DSP基礎(chǔ)外設(shè)調(diào)試(含源碼)
前言
大家好,非常感謝電子發(fā)燒友與中科昊芯提供的DSC280025C開發(fā)板,這是一款DSP的
發(fā)表于 07-13 16:07
【中科昊芯Core_DSC280025C開發(fā)板試用體驗(yàn)】+2.RAM工程與FLASH工程對比
前言
大家好,非常感謝電子發(fā)燒友與中科昊芯提供的DSC280025C開發(fā)板,這是一款DSP的
發(fā)表于 07-04 10:37
【中科昊芯Core_DSC280025C開發(fā)板試用體驗(yàn)】+1.開箱之浮點(diǎn)計算對比
【中科昊芯Core_DSC280025C開發(fā)板試用體驗(yàn)】+1.開箱之浮點(diǎn)計算對比
前言
大家好,
發(fā)表于 06-29 10:01
AioneMotor_DSC28034_L3F驅(qū)控一體板現(xiàn)貨庫存
AioneMotor_DSC28034_L3F驅(qū)控一體板是中科昊芯新推出的性能卓越電機(jī)驅(qū)控
發(fā)表于 06-27 09:07
有獎丨米爾 瑞芯微RK3562開發(fā)板免費(fèi)試用新增名額!
米爾與瑞芯微合作發(fā)布的新品基于瑞芯微RK3562應(yīng)用處理器的MYD-YR3562開發(fā)板免費(fèi)試用名額增加
中科昊芯Core_DSC280025C開發(fā)板免費(fèi)試用
Core_DSC280025C核心板使用了昊芯HXS320F28025C RISC-V ? DSP芯片,該芯片集成了吳芯自主研發(fā)的H28x內(nèi)
中科昊芯DSP產(chǎn)品及公司信息
庫和驅(qū)動庫,幫助用戶降低遷移成本,縮短開發(fā)周期。同時,公司還推出了多種開發(fā)板和核心板,如Core_DSC28027和Start_DSC28034
發(fā)表于 04-07 09:16
【中科昊芯Start_DSC28034PNT湖人開發(fā)板試用體驗(yàn)】--學(xué)寫一個ADC
評論