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

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

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

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

雅特力AT32F402/F405 ADC使用指南

雅特力 AT32 MCU ? 2025-01-10 17:27 ? 次閱讀

ADC簡(jiǎn)介

ADC控制器的功能極其強(qiáng)大。其包含但不限于以下內(nèi)容

  • 時(shí)鐘及狀態(tài),由數(shù)字和模擬時(shí)鐘兩個(gè)部分組成
  • 支持分辨率為12位的轉(zhuǎn)換,采樣周期支持廣范圍的配置
  • 自校準(zhǔn),自帶校準(zhǔn)功能以糾正數(shù)據(jù)偏移
  • 基本模式,支持多種模式,不同模式可組合使用滿足多種應(yīng)用
  • 不同優(yōu)先權(quán)的通道,普通通道與搶占通道具備不同的優(yōu)先權(quán)
  • 多種獨(dú)立的觸發(fā)源,包括TMR、EXINT、軟觸發(fā)等多種觸發(fā)選擇
  • 數(shù)據(jù)后級(jí)處理,包括數(shù)據(jù)的對(duì)齊,搶占通道偏移量等多種處理
  • 過(guò)采樣器,普通及搶占通道均支持過(guò)采樣
  • 電壓監(jiān)測(cè),通過(guò)對(duì)轉(zhuǎn)換結(jié)果的判定來(lái)實(shí)現(xiàn)電壓監(jiān)測(cè)
  • 中斷及狀態(tài)事件,具備多種標(biāo)志指示ADC狀態(tài),且某些標(biāo)志還具備中斷功能
  • 多種轉(zhuǎn)換數(shù)據(jù)的獲取方式,包括DMA獲取、CPU獲取兩種方式實(shí)現(xiàn)轉(zhuǎn)換數(shù)據(jù)的讀取

圖1. ADC1框圖

2862fa20-cf35-11ef-9434-92fbcf53809c.png

ADC功能解析

時(shí)鐘及狀態(tài)

一、功能介紹ADC的時(shí)鐘分為數(shù)字時(shí)鐘與模擬時(shí)鐘。其統(tǒng)一通過(guò)CRM_APB2EN的ADCxEN位使能。

  • 數(shù)字時(shí)鐘:即PCLK2,經(jīng)HCLK分頻而來(lái),提供給數(shù)字部分使用。
  • 模擬時(shí)鐘:即ADCCLK,經(jīng)ADC預(yù)分頻器分頻而來(lái),提供給模擬部分使用。

二、軟件接口

ADC時(shí)鐘使能,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:crm_periph_clock_enable(CRM_ADC1_PERIPH_CLOCK,TRUE);當(dāng)ADC時(shí)鐘使能后,軟件即可開(kāi)始進(jìn)行ADC的一些相關(guān)配置。ADC預(yù)分頻設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:adc_clock_div_set(ADC_DIV_8);此項(xiàng)實(shí)際用于設(shè)定ADC模擬部分的時(shí)鐘,其由HCLK分頻而來(lái),故ADCCLK=HCLK/div注意:1)模擬部分的ADCCLK由HCLK分頻而來(lái),其不可大于28MHz;2)ADC數(shù)字部分掛在PCLK2上,為避免同步問(wèn)題,ADCCLK頻率不可高于PCLK2;3)ADC模擬部分電源由ADC_CTRL2的ADCEN,其不受ADC的時(shí)鐘狀態(tài)影響。典型的,如果系統(tǒng)需要進(jìn)入深度睡眠模式,如果不關(guān)閉ADCEN,此時(shí)ADC模擬器件將還會(huì)消耗電流;4)ADC上電有一段等待時(shí)間tSTAB,再執(zhí)行后續(xù)觸發(fā)等操作。

采樣轉(zhuǎn)換

一、功能介紹ADC可設(shè)定1.5、7.5、13.5、28.5、41.5、55.5、71.5、239.5個(gè)采樣周期。ADC對(duì)通道數(shù)據(jù)的獲取由采樣和轉(zhuǎn)換兩個(gè)部分組成。采樣先于轉(zhuǎn)換執(zhí)行,采樣期間內(nèi)選通需要轉(zhuǎn)換的通道,外部電壓對(duì)ADC內(nèi)部采樣電容充電,將持續(xù)執(zhí)行設(shè)定的采樣周期長(zhǎng)度時(shí)間的充電。采樣結(jié)束后就會(huì)自動(dòng)開(kāi)始轉(zhuǎn)換,ADC采用逐次逼近的轉(zhuǎn)換方式,可有效保障轉(zhuǎn)換數(shù)據(jù)的準(zhǔn)確性。此轉(zhuǎn)換方式需要12.5個(gè)ADCCLK的轉(zhuǎn)換時(shí)間來(lái)完成單通道的轉(zhuǎn)換,再結(jié)合數(shù)據(jù)處理,因此單個(gè)通道的整體轉(zhuǎn)換時(shí)間即單通道單次轉(zhuǎn)換時(shí)間(ADCCLK的周期)=采樣周期+12.5示例:CSPTx選擇7.5周期,一次轉(zhuǎn)換需要7.5+12.5=20個(gè)ADCCLK周期。

二、軟件接口

ADC采樣周期設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:adc_ordinary_channel_set(ADC1,ADC_CHANNEL_4,1,ADC_SAMPLETIME_13_5);adc_preempt_channel_set(ADC1,ADC_CHANNEL_7,1,ADC_SAMPLETIME_41_5);注意:不同通道可設(shè)定不同的采樣周期;當(dāng)采用中斷或輪詢方式獲取普通通道數(shù)據(jù),為避免數(shù)據(jù)讀取不及時(shí),建議合理增大采樣周期;為避免充電不充分導(dǎo)致轉(zhuǎn)換數(shù)據(jù)不準(zhǔn)確,應(yīng)用允許的條件下,建議合理增大采樣周期。

自較準(zhǔn)

一、功能介紹ADC具備自校準(zhǔn)能力,軟件可以執(zhí)行自校準(zhǔn)命令,透過(guò)自校準(zhǔn)可以計(jì)算出一個(gè)校準(zhǔn)值。不需要軟件干預(yù),ADC會(huì)自動(dòng)將該校準(zhǔn)值反饋回ADC內(nèi)部補(bǔ)償ADC基礎(chǔ)偏差,以保障轉(zhuǎn)換數(shù)據(jù)的準(zhǔn)確性。自校準(zhǔn)的軟件流程如下:

  • 使能ADC
  • 執(zhí)行初始化校準(zhǔn)命令并等待初始化校準(zhǔn)完成
  • 執(zhí)行校準(zhǔn)命令并等待校準(zhǔn)完成
  • 執(zhí)行完上述流程后,即可開(kāi)始進(jìn)行ADC的觸發(fā)轉(zhuǎn)換

二、軟件接口

自校準(zhǔn)方式,其軟件實(shí)例如下:adc_enable(ADC1,TRUE);adc_calibration_init(ADC1);while(adc_calibration_init_status_get(ADC1));adc_calibration_start(ADC1);while(adc_calibration_status_get(ADC1));注意:校準(zhǔn)值的存放不會(huì)置位CCE標(biāo)志,不會(huì)產(chǎn)生中斷或DMA請(qǐng)求。

基本模式

一、功能介紹序列模式ADC支持序列模式設(shè)定,開(kāi)啟序列模式后,每次觸發(fā)將序列中的通道依序轉(zhuǎn)換一次。用戶于ADC_OSQx配置普通通道序列,普通通道從OSN1開(kāi)始轉(zhuǎn)換;于ADC_PSQ配置搶占通道序列,搶占通道是從PSNx開(kāi)始轉(zhuǎn)換(x=4-PCLEN)。搶占通道轉(zhuǎn)換示例:ADC_PSQ[21:0]=10 00110 00101 00100 00011,此時(shí)掃描轉(zhuǎn)換順序?yàn)镃H4、CH5、CH6,而不是CH3、CH4、CH5。圖2. 序列模式

2878f532-cf35-11ef-9434-92fbcf53809c.png

反復(fù)模式ADC支持反復(fù)模式設(shè)定,開(kāi)啟反復(fù)模式后,當(dāng)檢測(cè)到觸發(fā)后就即會(huì)反復(fù)不斷地轉(zhuǎn)換普通通道組。圖3. 反復(fù)模式+搶占自動(dòng)轉(zhuǎn)換模式

2897eaa0-cf35-11ef-9434-92fbcf53809c.png

分割模式ADC 支持分割模式設(shè)定。對(duì)于普通通道組,分割模式可依據(jù)設(shè)定將通道組分割成長(zhǎng)度較小的子組別。一次觸發(fā)將轉(zhuǎn)換子組別中的所有通道。每次觸發(fā)會(huì)依序選擇不同的子組別進(jìn)行轉(zhuǎn)換。對(duì)于搶占通道組,分割模式直接以通道為單位進(jìn)行分割,一次觸發(fā)將轉(zhuǎn)換單個(gè)通道。每次觸發(fā)會(huì)依序選擇不同的通道進(jìn)行轉(zhuǎn)換。圖4. 分割模式

28a87d02-cf35-11ef-9434-92fbcf53809c.png

搶占自動(dòng)轉(zhuǎn)換模式ADC 支持搶占自動(dòng)轉(zhuǎn)換模式設(shè)定,開(kāi)啟搶占自動(dòng)轉(zhuǎn)換模式后,當(dāng)普通通道轉(zhuǎn)換完成后,搶占通道將自動(dòng)接續(xù)著轉(zhuǎn)換,而不需要進(jìn)行搶占通道的觸發(fā)。圖5. 搶占自動(dòng)轉(zhuǎn)換模式

28c16a42-cf35-11ef-9434-92fbcf53809c.png

二、軟件接口

ADC序列模式和反復(fù)模式設(shè)定,由ADC基礎(chǔ)部分結(jié)構(gòu)體配置完成,其軟件實(shí)例如下:adc_base_struct.sequence_mode=TRUE;adc_base_struct.repeat_mode=TRUE;adc_base_config(ADC1,&adc_base_struct);注意:序列模式對(duì)普通及搶占通道組均有效;反復(fù)模式僅對(duì)普通通道組有效,搶占通道組不具備反復(fù)模式功能;反復(fù)模式與分割模式不可共用;反復(fù)模式可與搶占自動(dòng)轉(zhuǎn)換模式共用,將實(shí)現(xiàn)依次反復(fù)的轉(zhuǎn)換普通通道序列及搶占通道序列。ADC分割模式設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:/*set ordinary partitioned mode channel count*/adc_ordinary_part_count_set(ADC1,1);/*enable the partitioned mode on ordinary channel*/adc_ordinary_part_mode_enable(ADC1,TRUE);/*enable the partitioned mode on preempt channel*/adc_preempt_part_mode_enable(ADC1,TRUE);注意:分割模式對(duì)普通及搶占通道組均有效;搶占通道組分割模式子組別長(zhǎng)度不可設(shè)定,其固定為單個(gè)通道;分割模式與反復(fù)模式、搶占自動(dòng)轉(zhuǎn)換模式不可共用。搶占自動(dòng)轉(zhuǎn)換模式設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:/*preempt group automatic conversion after ordinary group*/adc_preempt_auto_mode_enable(ADC1,TRUE);注意:搶占自動(dòng)轉(zhuǎn)換模式僅對(duì)搶占通道組有效;搶占自動(dòng)轉(zhuǎn)換模式與分割模式不可共用。

不同優(yōu)先權(quán)的通道

一、功能介紹ADC設(shè)計(jì)有具備不同優(yōu)先權(quán)的兩種通道組:普通通道組與搶占通道組。普通通道組通常用于執(zhí)行常規(guī)的數(shù)據(jù)轉(zhuǎn)換。支持最多配置16個(gè)通道,轉(zhuǎn)換將按照設(shè)定的通道順序依次進(jìn)行。其不具備搶占能力。搶占通道組通常用于執(zhí)行相對(duì)緊急的數(shù)據(jù)轉(zhuǎn)換。支持最多配置4個(gè)通道,轉(zhuǎn)換將按照設(shè)定的通道順序依次進(jìn)行。其具備搶占能力,即搶占通道組的轉(zhuǎn)換可以打斷正在執(zhí)行的普通通道轉(zhuǎn)換,待搶占通道組轉(zhuǎn)換完畢后再恢復(fù)執(zhí)行被打斷的普通通道組轉(zhuǎn)換。

二、軟件接口

普通通道組設(shè)定,軟件包括通道數(shù)量、通道數(shù)值、轉(zhuǎn)換順序、采樣周期的設(shè)定,其軟件實(shí)例如下:/*config ordinary channel count*/adc_base_struct.ordinary_channel_length=3;adc_base_config(ADC1,&adc_base_struct);/*config ordinary channel*/adc_ordinary_channel_set(ADC1,ADC_CHANNEL_4,1,ADC_SAMPLETIME_41_5);adc_ordinary_channel_set(ADC1,ADC_CHANNEL_5,2,ADC_SAMPLETIME_41_5);adc_ordinary_channel_set(ADC1,ADC_CHANNEL_6,3,ADC_SAMPLETIME_41_5);搶占通道組設(shè)定,軟件包括通道數(shù)量、通道數(shù)值、轉(zhuǎn)換順序、采樣周期的設(shè)定,其軟件實(shí)例如下:/*config preempt channel count*/adc_preempt_channel_length_set(ADC1,3);/*config preempt channel*/adc_preempt_channel_set(ADC1,ADC_CHANNEL_7,1,ADC_SAMPLETIME_41_5);adc_preempt_channel_set(ADC1,ADC_CHANNEL_8,2,ADC_SAMPLETIME_41_5);adc_preempt_channel_set(ADC1,ADC_CHANNEL_9,3,ADC_SAMPLETIME_41_5);注意:不同通道可以設(shè)定不同的采樣周期;同一通道可以被反復(fù)編排進(jìn)轉(zhuǎn)換序列進(jìn)行轉(zhuǎn)換;序列模式下,普通通道組從OSN1開(kāi)始轉(zhuǎn)換,搶占通道組是從PSNx開(kāi)始轉(zhuǎn)換(x=4-PCLEN)。

多種獨(dú)立的觸發(fā)源

一、功能介紹ADC支持多種觸發(fā)源,包含軟件寫(xiě)寄存器觸發(fā)(ADC_CTRL2的OCSWTRG與PCSWTRG)以及外部觸發(fā)。外部觸發(fā)包含定時(shí)器觸發(fā)與引腳觸發(fā)。普通通道還有一種特殊的觸發(fā)來(lái)源,即重復(fù)使能ADCEN觸發(fā)轉(zhuǎn)換。此種情況下不需要使能ADC控制寄存器2(ADC_CTRL2)的OCTEN也可導(dǎo)致普通通道響應(yīng)轉(zhuǎn)換。注意:定時(shí)器觸發(fā)、引腳觸發(fā)、軟件觸發(fā)均需要使能觸發(fā)模式(ADC_CTRL2的OCTEN與PCTEN)。表1. 觸發(fā)源

28cfe806-cf35-11ef-9434-92fbcf53809c.png

二、軟件接口

軟件寫(xiě)寄存器觸發(fā)設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:/*config ordinary trigger source*/adc_ordinary_conversion_trigger_set(ADC1,ADC12_ORDINARY_TRIG_SOFTWARE,TRUE);/*config preempt trigger source*/adc_preempt_conversion_trigger_set(ADC1,ADC12_PREEMPT_TRIG_SOFTWARE,TRUE);在ADC使能tSTAB后,軟件即可執(zhí)行adc_ordinary_software_trigger_enable(ADC1,TRUE);/adc_preempt_software_trigger_enable(ADC1,TRUE);來(lái)進(jìn)行普通/搶占通道的觸發(fā)。外部觸發(fā)設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:/*config ordinary trigger source*/adc_ordinary_conversion_trigger_set(ADC12_ORDINARY_TRIG_TMR1CH1,TRUE);/*config preempt trigger source*/adc_preempt_conversion_trigger_set(ADC12_PREEMPT_TRIG_TMR3CH4,TRUE);在ADC使能tSTAB后,TMR1CH1的上升沿事件就會(huì)觸發(fā)普通通道組轉(zhuǎn)換,TMR3CH4的上升沿事件就會(huì)觸發(fā)搶占通道組轉(zhuǎn)換。注意:觸發(fā)間隔需要大于通道組轉(zhuǎn)換的時(shí)間,轉(zhuǎn)換期間發(fā)生的相同通道組的觸發(fā)會(huì)被忽略;搶占通道轉(zhuǎn)換優(yōu)先權(quán)最高,不管當(dāng)前是否有普通通道轉(zhuǎn)換,其觸發(fā)后就會(huì)立即開(kāi)始響應(yīng)轉(zhuǎn)換;普通觸發(fā)具備記憶功能,在搶占轉(zhuǎn)換時(shí)執(zhí)行普通觸發(fā),該觸發(fā)會(huì)被記錄并在搶占轉(zhuǎn)換完畢后響應(yīng)。

數(shù)據(jù)后級(jí)處理

一、功能介紹ADC具備專有的數(shù)據(jù)寄存器,普通通道轉(zhuǎn)換完成后數(shù)據(jù)存儲(chǔ)于普通數(shù)據(jù)寄存器(ADC_ODT),搶占通道轉(zhuǎn)換完成后數(shù)據(jù)存儲(chǔ)于搶占數(shù)據(jù)寄存器x(ADC_PDTx)。數(shù)據(jù)寄存器內(nèi)存儲(chǔ)的是經(jīng)過(guò)處理后的數(shù)據(jù)。該處理包括數(shù)據(jù)對(duì)齊、搶占數(shù)據(jù)偏移。數(shù)據(jù)對(duì)齊分左對(duì)齊和右對(duì)齊,以半字為基準(zhǔn)擺放,如下圖6。搶占數(shù)據(jù)偏移搶占通道的數(shù)據(jù)會(huì)減去搶占數(shù)據(jù)偏移寄存器x(ADC_PCDTOx)內(nèi)的偏移量,因此搶占通道數(shù)據(jù)有可能為負(fù)值,以SIGN作為符號(hào)。圖6. 數(shù)據(jù)內(nèi)容處理

28e919fc-cf35-11ef-9434-92fbcf53809c.png

二、軟件接口

數(shù)據(jù)對(duì)齊設(shè)定,軟件由ADC基礎(chǔ)部分結(jié)構(gòu)體配置完成,其軟件實(shí)例如下:adc_base_struct.data_align=ADC_RIGHT_ALIGNMENT;adc_base_config(ADC1,&adc_base_struct);搶占數(shù)據(jù)偏移設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:/*set preempt channel's conversion value offset*/adc_preempt_offset_value_set(ADC1,ADC_PREEMPT_CHANNEL_1,0x000);adc_preempt_offset_value_set(ADC1,ADC_PREEMPT_CHANNEL_2,0x111);adc_preempt_offset_value_set(ADC1,ADC_PREEMPT_CHANNEL_3,0x202);adc_preempt_offset_value_set(ADC1,ADC_PREEMPT_CHANNEL_4,0x123);

過(guò)采樣器

一、功能介紹ADC具備過(guò)采樣功能。一次過(guò)采樣是透過(guò)轉(zhuǎn)換多次相同通道,累加轉(zhuǎn)換數(shù)據(jù)后作平均實(shí)現(xiàn)的。

  • 由ADC_OVSP的OSRSEL選擇過(guò)采樣率,此位用來(lái)定義過(guò)采樣倍數(shù);
  • 由ADC_OVSP的OSSSEL選擇過(guò)采樣移位,此位用來(lái)定義平均系數(shù)。

若平均后數(shù)據(jù)大于16位,只取靠右16位數(shù)據(jù),放入16位數(shù)據(jù)寄存器。使用過(guò)采樣時(shí),忽視數(shù)據(jù)對(duì)齊及搶占數(shù)據(jù)偏移的設(shè)定,數(shù)據(jù)一律靠右擺放。表2. 最大累加數(shù)據(jù)與過(guò)采樣倍數(shù)及位移系數(shù)關(guān)系

290d8760-cf35-11ef-9434-92fbcf53809c.png

普通通道過(guò)采樣被打斷后的恢復(fù)方式普通通道過(guò)采樣中途被搶占通道轉(zhuǎn)換打斷后的恢復(fù)方式由OOSRSEL設(shè)定

  • OOSRSEL=0:接續(xù)模式。保留已累加的數(shù)據(jù),再次開(kāi)始轉(zhuǎn)換時(shí)將從打斷處轉(zhuǎn)換;
  • OOSRSEL=1:重轉(zhuǎn)模式。累加的數(shù)據(jù)被清空,再次開(kāi)始轉(zhuǎn)換時(shí)重新開(kāi)始該通道的過(guò)采樣轉(zhuǎn)換。

圖7. 普通過(guò)采樣被打斷后的恢復(fù)方式

29243078-cf35-11ef-9434-92fbcf53809c.png

普通通道過(guò)采樣觸發(fā)模式普通通道過(guò)采樣的觸發(fā)模式由OOSTREN設(shè)定

  • OOSTREN=0:關(guān)閉觸發(fā)模式。通道的所有過(guò)采樣轉(zhuǎn)換僅需一次觸發(fā);
  • OOSTREN=1:開(kāi)啟觸發(fā)模式。通道的每個(gè)過(guò)采樣轉(zhuǎn)換均需進(jìn)行觸發(fā)。

此模式下,中途被搶占通道觸發(fā)打斷后,須重新觸發(fā)普通通道才會(huì)恢復(fù)轉(zhuǎn)換普通通道過(guò)采樣。圖8. 普通過(guò)采樣觸發(fā)模式

29373bdc-cf35-11ef-9434-92fbcf53809c.png

搶占通道過(guò)采樣搶占過(guò)采樣可與普通過(guò)采樣同時(shí)使用,也可分別使用。搶占過(guò)采樣不影響到普通過(guò)采樣的各種模式。圖9. 搶占自動(dòng)轉(zhuǎn)換下的過(guò)采樣模式

295e710c-cf35-11ef-9434-92fbcf53809c.png

二、軟件接口過(guò)采樣率、過(guò)采樣移位及過(guò)采樣使能設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:/*set oversampling ratio and shift*/adc_oversample_ratio_shift_set(ADC1,ADC_OVERSAMPLE_RATIO_8,ADC_OVERSAMPLE_SHIFT_3);/*enable ordinary oversampling*/adc_ordinary_oversample_enable(ADC1,TRUE);

/*enable preempt oversampling*/

adc_preempt_oversample_enable(ADC1,TRUE);

普通通道過(guò)采樣被打斷后的恢復(fù)方式設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:

/*set ordinary oversample restart mode*/adc_ordinary_oversample_restart_set(ADC1, ADC_OVERSAMPLE_CONTINUE);普通通道過(guò)采樣觸發(fā)模式設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:/*disable ordinary oversampling trigger mode*/adc_ordinary_oversample_trig_enable(ADC1, FALSE);

電壓監(jiān)測(cè)

一、功能介紹ADC具備電壓監(jiān)測(cè)功能。用以監(jiān)控輸入電壓與設(shè)定閾值的關(guān)系。當(dāng)轉(zhuǎn)換結(jié)果大于高邊界ADC_VMHB[11:0]寄存器或是小于低邊界ADC_VMLB[11:0]寄存器時(shí),電壓監(jiān)測(cè)超出標(biāo)志VMOR會(huì)置起。透過(guò)VMSGEN選擇對(duì)單一通道或是所有通道監(jiān)測(cè)。對(duì)單一通道監(jiān)測(cè)的話,由VMCSEL配置通道。

二、軟件接口

監(jiān)測(cè)單一通道,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:/*config voltage_monitoring*/adc_voltage_monitor_threshold_value_set(ADC1,0x100,0x000);adc_voltage_monitor_single_channel_select(ADC1,ADC_CHANNEL_5);adc_voltage_monitor_enable(ADC1,ADC_VMONITOR_SINGLE_ORDINARY_PREEMPT);監(jiān)測(cè)所有通道,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:/*config voltage_monitoring*/adc_voltage_monitor_threshold_value_set(ADC1,0x100,0x000);adc_voltage_monitor_enable(ADC1,ADC_VMONITOR_ALL_ORDINARY_PREEMPT);注意:電壓監(jiān)測(cè)一律以轉(zhuǎn)換的原始數(shù)據(jù)與12位邊界寄存器做比較,無(wú)視搶占偏移量與數(shù)據(jù)對(duì)齊的設(shè)定;若使用過(guò)采樣器,則是以ADC_VMHB[15:0]與ADC_VMLB[15:0]完整的16位寄存器與過(guò)采樣數(shù)據(jù)作比較。

中斷及狀態(tài)事件

一、功能介紹ADC含有多種中斷及狀態(tài)標(biāo)志。應(yīng)用需要結(jié)合這些標(biāo)志進(jìn)行程序設(shè)計(jì)。

  • 普通通道轉(zhuǎn)換開(kāi)始標(biāo)志(OCCS)指示普通通道轉(zhuǎn)換開(kāi)始,由軟件對(duì)其自身寫(xiě)零清除,無(wú)產(chǎn)生中斷能力。
  • 搶占通道轉(zhuǎn)換開(kāi)始標(biāo)志(PCCS)指示搶占通道轉(zhuǎn)換開(kāi)始,由軟件對(duì)其自身寫(xiě)零清除,無(wú)產(chǎn)生中斷能力。
  • 搶占通道組轉(zhuǎn)換結(jié)束標(biāo)志(PCCE)指示搶占通道組轉(zhuǎn)換完成,由軟件對(duì)其自身寫(xiě)零清除,有產(chǎn)生中斷能力。在搶占通道組轉(zhuǎn)換完成后置位,通常應(yīng)用使用此標(biāo)志來(lái)讀取搶占通道組的轉(zhuǎn)換數(shù)據(jù)。
  • 通道轉(zhuǎn)換結(jié)束標(biāo)志(CCE)指示通道序列轉(zhuǎn)換完成,由軟件對(duì)其自身寫(xiě)零或讀ODT寄存器清除,有產(chǎn)生中斷能力。在普通/搶占通道序列轉(zhuǎn)換完成后置位,應(yīng)用可使用此標(biāo)志來(lái)讀取普通/搶占通道的轉(zhuǎn)換數(shù)據(jù)。

注意:普通通道數(shù)據(jù)寄存器只有一個(gè),CCE標(biāo)志只會(huì)在序列轉(zhuǎn)換完畢時(shí)置位,在多通道應(yīng)用中,若通過(guò)查詢CCE狀態(tài)獲取數(shù)據(jù)的話,每次只能獲取序列的最后一個(gè)通道數(shù)據(jù)而造成數(shù)據(jù)丟失。因此普通通道多通道數(shù)據(jù)必須使用DMA方式獲取。DMA讀取轉(zhuǎn)換數(shù)據(jù)會(huì)同步清除CCE標(biāo)志。

  • 電壓監(jiān)測(cè)超出范圍標(biāo)志(VMOR)指示通道電壓超出設(shè)定閾值,由軟件對(duì)其自身寫(xiě)零清除,有產(chǎn)生中斷能力。在ADC的通道轉(zhuǎn)換數(shù)據(jù)超過(guò)設(shè)定閾值后置位,通常應(yīng)用使用此標(biāo)志來(lái)監(jiān)控通道電壓。

二、軟件接口

中斷使能設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:/*enable adc preempt channels conversion end interrupt*/adc_interrupt_enable(ADC1,ADC_PCCE_INT,TRUE);標(biāo)志狀態(tài)獲取,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:if(adc_flag_get(ADC1,ADC_VMOR_FLAG)!=RESET)標(biāo)志狀態(tài)清除,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:adc_flag_clear(ADC1,ADC_PCCS_FLAG);

多種轉(zhuǎn)換數(shù)據(jù)的獲取方式

一、功能介紹

ADC具備多種轉(zhuǎn)換數(shù)據(jù)的獲取方式。不同通道類型可支持的數(shù)據(jù)獲取方式不同。

  • CPU讀取搶占通道數(shù)據(jù)搶占通道不具備DMA能力,因此不管什么組合模式,搶占通道數(shù)據(jù)均由CPU讀取搶占數(shù)據(jù)寄存器x(ADC_PDTx)獲得。
  • CPU讀取普通通道數(shù)據(jù)(單通道)這種方式只適用于普通通道數(shù)量為1的情況。軟件設(shè)置ADC_CTRL1的CCEIEN位使能通道轉(zhuǎn)換結(jié)束中斷,普通通道數(shù)據(jù)由CPU讀取普通通道數(shù)據(jù)寄存器(ADC_ODT)獲得。
  • DMA讀取普通通道數(shù)據(jù)普通通道數(shù)據(jù)存儲(chǔ)于ADC自己獨(dú)立的數(shù)據(jù)寄存器中。軟件設(shè)置OCDMAEN位讓每次普通數(shù)據(jù)寄存器更新時(shí)產(chǎn)生DMA請(qǐng)求,DMA在每次收到DMA請(qǐng)求時(shí)讀取轉(zhuǎn)換數(shù)據(jù)。

二、軟件接口

CPU讀取搶占通道數(shù)據(jù),軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:if(adc_flag_get(ADC1,ADC_PCCE_FLAG)!=RESET){adc_flag_clear(ADC1,ADC_PCCE_FLAG);adc1_preempt_valuetab[preempt_conversion_count][0]=adc_preempt_conversion_data_get(ADC1,ADC_PREEMPT_CHANNEL_1);adc1_preempt_valuetab[preempt_conversion_count][1]=adc_preempt_conversion_data_get(ADC1,ADC_PREEMPT_CHANNEL_2);adc1_preempt_valuetab[preempt_conversion_count][2]=adc_preempt_conversion_data_get(ADC1,ADC_PREEMPT_CHANNEL_3);preempt_conversion_count++;}CPU讀取普通通道數(shù)據(jù),軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:while(adc_flag_get(ADC1,ADC_CCE_FLAG)==RESET);*(p_adc1_ordinary++)=adc_ordinary_conversion_data_get(ADC1);DMA讀取普通通道數(shù)據(jù),軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:/*enable dma mode*/adc_dma_mode_enable(ADC1,TRUE);dma_flexible_config(DMA1,FLEX_CHANNEL1,DMA_FLEXIBLE_ADC1);dma_default_para_init(&dma_init_struct);dma_init_struct.buffer_size=3;dma_init_struct.direction=DMA_DIR_PERIPHERAL_TO_MEMORY;…dma_init(DMA1_CHANNEL1,&dma_init_struct);dma_channel_enable(DMA1_CHANNEL1,TRUE);注意:使用CPU讀取普通轉(zhuǎn)換數(shù)據(jù)時(shí),為避免數(shù)據(jù)讀取不及時(shí),通道采樣周期需要足夠大。

ADC配置解析

以下對(duì)ADC的配置流程及數(shù)據(jù)獲取方法進(jìn)行說(shuō)明。

ADC配置流程

ADC的配置一般包括如下內(nèi)容

  • 外部觸發(fā)源配置ADC外部觸發(fā)源有TMR、EXINT或軟件觸發(fā),其配置無(wú)特殊性,參考普通的TMR或EXINT配置即可。

注意:此處僅是觸發(fā)源的配置,觸發(fā)源的使能需在ADC全部配置完畢后才可進(jìn)行。

  • DMA配置使能ADC普通通道轉(zhuǎn)換數(shù)據(jù)可通過(guò)DMA傳輸,若應(yīng)用需要DMA傳輸時(shí),需提前進(jìn)行DMA的初始化配置,其配置無(wú)特殊性,參考普通的DMA配置即可。
  • 開(kāi)啟ADC數(shù)字時(shí)鐘開(kāi)啟ADC數(shù)字時(shí)鐘,允許進(jìn)行相關(guān)功能配置。
  • ADC分頻設(shè)定ADC模擬部分的時(shí)鐘,其由HCLK分頻而來(lái),可設(shè)定2/3/4/5/6/8/12/16中的任意一種分頻。
  • 內(nèi)部溫度傳感器及Vintrv(非必需)使能內(nèi)部溫度傳感器及內(nèi)部參考電壓,其分別連接到ADC1的CH16和CH17。
  • ADC基礎(chǔ)部分結(jié)構(gòu)體配置包括序列模式、反復(fù)模式、數(shù)據(jù)對(duì)齊、普通轉(zhuǎn)換序列長(zhǎng)度。序列模式不論普通還是搶占組,只要配置有多個(gè)通道,就需要開(kāi)啟序列模式。反復(fù)模式若應(yīng)用需要周期性的觸發(fā)轉(zhuǎn)換時(shí),就需要關(guān)閉反復(fù)模式,不然周期性的觸發(fā)將變得無(wú)效。當(dāng)應(yīng)用不想周期性的觸發(fā),而期望單次觸發(fā)后就不停的轉(zhuǎn)換設(shè)定通道組時(shí)需開(kāi)啟反復(fù)模式。數(shù)據(jù)對(duì)齊設(shè)定轉(zhuǎn)換數(shù)據(jù)靠右或是靠左對(duì)齊放置于數(shù)據(jù)寄存器。普通轉(zhuǎn)換序列長(zhǎng)度可設(shè)定1~16中的任何一個(gè)長(zhǎng)度,指示單個(gè)普通序列包含的通道個(gè)數(shù),需與實(shí)際普通通道序列個(gè)數(shù)一致。
  • 普通通道配置包含通道配置、觸發(fā)配置、數(shù)據(jù)傳輸方式。通道配置由轉(zhuǎn)換順序、通道值、采樣周期的設(shè)定組成。其中不同順序可配置相同通道值。觸發(fā)配置選擇普通通道的觸發(fā)源。數(shù)據(jù)傳輸方式可設(shè)定CPU或DMA傳輸轉(zhuǎn)換數(shù)據(jù)。
  • 搶占通道配置包含通道個(gè)數(shù)、通道配置、觸發(fā)配置。通道個(gè)數(shù)可設(shè)定1~4中的任何一個(gè)長(zhǎng)度,指示單個(gè)搶占序列包含的通道個(gè)數(shù),需與實(shí)際搶占通道序列個(gè)數(shù)一致。通道配置由轉(zhuǎn)換順序、通道值、采樣周期的設(shè)定組成。其中不同順序可配置相同通道值。觸發(fā)配置設(shè)置搶占通道的觸發(fā)源。
  • 特殊模式配置(非必需)分割模式包括每次觸發(fā)轉(zhuǎn)換的普通通道個(gè)數(shù)、普通通道分割模式使能、搶占通道分割模式使能。搶占自動(dòng)轉(zhuǎn)換模式用于設(shè)定普通組轉(zhuǎn)換結(jié)束后的搶占通道組自動(dòng)轉(zhuǎn)換使能。
  • 中斷配置使能對(duì)應(yīng)中斷,包括通道轉(zhuǎn)換結(jié)束中斷、搶占通道組轉(zhuǎn)換結(jié)束中斷、電壓檢測(cè)超過(guò)范圍中斷中的一個(gè)或多個(gè)。
  • ADC上電使能ADC讓ADC上電,由于上電需要穩(wěn)定時(shí)間,因此ADC上電后需等待tSTAB后才可進(jìn)行后續(xù)動(dòng)作。
  • ADC校準(zhǔn)為保障ADC轉(zhuǎn)換數(shù)據(jù)準(zhǔn)確,在ADC上電后需進(jìn)行校準(zhǔn)。其包含:A/D初始化校準(zhǔn)、等待初始化校準(zhǔn)完成、A/D校準(zhǔn)、等待校準(zhǔn)完成。

至此,ADC的初始化配置就算全部完成。隨后,可通過(guò)軟件或使能硬件觸發(fā)源進(jìn)行觸發(fā)轉(zhuǎn)換。

ADC數(shù)據(jù)獲取方法

ADC支持多種數(shù)據(jù)獲取方法,通常可概括為如下幾種

  • CPU獲取搶占通道數(shù)據(jù)搶占通道數(shù)據(jù)不具備DMA能力,只能透過(guò)CPU獲取。推薦使用中斷獲取,方法如下1) 搶占通道組轉(zhuǎn)換結(jié)束中斷使能;
  • 2) 搶占通道組轉(zhuǎn)換結(jié)束中斷函數(shù)內(nèi)將轉(zhuǎn)換數(shù)據(jù)緩存進(jìn)數(shù)組內(nèi);3) 其他應(yīng)用邏輯內(nèi)透過(guò)數(shù)組內(nèi)的數(shù)據(jù)進(jìn)行數(shù)據(jù)的后續(xù)算法處理。
  • CPU讀取普通通道數(shù)據(jù)AT32F405/402 CPU方式讀取普通通道數(shù)據(jù)僅支持普通通道數(shù)為1的情形。為保障數(shù)據(jù)讀取的實(shí)時(shí)性,同樣推薦使用中斷獲取,方法如下:
  • 1) 通道轉(zhuǎn)換結(jié)束中斷使能;
  • 2) 通道組轉(zhuǎn)換結(jié)束中斷函數(shù)內(nèi)將轉(zhuǎn)換數(shù)據(jù)緩存進(jìn)數(shù)組內(nèi);
  • 3) 其他應(yīng)用邏輯內(nèi)透過(guò)數(shù)組內(nèi)的數(shù)據(jù)進(jìn)行數(shù)據(jù)的后續(xù)算法處理。
  • DMA讀取普通通道數(shù)據(jù)普通通道數(shù)據(jù)具備DMA能力。為避免軟件耗時(shí),可直接采用DMA讀取轉(zhuǎn)換數(shù)據(jù),方法如下
  • 1) 初始化并使能DMA;2) 使能ADC的DMA模式;
  • 3) 在DMA傳輸完成中斷函數(shù)內(nèi)獲取DMA的buffer數(shù)據(jù);
  • 4) 其他應(yīng)用邏輯內(nèi)透過(guò)buffer數(shù)據(jù)進(jìn)行數(shù)據(jù)的后續(xù)算法處理。

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

    關(guān)注

    99

    文章

    6611

    瀏覽量

    547735
  • 雅特力
    +關(guān)注

    關(guān)注

    0

    文章

    177

    瀏覽量

    8400
  • AT32
    +關(guān)注

    關(guān)注

    1

    文章

    120

    瀏覽量

    2498
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AT32F402/405時(shí)鐘配置入門(mén)指南

    AT32F402/405時(shí)鐘配置本應(yīng)用入門(mén)指南主要介紹兩部分內(nèi)容:1、基于提供的V2.x.
    發(fā)表于 10-26 06:37

    AT32F402/405 I 2C使用指南

    AT32F402/405 I2C使用指南本文主要就I2C 總線接口的基本功能進(jìn)行講解和案列解析。
    發(fā)表于 10-26 08:17

    AT32F402/405 DMA使用指南

    AT32F402/405 DMA使用指南主要就DMA 的基本功能進(jìn)行講解和案列解析。
    發(fā)表于 10-26 07:29

    AT32F402_405 ADC使用指南

    AT32F402_405 ADC使用指南主要以ADC 的特色功能進(jìn)行講解和案列解析。
    發(fā)表于 10-26 06:09

    AT32F402/405的GPIO功能及固件驅(qū)動(dòng)程序API的配置和使用

    AT32F402/405 GPIO Application Note介紹AT32F402/405的GPIO功能及固件驅(qū)動(dòng)程序API的配置和使用,并對(duì)BSP例程的軟件設(shè)計(jì)加以說(shuō)明,同時(shí)演
    發(fā)表于 10-26 07:03

    AT32F402/405 PWC應(yīng)用筆記

    AT32F402/405 PWC應(yīng)用筆記主要以低功耗為基礎(chǔ)進(jìn)行講解和案例解析。
    發(fā)表于 10-26 06:33

    AT32F402/405安全庫(kù)應(yīng)用說(shuō)明

    AT32F402/405 Security Library Application Note主要在闡述AT32F402/405系列安全庫(kù)區(qū)的應(yīng)用原理、軟件使用方法及范例程序。
    發(fā)表于 10-26 08:30

    展臺(tái)首日速遞,AT32 MCU精彩亮相

    熱門(mén)領(lǐng)域產(chǎn)品齊聚,一展科技創(chuàng)新風(fēng)采。新品登場(chǎng),AT32F402/F405拓展高速USB應(yīng)用新紀(jì)元A
    的頭像 發(fā)表于 08-24 08:17 ?793次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>展臺(tái)首日速遞,AT32 MCU精彩亮相

    AT32F402和AT32F405系列MCU 9月正式投入量產(chǎn)

    力作為32位MCU創(chuàng)新領(lǐng)導(dǎo)者,領(lǐng)先業(yè)界研發(fā)USB OTG產(chǎn)品拓展其功能性,于近日正式推出主流型AT32F402和AT32F405系列新品,集成獨(dú)立的HS USB OTG(內(nèi)建PHY
    發(fā)表于 09-06 14:55 ?1626次閱讀

    AT32講堂088 | AT32F402/F405時(shí)鐘配置

    介紹如何結(jié)合提供的V2.x.x的板級(jí)支持包(BSP)來(lái)配置時(shí)鐘。以下介紹時(shí)鐘配置的方法主要分兩種:1、以手動(dòng)編寫(xiě)代碼調(diào)用BSP中提供的驅(qū)動(dòng)函數(shù)接口來(lái)進(jìn)行時(shí)鐘配
    的頭像 發(fā)表于 09-15 08:08 ?814次閱讀
    AT32講堂088 | <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32F402</b>/<b class='flag-5'>F405</b>時(shí)鐘配置

    AT32F402/F405 GPIO應(yīng)用筆記

    GPIO特性AT32F402/405支持多達(dá)56個(gè)雙向I/O引腳,這些引腳分為5組,分別為PA0-PA15、PB0-PB15、PC0-PC15、PD2、PF0-PF1、PF4-PF7、PF11、每個(gè)
    的頭像 發(fā)表于 01-10 17:28 ?597次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32F402</b>/<b class='flag-5'>F405</b> GPIO應(yīng)用筆記

    AT32F402/F405時(shí)鐘配置

    電子發(fā)燒友網(wǎng)站提供《AT32F402/F405時(shí)鐘配置.pdf》資料免費(fèi)下載
    發(fā)表于 01-15 15:24 ?0次下載
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32F402</b>/<b class='flag-5'>F405</b>時(shí)鐘配置

    AT32F402/F405 PWC 應(yīng)用筆記

    關(guān)系電壓調(diào)節(jié)器,電壓調(diào)節(jié)器的幾個(gè)工作狀態(tài)省電模式,包括睡眠模式、深度睡眠模式、待機(jī)模式圖1.電源域框圖PWC基本功能解析供電方案一、功能介紹AT32F402/40
    的頭像 發(fā)表于 01-20 18:37 ?319次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32F402</b>/<b class='flag-5'>F405</b> PWC 應(yīng)用筆記

    AT32F402/F405安全庫(kù)

    微控制器應(yīng)用中一項(xiàng)很重要的課題。因?yàn)檫@一重要的需求,AT32F402/405系列提供了安全庫(kù)區(qū)(SLIB)的功能,以防止重要的IP-Code被終端用戶的程序做修改
    的頭像 發(fā)表于 01-20 18:37 ?391次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32F402</b>/<b class='flag-5'>F405</b>安全庫(kù)

    AT32F402/F405入門(mén)使用指南

    搭建AT32開(kāi)發(fā)環(huán)境一、調(diào)試工具及開(kāi)發(fā)板目前AT32F402/AT32F405開(kāi)發(fā)板都自帶AT-Link-EZ調(diào)試工具,AT-Link-EZ如下圖左邊紅框所示,它也可拆開(kāi)后單獨(dú)搭配其他電路板使用,支持IDE在線調(diào)試、在線燒錄、USB轉(zhuǎn)串口等功能。圖1.AT-START
    的頭像 發(fā)表于 03-28 18:59 ?265次閱讀
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32F402</b>/<b class='flag-5'>F405</b>入門(mén)<b class='flag-5'>使用指南</b>