STM8模擬/數(shù)字轉(zhuǎn)換器(ADC)
采樣的過程一定要滿足奈圭斯特采樣定理,并一般要經(jīng)過采樣保持、量化和編碼3個步驟。
在A/D轉(zhuǎn)換系統(tǒng)中的作用是保持模擬輸入電壓不變,以獲得正確的數(shù)字量結(jié)果。
量化:
量化過程中所取最小數(shù)量單位成為量化單位。
STM8S105xx系列基礎(chǔ)型產(chǎn)品包括一個10位連續(xù)漸進式模數(shù)轉(zhuǎn)換器(ADC1),提供多達10個多
路復(fù)用輸入通道。
模擬看門狗
在單次轉(zhuǎn)換模式和不帶緩存的連續(xù)模式中模擬看門狗可以通過置位ADC_CSR寄存器的AWDEN位來使能。當(dāng)模擬電壓通過ADC轉(zhuǎn)換后的值低于下限門檻值或者高于上限門檻值時AWD模擬看門狗會被置位??赏ㄟ^對ADC_HTR和ADC_LTR的10位寄存器編程來設(shè)定門檻值,并且通過置位ADC_CSR寄存器的AWDIE位可使能中斷。
1、ADC開關(guān)控制
通過位置ADC_CR1寄存器的ADON位來開啟ADC。當(dāng)首次置位ADON位時,ADC從低功耗模式喚醒。
2、ADC時鐘
時鐘的預(yù)分頻因子是由ADC_CR1寄存器的SPSEL[2:0]決定的。
3、通道的選擇
有多達16個外部輸入通道。
4、轉(zhuǎn)換模式
1)單次模式
2)連續(xù)和帶緩存的連續(xù)模式
3)單次掃描模式
4)連續(xù)掃描模式
ADC相關(guān)的功能寄存器
1、ADC高位數(shù)據(jù)緩存寄存器(ADC_DBxRH)
數(shù)據(jù)的左對齊還是右對齊由ALIGN位決定。
數(shù)據(jù)的左對齊:這些數(shù)據(jù)位包含高8位的轉(zhuǎn)換數(shù)據(jù)。需要在杜低位數(shù)據(jù)前先讀取。
數(shù)據(jù)的右對齊:這些數(shù)據(jù)包含(ADC數(shù)據(jù)寬度減8)的高位轉(zhuǎn)換結(jié)果數(shù)據(jù)。剩下的位為0.
2、ADC低位數(shù)據(jù)緩存寄存器(ADC_DBxRL)
數(shù)據(jù)的左對齊還是右對齊由ALIGN位決定。
數(shù)據(jù)的左對齊:這些數(shù)據(jù)包含(ADC數(shù)據(jù)寬度減8)的高位轉(zhuǎn)換結(jié)果數(shù)據(jù)。剩下的位為0.
數(shù)據(jù)的右對齊:這些數(shù)據(jù)位包含低8位的轉(zhuǎn)換結(jié)果數(shù)據(jù)。低位字節(jié)必須先讀,再讀高位字節(jié)。
3、ADC控制/狀態(tài)寄存器(ADC_CSR)
4、ADC配置寄存器1(ADC_CR1)
5、ADC配置寄存器2(ADC_CR2)
6、ADC配置寄存器3(ADC_CR3)
7、ADC數(shù)據(jù)高位寄存器(ADC_DRH)
8、ADC數(shù)據(jù)低位寄存器(ADC_DRL)
9、ADC施密特觸發(fā)器禁止寄存器高位(ADC_TDRH)
10、ADC施密特觸發(fā)器禁止寄存器低位(ADC_TDRL)
11、ADC上限門檻值高位寄存器(ADC_HTRH)
模擬看門狗上限電壓高位,此位由硬件置位和軟件清零。這些位定義了模擬看門狗
上限電壓高位值(V refh)的MSB。
12、ADC上限門檻值低位寄存器(ADC_HTRL)
13、ADC下限門檻值高位寄存器(ADC_LTRH)
14、ADC下限門檻值低位寄存器(ADC_LTRL)
15、ADC看門狗狀態(tài)高位寄存器(ADC_AWSRH)
0:在數(shù)據(jù)寄存器x中無模擬看門狗事件;
1:數(shù)據(jù)寄存器x中發(fā)生了模擬看門狗事件。
void adc_init(void)
{
GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_IN_PU_NO_IT);
ADC1_DeInit();
ADC1_Init(ADC1_CONVERSIONMODE_SINGLE,
ADC1_CHANNEL_4,
ADC1_PRESSEL_FCPU_D2,
ADC1_EXTTRIG_TIM,DISABLE,
ADC1_ALIGN_RIGHT,
ADC1_SCHMITTTRIG_CHANNEL4,DISABLE);
ADC1_Cmd(ENABLE);
ADC1_ClearFlag(ADC1_FLAG_EOC);
ADC1_StartConversion();
}
void ADC1_DeInit(void)
{
ADC1->CSR = ADC1_CSR_RESET_VALUE;
ADC1->CR1 = ADC1_CR1_RESET_VALUE;
ADC1->CR2 = ADC1_CR2_RESET_VALUE;
ADC1->CR3 = ADC1_CR3_RESET_VALUE;
ADC1->TDRH = ADC1_TDRH_RESET_VALUE;
ADC1->TDRL = ADC1_TDRL_RESET_VALUE;
ADC1->HTRH = ADC1_HTRH_RESET_VALUE;
ADC1->HTRL = ADC1_HTRL_RESET_VALUE;
ADC1->LTRH = ADC1_LTRH_RESET_VALUE;
ADC1->LTRL = ADC1_LTRL_RESET_VALUE;
ADC1->AWCRH = ADC1_AWCRH_RESET_VALUE;
ADC1->AWCRL = ADC1_AWCRL_RESET_VALUE;
}
void ADC1_Init(ADC1_ConvMode_TypeDef ADC1_ConversionMode,
ADC1_Channel_TypeDef ADC1_Channel,
ADC1_PresSel_TypeDef ADC1_PrescalerSelection,
ADC1_ExtTrig_TypeDef ADC1_ExtTrigger,
FunctionalState ADC1_ExtTriggerState,
ADC1_Align_TypeDef ADC1_Align,
ADC1_SchmittTrigg_TypeDef ADC1_SchmittTriggerChannel, FunctionalState ADC1_SchmittTriggerState)
{
/* Check the parameters */
assert_param(IS_ADC1_CONVERSIONMODE_OK(ADC1_ConversionMode));
assert_param(IS_ADC1_CHANNEL_OK(ADC1_Channel));
assert_param(IS_ADC1_PRESSEL_OK(ADC1_PrescalerSelection));
assert_param(IS_ADC1_EXTTRIG_OK(ADC1_ExtTrigger));
assert_param(IS_FUNCTIONALSTATE_OK(((ADC1_ExtTriggerState))));
assert_param(IS_ADC1_ALIGN_OK(ADC1_Align));
assert_param(IS_ADC1_SCHMITTTRIG_OK(ADC1_SchmittTriggerChannel));
assert_param(IS_FUNCTIONALSTATE_OK(ADC1_SchmittTriggerState));
/*-----------------CR1 & CSR configuration --------------------*/
/* Configure the conversion mode and the channel to convert
respectively according to ADC1_ConversionMode & ADC1_Channel values & ADC1_Align values */
ADC1_ConversionConfig(ADC1_ConversionMode, ADC1_Channel, ADC1_Align);
/* Select the prescaler division factor according to ADC1_PrescalerSelection values */
ADC1_PrescalerConfig(ADC1_PrescalerSelection);
/*-----------------CR2 configuration --------------------*/
/* Configure the external trigger state and event respectively
according to NewState, ADC1_ExtTrigger */
ADC1_ExternalTriggerConfig(ADC1_ExtTrigger, ADC1_ExtTriggerState);
/*------------------TDR configuration ---------------------------*/
/* Configure the schmitt trigger channel and state respectively
according to ADC1_SchmittTriggerChannel & ADC1_SchmittTriggerNewState values */
ADC1_SchmittTriggerConfig(ADC1_SchmittTriggerChannel, ADC1_SchmittTriggerState);
/* Enable the ADC1 peripheral */
ADC1->CR1 |= ADC1_CR1_ADON;
}
void ADC1_Cmd(FunctionalState NewState)
{
/* Check the parameters */
assert_param(IS_FUNCTIONALSTATE_OK(NewState));
if (NewState != DISABLE)
{
ADC1->CR1 |= ADC1_CR1_ADON;
}
else /* NewState == DISABLE */
{
ADC1->CR1 &= (u8) (~ADC1_CR1_ADON);
}
}
void ADC1_ClearFlag(ADC1_Flag_TypeDef Flag)
{
u8 temp = 0;
/* Check the parameters */
assert_param(IS_ADC1_FLAG_OK(Flag));
if ((Flag & 0x0F) == 0x01)
{
/* Clear OVR flag status */
ADC1->CR3 &= (u8) (~ADC1_CR3_OVR);
}
else if ((Flag & 0xF0) == 0x10)
{
/* Clear analog watchdog channel status */
temp = (u8) (Flag & 0x0F);
if (temp < 8)
{
ADC1->AWSRL &= (u8) (~((u8) 1 << temp));
}
else
{
ADC1->AWSRH &= (u8) (~((u8) 1 << (temp - 8)));
}
}
else /* Clear EOC | AWD flag status */
{
ADC1->CSR &= (u8) (~Flag);
}
}
void ADC1_StartConversion(void)
{
ADC1->CR1 |= ADC1_CR1_ADON;
}
上一篇:用PWM波控制LED燈的閃爍
下一篇:STM8 I2C的學(xué)習(xí)
推薦閱讀
史海拾趣
隨著公司規(guī)模的擴大和業(yè)績的增長,安國國際的產(chǎn)品線逐漸從計算機外設(shè)產(chǎn)品拓展至消費型電子產(chǎn)品和手持便攜裝置。為滿足市場需求,公司不斷推出創(chuàng)新產(chǎn)品,如輸出入裝置暨多媒體圖像處理裝置應(yīng)用控制芯片、網(wǎng)橋控制芯片、網(wǎng)絡(luò)安全保護裝置等。同時,為提升運營效率和靈活性,安國在2015年進行了組織調(diào)整和專業(yè)分工,將不同業(yè)務(wù)線分割為多家子公司,使得各業(yè)務(wù)領(lǐng)域能夠更加專注和高效地發(fā)展。
進入21世紀,安國繼續(xù)深耕集線器控制芯片領(lǐng)域。2000年,公司發(fā)布了首款USB鍵盤集線器控制芯片——AU9432,這款芯片憑借其卓越的性能和穩(wěn)定性,成功被Apple的iMAC鍵盤所采用。這一里程碑事件不僅證明了安國在集線器控制芯片領(lǐng)域的領(lǐng)先地位,也為其后續(xù)的產(chǎn)品研發(fā)和市場拓展奠定了堅實基礎(chǔ)。
無錫友達深知技術(shù)創(chuàng)新的重要性,因此不斷加大對研發(fā)團隊的投入。公司擁有一支經(jīng)驗豐富、技術(shù)實力雄厚的研發(fā)團隊,以及一流的成套設(shè)計工具和測試設(shè)備。這些團隊和工具為公司開發(fā)具有自主知識產(chǎn)權(quán)的產(chǎn)品提供了有力保障。在數(shù)?;旌闲盘柼幚眍I(lǐng)域,無錫友達擁有自己的系統(tǒng)設(shè)計體系和核心技術(shù),產(chǎn)品研發(fā)技術(shù)和量產(chǎn)能力處于國內(nèi)前列。
為了進一步拓展國際市場,Dionics Inc開始尋求與國際知名企業(yè)的戰(zhàn)略合作。經(jīng)過多次洽談,公司最終與一家國際知名電子企業(yè)達成戰(zhàn)略合作協(xié)議,共同開發(fā)新一代智能穿戴設(shè)備。通過這一合作,Dionics Inc不僅獲得了寶貴的技術(shù)支持和市場資源,還成功將其產(chǎn)品推向了國際市場。
在成功推出首款產(chǎn)品后,DEMMELPRODUCTS公司開始積極拓展市場。公司管理層敏銳地捕捉到全球化的發(fā)展趨勢,積極尋求與國際知名企業(yè)的合作機會。通過與跨國公司的技術(shù)交流和項目合作,DEMMELPRODUCTS公司的產(chǎn)品逐漸進入國際市場,并獲得了良好的口碑。同時,公司還積極參加國際電子展會和論壇,提升品牌知名度和影響力。
遨格芯微(AGM)自2012年成立以來,始終致力于可編程邏輯技術(shù)的研發(fā)。經(jīng)過數(shù)年的努力,AGM成功開發(fā)出具有自主知識產(chǎn)權(quán)的FPGA核心技術(shù),并在FPGA編譯軟件和電路領(lǐng)域取得了先進和成熟的技術(shù)成果。2014年,AGM的PLD芯片成熟并開始在行業(yè)得到應(yīng)用,這標(biāo)志著AGM在可編程邏輯技術(shù)領(lǐng)域取得了重大突破。隨后,AGM推出三個系列的CPLD、FPGA、Programmable SoC產(chǎn)品,并進入量產(chǎn)階段,得到了包括三星在內(nèi)的多家知名廠商的認證,為公司的進一步發(fā)展奠定了堅實基礎(chǔ)。
安防視頻監(jiān)控攻守兼?zhèn)?五大趨勢供需利好 安防視頻監(jiān)控行業(yè)具備長期向好的大邏輯。首先,安全需求隨著經(jīng)濟發(fā)展和生活水平提高而快速增長,中國社會經(jīng)濟加速轉(zhuǎn)型也使得安全問題突出,以視頻監(jiān)控為主導(dǎo)的技術(shù)防范手段獲得良好發(fā)展機遇;其次,視頻監(jiān)控減少對人防的依賴,符合經(jīng)濟發(fā)展和產(chǎn)業(yè)升 ...… 查看全部問答∨ |
|
我寫了一個小程序,在c51中編譯結(jié)果總是0,我知道是變量覆蓋問題,但我不知道如何去寫,請教大蝦?。。? #include int factorial( int n); int factorial( int n) { int result; if(n == 0) result=1; else &n ...… 查看全部問答∨ |
|
香水版主,請問有STM32內(nèi)的D/A的詳細指標(biāo)嗎? 比如更新速率、積分非線性、微分非線性、增益誤差、偏移誤差和溫度系數(shù),我在ST網(wǎng)上的資料上沒有發(fā)現(xiàn)這些,請指教 ...… 查看全部問答∨ |
|
恒流源就是一個能輸出恒定電流的電源。 恒流源的應(yīng)用領(lǐng)域非常廣闊,然而不少應(yīng)該用恒流源供電的場合,不適當(dāng)?shù)氖褂昧朔€(wěn)壓電源。下面舉一些實際例子來說明恒流源的應(yīng)用: 1:電真空器件,如示波管、顯像管 ...… 查看全部問答∨ |
|
我是用USB連RS-232用終端機的發(fā)送接收我量測波形大概是10KHz,但是我的UART1量測出來大概是13KHz,我的BAUD都是設(shè)定9600,我想去調(diào)整RCC的頻率,但是怎麼調(diào)整都還是13KHz,以下是我RCC的程式碼。 void RCC_Configuration(void){ ErrorStatus ...… 查看全部問答∨ |
無線傳感器網(wǎng)絡(luò)和傳統(tǒng)的傳感器網(wǎng)絡(luò)的優(yōu)勢劣勢 小弟新人,想知道這方面的知識,希望哪位大俠給出個一二三來,讓小弟好好比較比較,正在左右徘徊呀?!? 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 阿里黑科技落地!夸克AI眼鏡全球首發(fā),高德、淘寶、支付寶都能用
- 化繁為簡, 適配復(fù)雜磁場環(huán)境,MT73xx 3D雙路輸出霍爾鎖存器賦能車規(guī)電機精準(zhǔn)控制
- 9.5億美元收購恩智浦MEMS傳感器業(yè)務(wù),意法半導(dǎo)體 在傳感器領(lǐng)域的地位再升級
- 高性能電動滑板車 BLDC 電機驅(qū)動器:技術(shù)解析與應(yīng)用展望
- 5G工業(yè)網(wǎng)關(guān)的“邊緣計算+AI推理”一體化設(shè)計,PLC協(xié)議解析與缺陷檢測的實時聯(lián)動
- AR眼鏡的“工業(yè)指令投射”系統(tǒng),SLAM的空間定位、PLC數(shù)據(jù)實時疊加顯示
- 多光譜氣體傳感器的抗交叉干擾設(shè)計
- 多模態(tài)融合感知的“語義-幾何”聯(lián)合建模
- 工業(yè)觸摸屏的“壓感-手勢”多模態(tài)交互設(shè)計
- 工業(yè)機器人高精度力控的“雙模融合”傳感器設(shè)計
- 下載白皮書 答題贏好禮|TE《智能監(jiān)控應(yīng)用連接解決方案指南》
- 贏京東卡 室內(nèi)空氣隱患大作戰(zhàn)——英飛凌XENSIV™PAS CO2傳感器
- 下載汽車電氣化精品文章,贏【體脂秤、羅技鼠標(biāo)、手持風(fēng)扇】,開啟MPS汽車技術(shù)進階之旅!
- CadenceLIVE China 2022中國線上用戶大會 報名中!
- 免費測評|ESP32-S2-Kaluga-1新型多媒體開發(fā)板,靈活拆裝,滿足多種需求
- 【有獎下載】英飛凌《時尚小家電功率器選型指南》,詳解兼具強大功能與潮流款式的小家電設(shè)計!
- 有獎直播 | 微軟 Azure Sphere助力穩(wěn)定,安全和靈活的物聯(lián)網(wǎng)解決方案
- ADI軟件定義無線電(SDR)專題文章
- 富士通白皮書有獎下載|FRAM高性能存儲器優(yōu)化車載電子系統(tǒng)
- 基于TQ2440的u-boot-1.1.6移植(基本步驟)
- 嵌入式系統(tǒng)啟動流程(學(xué)習(xí)筆記)
- 基于TQ2440的linux-2.6.30.4內(nèi)核移植
- 移植Linux-2.6.30.4內(nèi)核之根文件系統(tǒng)構(gòu)建
- USB設(shè)備驅(qū)動移植之U盤掛載
- 三星最強旗艦Galaxy S21這些亮點你知道多少?
- iQOO官方確認 iQOO 7手機將搭OriginOS
- 黑鯊4游戲手機官宣:系120W快充+4500mAh電池
- 摩托羅拉驍龍8系旗艦預(yù)告:全新系列很快就來了
- 華為nova7 SE樂活版詳細參數(shù)解密:處理器換成降頻的麒麟820E