概述
SAR ADC支持CPU觸發(fā)、PWM觸發(fā)及EXTIO觸發(fā)。通過將SAR ADC CTRL寄存器中TRIG進行設(shè)置,該設(shè)置對所有選中通道均有效,當不同通道需要不同觸發(fā)方式時,需要在采樣間隔配置TRIG位進行切換。
PWM觸發(fā)操作方式如下:
PWM配置所需模式,將SARADC的CTRL寄存器中TRIG方式設(shè)置為PWM觸發(fā)。每路PWM對應(yīng)一個ADTRG寄存器值,當PWM計數(shù)到指定值,可觸發(fā)ADC進行采樣。PWM在任意模式下可以觸發(fā)ADC,每一路輸出獨立的ADC觸發(fā)信號,且每個周期可以設(shè)置1個ADC觸發(fā)點,每個PWM只輸出一個觸發(fā)信號,不區(qū)分A.B分別觸發(fā)。
具體配置方式如下(以ADTRG0A0為例):
1、PWM配置所需模式
2、配置PWM模塊ADTRG0A0數(shù)值,該數(shù)值為觸發(fā)延時時長,在中心對稱模式下,前半周期從周期起始記,后半周期采樣點與前半周期中心對稱
3、使能ADTRG0A0寄存器EN位
4、配置ADC寄存器中TRIG寄存器A0對應(yīng)位,確認該通道未被屏蔽
5、使能PWM模塊EN位,當計數(shù)值到達ADTRG0A0設(shè)置值時,觸發(fā)ADCCTRL寄存器中選中的通道(CHx)進行采樣,采樣完成后,將產(chǎn)生EOC標志位,并產(chǎn)生ADC中斷
程序中配置如下(PWM觸發(fā)ADC轉(zhuǎn)換):
//ADC初始化
void SVPWM_ADC_Init(void)
{
ADC_InitStructure ADC_initStruct;
PORT_Init(PORTA, PIN8, PORTA_PIN8_ADC0_CH7, 0); //PA.8 =》 ADC0.CH7
PORT_Init(PORTB, PIN9, PORTB_PIN9_ADC0_CH8, 0); //PB.9 =》 ADC0.CH8
ADC_initStruct.clk_src = ADC_CLKSRC_HRC_DIV8;
ADC_initStruct.clk_div = 8;
ADC_initStruct.ref_src = ADC_REFSRC_VDD; //電壓基準選擇VDD
ADC_initStruct.channels = ADC_CH7 | ADC_CH8; //通道初始化
ADC_initStruct.samplAvg = ADC_AVG_SAMPLE8;
ADC_initStruct.trig_src = ADC_TRIGGER_PWM0; //設(shè)置PWM0觸發(fā)ADC轉(zhuǎn)換
ADC_initStruct.Continue = 0;//非連續(xù)模式,即單次模式
ADC_initStruct.EOC_IEn = ADC_CH8; //設(shè)置CH8為中斷
ADC_initStruct.OVF_IEn = 0;
ADC_Init(ADC0, &ADC_initStruct);//配置ADC
ADC0-》CHSEL = ((ADC_CH8 《《 ADC_CHSEL_PWM_Pos) | (ADC_CH7 《《 ADC_CHSEL_PWM_Pos)); //設(shè)置PWM觸發(fā)CH7、CH8通道轉(zhuǎn)換
ADC_Open(ADC0);//使能ADC
}
//ADC中斷
void ADC0_Handler(void)
{
ADC_IntEOCClr(ADC0, ADC_CH8); //清中斷
while (!ADC_IsEOC(ADC0, ADC_CH8)); //等待通道8轉(zhuǎn)換完成
ADC_Read(ADC0, ADC_CH7); //讀取ADC值
ADC_Read(ADC0, ADC_CH8);
}
具體詳情可登錄華芯微特官網(wǎng):http://www.synwit.cn/
編輯:jq
-
寄存器
+關(guān)注
關(guān)注
31文章
5343瀏覽量
120377 -
PWM
+關(guān)注
關(guān)注
114文章
5186瀏覽量
213957 -
adc
+關(guān)注
關(guān)注
98文章
6498瀏覽量
544659
原文標題:SWM20x系列電機框架搭建:ADC(雙電阻采樣)篇
文章出處:【微信號:gh_737991c81b3d,微信公眾號:恒美股份】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論