?
ADC簡(jiǎn)介
? ADC控制器的功能極其強(qiáng)大。其包含但不限于以下內(nèi)容
時(shí)鐘及狀態(tài),由數(shù)字和模擬時(shí)鐘兩個(gè)部分組成
分辨率及采樣轉(zhuǎn)換,可配置分辨率為12/10/8/6位的轉(zhuǎn)換,采樣周期支持廣范圍的配置
自校準(zhǔn),自帶校準(zhǔn)功能以糾正數(shù)據(jù)偏移
基本模式,支持多種模式,不同模式可組合使用滿(mǎn)足多種應(yīng)用
不同優(yōu)先權(quán)的通道,普通通道與搶占通道具備不同的優(yōu)先權(quán)
多種獨(dú)立的觸發(fā)源,包括TMR、EXINT、軟觸發(fā)等多種觸發(fā)選擇
數(shù)據(jù)后級(jí)處理,包括數(shù)據(jù)的對(duì)齊,搶占通道偏移量等多種處理
轉(zhuǎn)換中止,可軟件控制在ADC不掉電狀態(tài)下實(shí)現(xiàn)轉(zhuǎn)換中止
過(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ù)的讀取
聯(lián)動(dòng)多ADC的主從模式,可設(shè)定同時(shí)、交錯(cuò)、位移等多種組合模式,且支持單及雙從機(jī)選擇
圖1. ADC1框圖
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í)例如下:
?
當(dāng)ADC時(shí)鐘使能后,軟件即可開(kāi)始進(jìn)行ADC的一些相關(guān)配置。
ADC預(yù)分頻設(shè)定,軟件由ADC公共部分結(jié)構(gòu)體配置完成,其軟件實(shí)例如下:
此項(xiàng)實(shí)際用于設(shè)定ADC模擬部分的時(shí)鐘,其由HCLK分頻而來(lái),故ADCCLK=HCLK/div 注意:
1)模擬部分的ADCCLK由HCLK分頻而來(lái),其不可大于80MHz;
2)ADC數(shù)字部分掛在PCLK2上,為避免同步問(wèn)題,ADCCLK頻率不可高于PCLK2;
3)ADC1、ADC2、ADC3都有自己獨(dú)立的時(shí)鐘使能位。ADC公共部分無(wú)獨(dú)立的時(shí)鐘使能位,其會(huì)跟隨任意ADCx時(shí)鐘使能而自動(dòng)打開(kāi);
4)ADC模擬部分電源由ADC_CTRL2的ADCEN,其不受ADC的時(shí)鐘狀態(tài)影響。典型的,如果系統(tǒng)需要進(jìn)入深度睡眠模式,如果不關(guān)閉ADCEN,此時(shí)ADC模擬器件將還會(huì)消耗電流;
5)ADC上電有一段等待時(shí)間,應(yīng)用應(yīng)該在判定到ADC的RDY?flag置位后再執(zhí)行后續(xù)觸發(fā)等操作。 ?
分辨率及采樣轉(zhuǎn)換
? 功能介紹
ADC可隨意設(shè)定12、10、8、6位分辨率使用。 ADC可設(shè)定2.5、6.5、12.5、24.5、47.5、92.5、247.5、640.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)換方式需要分辨率位數(shù)個(gè)ADCCLK的轉(zhuǎn)換時(shí)間來(lái)完成單通道的轉(zhuǎn)換,再結(jié)合數(shù)據(jù)處理,因此單個(gè)通道的整體轉(zhuǎn)換時(shí)間即
?
示例: CSPTx選擇6.5周期,CRSEL選擇10位,一次轉(zhuǎn)換需要6.5+10+0.5=17個(gè)ADCCLK周期。 ?
軟件接口
ADC分辨率設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:
?
注意:ADC的自校準(zhǔn)只能在12位分辨率下進(jìn)行,切分辨需安排在校準(zhǔn)完成后執(zhí)行。
ADC采樣周期設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:
注意: 不同通道可設(shè)定不同的采樣周期; 當(dāng)采用中斷或輪詢(xún)方式獲取普通通道數(shù)據(jù),為避免溢出,建議合理增大采樣周期; 為避免充電不充分導(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)值有兩種獲取方式:
軟件下自校準(zhǔn)命令,由硬件自動(dòng)計(jì)算,產(chǎn)生的校準(zhǔn)值保存在ADC->CALVAL寄存器內(nèi)
軟件直接根據(jù)經(jīng)驗(yàn)值,手動(dòng)設(shè)定校準(zhǔn)值,該值同樣被保存在ADC->CALVAL寄存器內(nèi)
自校準(zhǔn)的軟件流程如下
在12位分辨率狀態(tài)下使能ADC
等待ADC的RDY標(biāo)志置位
執(zhí)行初始化校準(zhǔn)命令并等待初始化校準(zhǔn)完成
執(zhí)行校準(zhǔn)命令并等待校準(zhǔn)完成
根據(jù)應(yīng)用需求切換到期望配置的分辨率
等待ADC的RDY標(biāo)志置位
執(zhí)行完上述流程后,即可開(kāi)始進(jìn)行ADC的觸發(fā)轉(zhuǎn)換。
? 軟件接口
完整的校準(zhǔn)及設(shè)定分辨率需由組合命令實(shí)現(xiàn),依據(jù)校準(zhǔn)值設(shè)定方式可區(qū)分如下兩種自校準(zhǔn)方式,其軟件實(shí)例如下: ?
寫(xiě)經(jīng)驗(yàn)值校準(zhǔn)方式,其軟件實(shí)例如下:
?
注意: 校準(zhǔn)值的存放不會(huì)置位OCCE標(biāo)志,不會(huì)產(chǎn)生中斷或DMA請(qǐng)求; ADC的自校準(zhǔn)只能在12位分辨率下進(jìn)行,切分辨需安排在校準(zhǔn)完成后執(zhí)行。 ?
基本模式
? 1、功能介紹
序列模式
ADC支持序列模式設(shè)定,開(kāi)啟序列模式后,每次觸發(fā)將序列中的通道依序轉(zhuǎn)換一次。 用戶(hù)于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. 序列模式
反復(fù)模式
ADC支持反復(fù)模式設(shè)定,開(kāi)啟反復(fù)模式后,當(dāng)檢測(cè)到觸發(fā)后就即會(huì)反復(fù)不斷地轉(zhuǎn)換普通通道組。
圖3. 反復(fù)模式+搶占自動(dòng)轉(zhuǎn)換模式
分割模式
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. 分割模式
搶占自動(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)換模式
? ?
2、軟件接口
ADC序列模式和反復(fù)模式設(shè)定,由ADC基礎(chǔ)部分結(jié)構(gòu)體配置完成,其軟件實(shí)例如下:
?
注意: 序列模式對(duì)普通及搶占通道組均有效; 反復(fù)模式僅對(duì)普通通道組有效,搶占通道組不具備反復(fù)模式功能; 反復(fù)模式與分割模式不可共用; 反復(fù)模式可與搶占自動(dòng)轉(zhuǎn)換模式共用,將實(shí)現(xiàn)依次反復(fù)的轉(zhuǎn)換普通通道序列及搶占通道序列。 ADC分割模式設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:
?
注意: 分割模式對(duì)普通及搶占通道組均有效; 搶占通道組分割模式子組別長(zhǎng)度不可設(shè)定,其固定為單個(gè)通道; 分割模式與反復(fù)模式、搶占自動(dòng)轉(zhuǎn)換模式不可共用,普通通道與搶占通道的分割模式不可共用。 搶占自動(dòng)轉(zhuǎn)換模式設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:
?
注意: 搶占自動(dòng)轉(zhuǎn)換模式僅對(duì)搶占通道組有效; 搶占自動(dòng)轉(zhuǎn)換模式與分割模式不可共用。 ?
不同優(yōu)先權(quán)的通道
? 1、功能介紹
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)換。
? 2、軟件接口
普通通道組設(shè)定,軟件包括通道數(shù)量、通道數(shù)值、轉(zhuǎn)換順序、采樣周期的設(shè)定,其軟件實(shí)例如下:
?
搶占通道組設(shè)定,軟件包括通道數(shù)量、通道數(shù)值、轉(zhuǎn)換順序、采樣周期的設(shè)定,其軟件實(shí)例如下:
?
注意: 不同通道可以設(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ā)可設(shè)定觸發(fā)極性(觸發(fā)極性可選擇禁止邊沿觸發(fā)、上升沿觸發(fā)、下降沿觸發(fā)或任意邊沿觸發(fā))。 表1. 普通通道觸發(fā)源
?
表2. 搶占通道觸發(fā)源
? ?
軟件接口
軟件寫(xiě)寄存器觸發(fā)設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:
?
在ADC Ready后,軟件即可執(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í)例如下:
?
在ADC Ready后,TMR1CH1的上升沿事件就會(huì)觸發(fā)普通通道組轉(zhuǎn)換,TMR3CH4的上升沿事件就會(huì)觸發(fā)搶占通道組轉(zhuǎn)換。 注意: 觸發(fā)間隔需要大于通道組轉(zhuǎn)換的時(shí)間,轉(zhuǎn)換期間發(fā)生的相同通道組的觸發(fā)會(huì)被忽略; 使用軟件寫(xiě)寄存器觸發(fā)時(shí),對(duì)應(yīng)觸發(fā)極性必須選擇禁止邊沿觸發(fā); 搶占通道轉(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); 多ADC的主從模式下,需要將從ADC的觸發(fā)極性選擇為禁止邊沿觸發(fā)。 ?
數(shù)據(jù)后級(jí)處理
? 1、功能介紹
ADC具備專(zhuān)有的數(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ì)齊。分辨率CRSEL為6位時(shí),數(shù)據(jù)存儲(chǔ)方式以字節(jié)為基準(zhǔn)擺放,其余皆以半字為基準(zhǔn)擺放。
搶占數(shù)據(jù)偏移
搶占通道的數(shù)據(jù)會(huì)減去搶占數(shù)據(jù)偏移寄存器x(ADC_PCDTOx)內(nèi)的偏移量,因此搶占通道數(shù)據(jù)有可能為負(fù)值,以SIGN作為符號(hào)。 圖6. 數(shù)據(jù)內(nèi)容處理
? ?
2、軟件接口
數(shù)據(jù)對(duì)齊設(shè)定,軟件由ADC基礎(chǔ)部分結(jié)構(gòu)體配置完成,其軟件實(shí)例如下:
?
搶占數(shù)據(jù)偏移設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:
? ?
轉(zhuǎn)換中止
? 功能介紹
ADC具備轉(zhuǎn)換中止功能。在ADC轉(zhuǎn)換過(guò)程中,用戶(hù)可利用ADC_CTRL2的ADABRT使ADC停止轉(zhuǎn)換。停止轉(zhuǎn)換后,轉(zhuǎn)換順序回歸第一個(gè)通道,用戶(hù)即可重新編排通道順序,再次觸發(fā)ADC將從頭開(kāi)始執(zhí)行新序列的轉(zhuǎn)換。 圖7. 轉(zhuǎn)換中止時(shí)序 ?
軟件接口
轉(zhuǎn)換中止設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:
?
注意: 轉(zhuǎn)換中止命令對(duì)普通及搶占通道轉(zhuǎn)換都有效; 轉(zhuǎn)換中止功能類(lèi)似ADC重上電,但是轉(zhuǎn)換中止不會(huì)使ADC掉電,不存在ADC上電喚醒時(shí)間; 轉(zhuǎn)換中止的執(zhí)行需要時(shí)間,在執(zhí)行轉(zhuǎn)換中止命令后一定要等待ADABRT位被硬件清除后才可進(jìn)行后續(xù)的觸發(fā)轉(zhuǎn)換。 ?
過(guò)采樣器
? 1、功能介紹
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ù)一律靠右擺放。
表3. 最大累加數(shù)據(jù)與過(guò)采樣倍數(shù)及位移系數(shù)關(guān)系
普通通道過(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)換。
圖8. 普通過(guò)采樣被打斷后的恢復(fù)方式
普通通道過(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ò)采樣。
圖9. 普通過(guò)采樣觸發(fā)模式
搶占通道過(guò)采樣
搶占過(guò)采樣可與普通過(guò)采樣同時(shí)使用,也可分別使用。搶占過(guò)采樣不影響到普通過(guò)采樣的各種模式。
圖10. 搶占自動(dòng)轉(zhuǎn)換下的過(guò)采樣模式
? ?
2、軟件接口
過(guò)采樣率、過(guò)采樣移位及過(guò)采樣使能設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:
?
普通通道過(guò)采樣被打斷后的恢復(fù)方式設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:
?
普通通道過(guò)采樣觸發(fā)模式設(shè)定,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:
? ?
電壓監(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í)例如下:
?
監(jiān)測(cè)所有通道,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:
?
注意: 電壓監(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ì)。
ADC準(zhǔn)備就緒標(biāo)志(RDY)
指示ADC狀態(tài),只讀位,軟件不可清除,無(wú)產(chǎn)生中斷能力。 ADC上電完畢后會(huì)置位,只有RDY標(biāo)志置位后,才可進(jìn)行校準(zhǔn)及觸發(fā)轉(zhuǎn)換。
普通通道轉(zhuǎn)換溢出標(biāo)志(OCCO)
指示ADC轉(zhuǎn)換數(shù)據(jù)溢出,標(biāo)志由軟件對(duì)其自身寫(xiě)零清除,有產(chǎn)生中斷能力。 無(wú)獨(dú)立的溢出檢測(cè)使能位,在使能DMA傳輸或者EOCSFEN=1時(shí)有效,當(dāng)上一筆轉(zhuǎn)換數(shù)據(jù)未被讀走,下一筆轉(zhuǎn)換數(shù)據(jù)已產(chǎn)生時(shí)就會(huì)置位此標(biāo)志。標(biāo)志清除后的轉(zhuǎn)換恢復(fù)分如下兩種情況: 1)非組合模式下,此標(biāo)志置位后,當(dāng)前轉(zhuǎn)換停止,轉(zhuǎn)換序列不被清零,因此可不用復(fù)位ADC, 直接清除標(biāo)志再次觸發(fā)轉(zhuǎn)換即可; 2)組合模式下,此標(biāo)志置位后,當(dāng)前轉(zhuǎn)換停止,轉(zhuǎn)換序列同樣保持,但由于此時(shí)可能已丟失同步規(guī)則,因此需要復(fù)位各ADC,然后重新進(jìn)行觸發(fā)轉(zhuǎn)換。
普通通道轉(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)志(OCCE)
指示普通通道轉(zhuǎn)換完成,由軟件對(duì)其自身寫(xiě)零或讀ODT寄存器清除,有產(chǎn)生中斷能力。 在普通通道轉(zhuǎn)換完成后置位,應(yīng)用可使用此標(biāo)志來(lái)讀取普通通道的轉(zhuǎn)換數(shù)據(jù)(EOCSFEN=1)。 注意:DMA讀取轉(zhuǎn)換數(shù)據(jù)會(huì)同步清除OCCE標(biāo)志,因此在使用DMA時(shí)禁止再使用OCCE標(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í)例如下:
?
標(biāo)志狀態(tài)獲取,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:
?
標(biāo)志狀態(tài)清除,軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:
?
注意: 435的三個(gè)ADC共用一個(gè)中斷向量; 通用狀態(tài)寄存器內(nèi)有每個(gè)ADC的狀態(tài)標(biāo)志的映像,此映像為只讀,不可通過(guò)映像來(lái)清除標(biāo)志。 ?
多種轉(zhuǎn)換數(shù)據(jù)的獲取方式
? 1、功能介紹
ADC具備多種轉(zhuǎn)換數(shù)據(jù)的獲取方式。不同通道類(lèi)型、不同組合模式可支持的數(shù)據(jù)獲取方式不同。
CPU讀取搶占通道數(shù)據(jù)
搶占通道不具備DMA能力,因此不管什么組合模式,搶占通道數(shù)據(jù)均由CPU讀取搶占數(shù)據(jù)寄存器x(ADC_PDTx)獲得。
CPU讀取普通通道數(shù)據(jù)(非組合模式)
只適用于非組合模式,軟件設(shè)置ADC_CTRL2的EOCSFEN位讓每次普通數(shù)據(jù)寄存器更新時(shí)置位OCCE標(biāo)志,軟件通過(guò)OCCE標(biāo)志讀取轉(zhuǎn)換數(shù)據(jù)。
DMA讀取普通通道數(shù)據(jù)(非組合模式)
非組合模式下,普通通道數(shù)據(jù)存儲(chǔ)于 ADC 自己獨(dú)立的數(shù)據(jù)寄存器中。軟件設(shè)置OCDMAEN及OCDRCEN位讓每次普通數(shù)據(jù)寄存器更新時(shí)產(chǎn)生DMA請(qǐng)求,DMA在每次收到DMA請(qǐng)求時(shí)讀取轉(zhuǎn)換數(shù)據(jù)。
DMA讀取普通通道數(shù)據(jù)(組合模式)
組合模式下,普通通道數(shù)據(jù)會(huì)共同存儲(chǔ)于通用普通數(shù)據(jù)寄存器中。存儲(chǔ)方式透過(guò)ADC_CCTRL的MSDMASEL位配置,提供5種模式。只要MSDMASEL不為0,就會(huì)在每次數(shù)據(jù)備齊時(shí)使用ADC1的DMA通道請(qǐng)求DMA搬運(yùn)數(shù)據(jù)。
表4. 主從組合模式的DMA模式
?
圖11. DMA模式與ADC模式對(duì)應(yīng)關(guān)系
? ?
2、軟件接口
CPU讀取搶占通道數(shù)據(jù),軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:
?
CPU讀取普通通道數(shù)據(jù)(非組合模式),軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:
?
DMA讀取普通通道數(shù)據(jù)(非組合模式),軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:
?
DMA讀取普通通道數(shù)據(jù)(組合模式),軟件由單獨(dú)的函數(shù)接口實(shí)現(xiàn),其軟件實(shí)例如下:
?
注意: 使用CPU讀取普通轉(zhuǎn)換數(shù)據(jù)時(shí),為避免溢出,通道采樣周期需要足夠大; 三個(gè)ADC共用一個(gè)中斷向量,故中斷服務(wù)函數(shù)一定要簡(jiǎn)潔,以避免因中斷無(wú)法及時(shí)響應(yīng)而導(dǎo)致數(shù)據(jù)溢出; 組合模式下,不可使用CPU讀取普通通道轉(zhuǎn)換數(shù)據(jù); 組合模式下,一定要按照可支持的對(duì)應(yīng)關(guān)系選用DMA模式。 ?
聯(lián)動(dòng)多ADC的主從模式
? 功能介紹 ADC主從模式即通過(guò)觸發(fā)主機(jī)來(lái)聯(lián)動(dòng)從機(jī)進(jìn)行通道轉(zhuǎn)換,并且將通用普通數(shù)據(jù)寄存器作為獲取主從ADC普通通道數(shù)據(jù)的單一接口。 單從機(jī)主從模式以ADC1作為主機(jī),ADC2作為從機(jī),ADC3獨(dú)立動(dòng)作。雙從機(jī)主從模式以ADC1作為主機(jī),ADC2與ADC3作為從機(jī)。
圖12. 主從模式的ADC框圖
同時(shí)模式
同時(shí)模式可用于普通/搶占/普通搶占組合。配置同時(shí)模式后,可觸發(fā)主機(jī),使主機(jī)與從機(jī)同時(shí)轉(zhuǎn)換各自的通道。在此模式下,必須使用相同的采樣時(shí)間以及相同的序列長(zhǎng)度,以避免主從之間失去同步,遺失數(shù)據(jù)。
圖13. 普通同時(shí)模式
?
圖14. 搶占同時(shí)模式
?
注意: 同時(shí)模式下,需要禁止來(lái)自從機(jī)的觸發(fā); 同時(shí)模式下,觸發(fā)間隔需要大于任意通道組的轉(zhuǎn)換周期; 同樣的通道不可同時(shí)被多個(gè)ADC采樣,因此禁止將相同通道安排在不同ADC的同樣序列位置。
交錯(cuò)觸發(fā)模式
交錯(cuò)觸發(fā)模式適用于搶占通道組,可單獨(dú)使用也可與普通同時(shí)模式組合使用。配置搶占交錯(cuò)觸發(fā)模式后,可多次觸發(fā)主機(jī)的搶占通道,促使主從ADC輪流轉(zhuǎn)換搶占通道組。
圖15. 搶占交錯(cuò)觸發(fā)模式
位移模式
位移模式適用于普通通道組,此模式只可單獨(dú)使用,不能與搶占通道組合使用。配置普通位移模式后,可觸發(fā)主機(jī)普通通道,使各ADC之間自動(dòng)在普通通道的轉(zhuǎn)換上時(shí)序位移。 位移長(zhǎng)度可由軟件經(jīng)ADC_CCTRL寄存器中的ASISEL位進(jìn)行設(shè)定。 此模式下,硬件會(huì)保證不同ADC間的采樣間隔至少2.5個(gè)ADCCLK。當(dāng)軟件設(shè)定的位移長(zhǎng)度無(wú)法滿(mǎn)足這個(gè)條件時(shí),軟件設(shè)定將會(huì)變得無(wú)效。因此利用這個(gè)特性,可以將相同通道安排在不同ADC的同樣序列位置。
圖16. 普通位移模式
?
圖17. 使用DMA模式2時(shí)的位移轉(zhuǎn)換
?
注意: 位移模式下禁止搶占通道觸發(fā)、禁止從機(jī)的普通通道觸發(fā) ? 軟件接口 聯(lián)動(dòng)多ADC的主從模式設(shè)定,軟件由公共部分結(jié)構(gòu)體配置完成,其軟件實(shí)例如下:
?
注意: 為避免主從間失去同步,主從機(jī)必須配置相同分辨率; 組合模式下,一定要按照可支持的對(duì)應(yīng)關(guān)系選用DMA模式; 若有同時(shí)使用多個(gè)ADC低解析度轉(zhuǎn)換的需求,建議使用主從模式搭配DMA1或DMA2。 ?
ADC配置解析
? 以下對(duì)ADC的配置流程及數(shù)據(jù)獲取方法進(jìn)行說(shuō)明。 ?
ADC配置流程
? ADC的配置一般包括如下內(nèi)容
外部觸發(fā)源配置
ADC外部觸發(fā)源有TMR或EXINT,其配置無(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公共部分結(jié)構(gòu)體配置
包括主從模式、ADC分頻、主從模式的DMA模式、DMA請(qǐng)求接續(xù)使能、位移模式位移長(zhǎng)度、內(nèi)部溫度傳感器及Vintrv、Vbat相關(guān)配置。
主從模式
依據(jù)從機(jī)數(shù)量、通道類(lèi)型、組合類(lèi)型進(jìn)行選擇,支持多達(dá)13種模式。
ADC分頻
設(shè)定ADC模擬部分的時(shí)鐘,其由HCLK分頻而來(lái),可設(shè)定2~17中的任意一種分頻。
主從模式的DMA模式
需要結(jié)合主從模式進(jìn)行選擇,支持多達(dá)5種模式,搶占組合模式下需禁止DMA模式
DMA請(qǐng)求接續(xù)使能
設(shè)定在傳輸完DMA設(shè)定個(gè)數(shù)數(shù)據(jù)后,普通通道轉(zhuǎn)換完畢是否再產(chǎn)生DMA請(qǐng)求。
位移模式位移長(zhǎng)度
設(shè)定位移模式下相鄰ADC間的采樣間隔時(shí)間,可設(shè)定5~20個(gè)ADCCLK中的任意一種。
內(nèi)部溫度傳感器及Vintrv
使能內(nèi)部溫度傳感器及內(nèi)部參考電壓,其分別連接到ADC1的CH16和CH17。
Vbat
使能電池電壓,電池電壓經(jīng)除4電路后連接到了ADC1的CH18。
注意:用ADC采集VBAT電壓,當(dāng)使能VBATEN后,VBAT會(huì)一直耗電,如果應(yīng)用對(duì)功耗敏感,建議只在VBAT采樣時(shí)才打開(kāi),采樣結(jié)束后關(guān)閉。
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ā)源和觸發(fā)邊沿檢測(cè)的設(shè)定組成。若使用軟件觸發(fā)時(shí),需要禁止觸發(fā)邊沿檢測(cè)。
數(shù)據(jù)傳輸方式
可設(shè)定CPU或DMA傳輸轉(zhuǎn)換數(shù)據(jù)。在主從組合模式下,需禁止此項(xiàng)配置。
搶占通道配置
包含通道個(gè)數(shù)、通道配置、觸發(fā)配置。
通道個(gè)數(shù)
可設(shè)定1~4中的任何一個(gè)長(zhǎng)度,指示單個(gè)搶占序列包含的通道個(gè)數(shù),需與實(shí)際搶占通道序列個(gè)數(shù)一致。
通道配置
由轉(zhuǎn)換順序、通道值、采樣周期的設(shè)定組成。其中不同順序可配置相同通道值。
觸發(fā)配置
由觸發(fā)源和觸發(fā)邊沿檢測(cè)的設(shè)定組成。若使用軟件觸發(fā)時(shí),需要禁止觸發(fā)邊沿檢測(cè)。
特殊模式配置(非必需)
分割模式
包括每次觸發(fā)轉(zhuǎn)換的普通通道個(gè)數(shù)、普通通道分割模式使能、搶占通道分割模式使能。
搶占自動(dòng)轉(zhuǎn)換模式
用于設(shè)定普通組轉(zhuǎn)換結(jié)束后的搶占通道組自動(dòng)轉(zhuǎn)換使能。
過(guò)采樣
包括過(guò)采樣率、過(guò)采樣移位、普通過(guò)采樣觸發(fā)模式使能、普通過(guò)采樣重轉(zhuǎn)模式選擇、普通及搶占過(guò)采樣使能的設(shè)定。
中斷配置
使能對(duì)應(yīng)中斷,包括溢出中斷、普通通道轉(zhuǎn)換結(jié)束中斷、搶占通道組轉(zhuǎn)換結(jié)束中斷、電壓檢測(cè)超過(guò)范圍中斷中的一個(gè)或多個(gè)。
ADC上電
使能ADC讓ADC上電,由于上電需要穩(wěn)定時(shí)間,因此ADC上電后需等待ADC的RDY標(biāo)志處于置位后才可進(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分辨率調(diào)整
在ADC校準(zhǔn)完畢后,即可進(jìn)行分辨率切換。切換分辨率后,軟件需要等待ADC的RDY標(biāo)志處于置位后才可進(jìn)行后續(xù)動(dòng)作。 至此,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ù)
435額外支持通過(guò)CPU讀取普通通道數(shù)據(jù)。為保障數(shù)據(jù)讀取的實(shí)時(shí)性,同樣推薦使用中斷獲取,方法如下 1) 軟件設(shè)置ADC_CTRL2的EOCSFEN位讓每次數(shù)據(jù)寄存器更新時(shí)置位OCCE標(biāo)志; 2) 普通通道組轉(zhuǎn)換結(jié)束中斷使能; 3) 普通通道組轉(zhuǎn)換結(jié)束中斷函數(shù)內(nèi)將轉(zhuǎn)換數(shù)據(jù)緩存進(jìn)數(shù)組內(nèi); 4) 其他應(yīng)用邏輯內(nèi)透過(guò)數(shù)組內(nèi)的數(shù)據(jù)進(jìn)行數(shù)據(jù)的后續(xù)算法處理。
DMA讀取普通通道數(shù)據(jù)(單buffer模式)
普通通道數(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ù)算法處理。
DMA讀取普通通道數(shù)據(jù)(雙buffer模式)
435的EDMA支持雙buffer模式。為避免數(shù)據(jù)處理不及時(shí),可嘗試使用雙buffer緩存數(shù)據(jù),方法如下 1) 初始化EDMA成雙buffer模式并使能EDMA; 2) 使能ADC的DMA模式,使能普通通道數(shù)據(jù)的DMA請(qǐng)求接續(xù); 3) 在EDMA傳輸完成中斷函數(shù)內(nèi)交叉獲取EDMA的buffer數(shù)據(jù); 4) 其他應(yīng)用邏輯內(nèi)透過(guò)獲取到的buffer數(shù)據(jù)進(jìn)行數(shù)據(jù)的后續(xù)算法處理。 ?
案例 ADC過(guò)采樣
功能簡(jiǎn)介
? ADC支持過(guò)采樣功能,在一些要求轉(zhuǎn)換數(shù)據(jù)準(zhǔn)確性的場(chǎng)合,可以使用過(guò)采樣來(lái)實(shí)現(xiàn)。 本例將同時(shí)使用普通及搶占通道組的過(guò)采樣。設(shè)定8倍過(guò)采樣,保持12位分辨率。 ?
資源準(zhǔn)備
? 1) 硬件環(huán)境 對(duì)應(yīng)產(chǎn)品型號(hào)的AT-START BOARD PA4 and PA7——3.3V PA5 and PB0——GND PA6 and PB1——1.5V左右 2) 軟件環(huán)境 projectat_start_f4xxexamplesadcordinary_preempt_oversampling ?
軟件設(shè)計(jì)
? 1) 配置流程
配置ADC使用的GPIO
配置用于普通通道數(shù)據(jù)傳輸?shù)腄MA
ADC相關(guān)配置設(shè)定
軟件觸發(fā)轉(zhuǎn)換
獲取轉(zhuǎn)換數(shù)據(jù)
2) 代碼介紹
GPIO配置函數(shù)代碼
DMA配置函數(shù)代碼
ADC配置函數(shù)代碼
中斷服務(wù)函數(shù)代碼
main函數(shù)代碼
實(shí)驗(yàn)效果
? 可通過(guò)串口打印查看實(shí)現(xiàn)效果,最終串口打印的轉(zhuǎn)換數(shù)據(jù)如下。 圖18. ADC過(guò)采樣實(shí)驗(yàn)結(jié)果
? ?
案例 ADC電壓監(jiān)測(cè)
功能簡(jiǎn)介
? ADC支持電壓監(jiān)測(cè)功能,在需要監(jiān)測(cè)通道電壓時(shí),可參考本例進(jìn)行設(shè)計(jì)。 本例將固定監(jiān)控普通通道組的Channel5,監(jiān)控閾值為0~Vref+/3。 ?
資源準(zhǔn)備
? 1) 硬件環(huán)境 對(duì)應(yīng)產(chǎn)品型號(hào)的AT-START BOARD PA4——3.3V PA5——0V PA6——1.5V左右 2) 軟件環(huán)境 projectat_start_f4xxexamplesadcvoltage_monitoring ?
軟件設(shè)計(jì)
? 1) 配置流程
配置ADC使用的GPIO
配置用于普通通道數(shù)據(jù)傳輸?shù)腄MA
ADC相關(guān)配置及電壓監(jiān)測(cè)設(shè)定
普通通道軟觸發(fā)
獲取轉(zhuǎn)換數(shù)據(jù)
2) 代碼介紹
GPIO配置函數(shù)代碼
DMA配置函數(shù)代碼
ADC配置函數(shù)代碼
中斷服務(wù)函數(shù)代碼
main函數(shù)代碼
實(shí)驗(yàn)效果
? 可通過(guò)串口打印查看實(shí)現(xiàn)效果,測(cè)試過(guò)程中隨機(jī)將Channel5外接1.5V,最終串口打印信息如下。 通過(guò)打印信息可以看到:有實(shí)際監(jiān)測(cè)到Channel5超過(guò)監(jiān)控閾值,且記錄到的實(shí)際監(jiān)控值為1.5V。 圖19. ADC電壓監(jiān)測(cè)實(shí)驗(yàn)結(jié)果 ? ?
案例 ADC雙Buffer
功能簡(jiǎn)介
? EDMA具備雙緩沖模式功能,ADC配合這個(gè)功能使用,可有效提高數(shù)據(jù)轉(zhuǎn)換效率。 本案例將以該EDMA的雙緩沖功能為基礎(chǔ),示范如何配置使用ADC的快速轉(zhuǎn)換。 ?
資源準(zhǔn)備
? 1) 硬件環(huán)境 對(duì)應(yīng)產(chǎn)品型號(hào)的AT-START BOARD PA4——3.3V PA5——0V PA6——1.5V左右 2) 軟件環(huán)境 projectat_start_f4xxexamplesadcedma_double_buffer ?
軟件設(shè)計(jì)
? 1) 配置流程
配置ADC使用的GPIO
配置用于普通通道數(shù)據(jù)傳輸?shù)腄MA
ADC相關(guān)配置及設(shè)定
普通通道軟觸發(fā)
獲取轉(zhuǎn)換數(shù)據(jù)
2) 代碼介紹
GPIO配置函數(shù)代碼
DMA配置函數(shù)代碼
ADC配置函數(shù)代碼
中斷服務(wù)函數(shù)代碼
main函數(shù)代碼
實(shí)驗(yàn)效果
? 可通過(guò)串口打印查看實(shí)現(xiàn)效果,如下圖所示,ADC轉(zhuǎn)換數(shù)據(jù)被硬件循環(huán)的存儲(chǔ)到EDMA設(shè)定的兩個(gè)buffer內(nèi)了。 圖20. ADC電壓監(jiān)測(cè)實(shí)驗(yàn)結(jié)果
案例 ADC DMA模式1
功能簡(jiǎn)介
? ADC主從組合模式下的普通通道轉(zhuǎn)換數(shù)據(jù)需經(jīng)DMA傳輸。DMA支持多種模式,不同模式數(shù)據(jù)的傳輸規(guī)則存在明顯差異。 當(dāng)選擇不適用的DMA模式傳輸轉(zhuǎn)換數(shù)據(jù)時(shí),會(huì)因傳輸不及時(shí)導(dǎo)致數(shù)據(jù)溢出等問(wèn)題。因此應(yīng)用中ADC主從組合模式與DMA模式需要按照RM要求搭配使用。 DMA模式1適用ADC組合模式如下: 普通同時(shí)模式(單從機(jī))、普通位移模式(單從機(jī))、普通同時(shí)模式(雙從機(jī))、普通位移模式(雙從機(jī))本案例將以“DMA模式1+普通同時(shí)模式(雙從機(jī))”為基礎(chǔ)進(jìn)行使用示范。 ?
資源準(zhǔn)備
? 1) 硬件環(huán)境 對(duì)應(yīng)產(chǎn)品型號(hào)的AT-START BOARD PA4 and PA7 and PC0——3.3V PA5 and PB0 and PC2——GND PA6 and PB1 and PC3——1.5V左右 2) 軟件環(huán)境 projectat_start_f4xxexamplesadccombine_mode_ordinary_smlt_twoslave_dma1 ?
軟件設(shè)計(jì)
? 1) 配置流程
配置ADC使用的GPIO
配置用于觸發(fā)的TMR(TMR1_TRGOUT2 event)
配置用于普通通道數(shù)據(jù)傳輸?shù)腄MA
ADC相關(guān)配置及設(shè)定
等待觸發(fā)完畢后關(guān)閉觸發(fā)TMR
獲取轉(zhuǎn)換數(shù)據(jù)
2) 代碼介紹
GPIO配置函數(shù)代碼
TMR配置函數(shù)代碼
DMA配置函數(shù)代碼
ADC配置函數(shù)代碼
中斷服務(wù)函數(shù)代碼
main函數(shù)代碼
實(shí)驗(yàn)效果
? 可通過(guò)串口打印查看實(shí)現(xiàn)效果,最終串口打印的轉(zhuǎn)換數(shù)據(jù)如下。 ADC轉(zhuǎn)換數(shù)據(jù)以半字為單位進(jìn)行傳輸,傳輸順序?yàn)椋?ADC1第一個(gè)轉(zhuǎn)換通道; ADC2第一個(gè)轉(zhuǎn)換通道; ADC3第一個(gè)轉(zhuǎn)換通道; ADC1第二個(gè)轉(zhuǎn)換通道; ADC2第二個(gè)轉(zhuǎn)換通道; ADC3第二個(gè)轉(zhuǎn)換通道; ADC1第三個(gè)轉(zhuǎn)換通道; ADC2第三個(gè)轉(zhuǎn)換通道; ADC3第三個(gè)轉(zhuǎn)換通道; ADC1第一個(gè)轉(zhuǎn)換通道……
圖21. ADC DMA模式1實(shí)驗(yàn)結(jié)果
案例 ADC DMA模式2
功能簡(jiǎn)介
? ADC主從組合模式下的普通通道轉(zhuǎn)換數(shù)據(jù)需經(jīng)DMA傳輸。DMA支持多種模式,不同模式數(shù)據(jù)的傳輸規(guī)則存在明顯差異。 當(dāng)選擇不適用的DMA模式傳輸轉(zhuǎn)換數(shù)據(jù)時(shí),會(huì)因傳輸不及時(shí)導(dǎo)致數(shù)據(jù)溢出等問(wèn)題。因此應(yīng)用中ADC主從組合模式與DMA模式需要按照RM要求搭配使用。 DMA模式2適用ADC組合模式如下: 普通同時(shí)模式(單從機(jī))、普通位移模式(單從機(jī))、普通位移模式(雙從機(jī)) 本案例將以“DMA模式2+普通同時(shí)模式(單從機(jī))”為基礎(chǔ)進(jìn)行使用示范。 ?
資源準(zhǔn)備
? 1) 硬件環(huán)境 對(duì)應(yīng)產(chǎn)品型號(hào)的AT-START BOARD PA4 and PA7——3.3V PA5 and PB0——GND PA6 and PB1——1.5V左右 2) 軟件環(huán)境 projectat_start_f4xxexamplesadccombine_mode_ordinary_smlt_oneslave_dma2 ?
軟件設(shè)計(jì)
? 1) 配置流程
開(kāi)ADC使用的GPIO配置
配置用于普通通道數(shù)據(jù)傳輸?shù)腄MA
ADC相關(guān)配及設(shè)定
普通通道軟觸發(fā)
獲取轉(zhuǎn)換數(shù)據(jù)
2) 代碼介紹
GPIO配置函數(shù)代碼
DMA配置函數(shù)代碼
ADC配置函數(shù)代碼
中斷服務(wù)函數(shù)代碼
main函數(shù)代碼
實(shí)驗(yàn)效果
? 可通過(guò)串口打印查看實(shí)現(xiàn)效果,最終串口打印的轉(zhuǎn)換數(shù)據(jù)如下。 ADC轉(zhuǎn)換數(shù)據(jù)以字為單位進(jìn)行傳輸,傳輸順序?yàn)椋?(ADC2第一個(gè)轉(zhuǎn)換通道<<16)|ADC1第一個(gè)轉(zhuǎn)換通道; (ADC2第二個(gè)轉(zhuǎn)換通道<<16)|ADC1第二個(gè)轉(zhuǎn)換通道; (ADC2第三個(gè)轉(zhuǎn)換通道<<16)|ADC1第三個(gè)轉(zhuǎn)換通道; (ADC2第一個(gè)轉(zhuǎn)換通道<<16)|ADC1第一個(gè)轉(zhuǎn)換通道……
圖22. ADC DMA模式2實(shí)驗(yàn)結(jié)果
? ?
案例 ADC DMA模式3
功能簡(jiǎn)介
? ADC主從組合模式下的普通通道轉(zhuǎn)換數(shù)據(jù)需經(jīng)DMA傳輸。DMA支持多種模式,不同模式數(shù)據(jù)的傳輸規(guī)則存在明顯差異。 當(dāng)選擇不適用的DMA模式傳輸轉(zhuǎn)換數(shù)據(jù)時(shí),會(huì)因傳輸不及時(shí)導(dǎo)致數(shù)據(jù)溢出等問(wèn)題。因此應(yīng)用中ADC主從組合模式與DMA模式需要按照RM要求搭配使用。 DMA模式3適用ADC組合模式如下: 6/8位分辨率的普通同時(shí)模式(單從機(jī))、6/8位分辨率的普通位移模式(單從機(jī))、6/8位分辨率的普通位移模式(雙從機(jī)) 本案例將以“DMA模式3+8位分辨率的普通位移模式(雙從機(jī))”為基礎(chǔ)進(jìn)行使用示范。 ?
資源準(zhǔn)備
? 1) 硬件環(huán)境 對(duì)應(yīng)產(chǎn)品型號(hào)的AT-START BOARD PA4——3.3V PA7——GND PC0——1.5V左右 2) 軟件環(huán)境 projectat_start_f4xxexamplesadccombine_mode_ordinary_shift_twoslave_dma3 ?
軟件設(shè)計(jì)
? 3) 配置流程
配置ADC使用的GPIO
配置用于觸發(fā)的TMR(TMR1_TRGOUT event)
配置用于普通通道數(shù)據(jù)傳輸?shù)腄MA
ADC相關(guān)配置及設(shè)定
等待觸發(fā)完畢后關(guān)閉觸發(fā)TMR
獲取轉(zhuǎn)換數(shù)據(jù)
4) 代碼介紹
GPIO配置函數(shù)代碼
TMR配置函數(shù)代碼
DMA配置函數(shù)代碼
ADC配置函數(shù)代碼
中斷服務(wù)函數(shù)代碼
main函數(shù)代碼
實(shí)驗(yàn)效果
? 可通過(guò)串口打印查看實(shí)現(xiàn)效果,最終串口打印的轉(zhuǎn)換數(shù)據(jù)如下。 ADC轉(zhuǎn)換數(shù)據(jù)以半字為單位進(jìn)行傳輸,傳輸順序?yàn)椋?(ADC2的轉(zhuǎn)換通道<<8)|ADC1的轉(zhuǎn)換通道; (ADC1的轉(zhuǎn)換通道<<8)|ADC3的轉(zhuǎn)換通道; (ADC3的轉(zhuǎn)換通道<<8)|ADC2的轉(zhuǎn)換通道; (ADC2的轉(zhuǎn)換通道<<8)|ADC1的轉(zhuǎn)換通道……
圖23. ADC DMA模式3實(shí)驗(yàn)結(jié)果
? ?
案例 ADC DMA模式4
功能簡(jiǎn)介
? ADC主從組合模式下的普通通道轉(zhuǎn)換數(shù)據(jù)需經(jīng)DMA傳輸。DMA支持多種模式,不同模式數(shù)據(jù)的傳輸規(guī)則存在明顯差異。 當(dāng)選擇不適用的DMA模式傳輸轉(zhuǎn)換數(shù)據(jù)時(shí),會(huì)因傳輸不及時(shí)導(dǎo)致數(shù)據(jù)溢出等問(wèn)題。因此應(yīng)用中ADC主從組合模式與DMA模式需要按照RM要求搭配使用。 DMA模式4適用ADC組合模式如下: 6/8位分辨率的普通同時(shí)模式(雙從機(jī))、6/8位分辨率的普通位移模式(雙從機(jī)) 本案例將以“DMA模式4+8位分辨率的普通位移模式(雙從機(jī))”為基礎(chǔ)進(jìn)行使用示范。 ?
資源準(zhǔn)備
? 1) 硬件環(huán)境 對(duì)應(yīng)產(chǎn)品型號(hào)的AT-START BOARD PA4——3.3V PA7——GND PC0——1.5V左右 2) 軟件環(huán)境 projectat_start_f4xxexamplesadccombine_mode_ordinary_shift_twoslave_dma4 ?
軟件設(shè)計(jì)
? 1) 配置流程
配置ADC使用的GPIO
配置用于觸發(fā)的TMR(TMR1_TRGOUT event)
配置用于普通通道數(shù)據(jù)傳輸?shù)腄MA
ADC相關(guān)配置及設(shè)定
等待觸發(fā)完畢后關(guān)閉觸發(fā)TMR
獲取轉(zhuǎn)換數(shù)據(jù)
2) 代碼介紹
GPIO配置函數(shù)代碼
TMR配置函數(shù)代碼
DMA配置函數(shù)代碼
ADC配置函數(shù)代碼
中斷服務(wù)函數(shù)代碼
main函數(shù)代碼
實(shí)驗(yàn)效果
? 可通過(guò)串口打印查看實(shí)現(xiàn)效果,最終串口打印的轉(zhuǎn)換數(shù)據(jù)如下。 ADC轉(zhuǎn)換數(shù)據(jù)以字為單位進(jìn)行傳輸,傳輸順序?yàn)椋?(ADC3的轉(zhuǎn)換通道<<16)|(ADC2的轉(zhuǎn)換通道<<8)|ADC1的轉(zhuǎn)換通道; (ADC3的轉(zhuǎn)換通道<<16)|(ADC2的轉(zhuǎn)換通道<<8)|ADC1的轉(zhuǎn)換通道…… 圖24. ADC DMA模式4實(shí)驗(yàn)結(jié)果 ? ?
案例 ADC DMA模式5
功能簡(jiǎn)介
? ADC主從組合模式下的普通通道轉(zhuǎn)換數(shù)據(jù)需經(jīng)DMA傳輸。DMA支持多種模式,不同模式數(shù)據(jù)的傳輸規(guī)則存在明顯差異。 當(dāng)選擇不適用的DMA模式傳輸轉(zhuǎn)換數(shù)據(jù)時(shí),會(huì)因傳輸不及時(shí)導(dǎo)致數(shù)據(jù)溢出等問(wèn)題。因此應(yīng)用中ADC主從組合模式與DMA模式需要按照RM要求搭配使用。 DMA模式5適用ADC組合模式如下: 普通同時(shí)模式(雙從機(jī))、普通位移模式(雙從機(jī)) 本案例將以“DMA模式5+普通同時(shí)模式(雙從機(jī))”為基礎(chǔ)進(jìn)行使用示范。 ?
資源準(zhǔn)備
? 1) 硬件環(huán)境 對(duì)應(yīng)產(chǎn)品型號(hào)的AT-START BOARD PA4 and PA7 and PC0——3.3V PA5 and PB0 and PC2——GND PA6 and PB1 and PC3——1.5V左右 2) 軟件環(huán)境 projectat_start_f4xxexamplesadccombine_mode_ordinary_smlt_twoslave_dma5 ?
軟件設(shè)計(jì)
? 1) 配置流程
配置ADC使用的GPIO
配置用于觸發(fā)的TMR(TMR1_CH1 event)
配置用于普通通道數(shù)據(jù)傳輸?shù)腄MA
ADC相關(guān)配置及設(shè)定
等待觸發(fā)完畢后關(guān)閉觸發(fā)TMR
獲取轉(zhuǎn)換數(shù)據(jù)
2) 代碼介紹
GPIO配置函數(shù)代碼
TMR配置函數(shù)代碼
DMA配置函數(shù)代碼
ADC配置函數(shù)代碼
中斷服務(wù)函數(shù)代碼
main函數(shù)代碼
實(shí)驗(yàn)效果
? 可通過(guò)串口打印查看實(shí)現(xiàn)效果,最終串口打印的轉(zhuǎn)換數(shù)據(jù)如下。 ADC轉(zhuǎn)換數(shù)據(jù)以字為單位進(jìn)行傳輸,傳輸順序?yàn)椋?(ADC2第一個(gè)轉(zhuǎn)換通道<<16)|ADC1第一個(gè)轉(zhuǎn)換通道; ADC3第一個(gè)轉(zhuǎn)換通道; (ADC2第二個(gè)轉(zhuǎn)換通道<<16)|ADC1第二個(gè)轉(zhuǎn)換通道; ADC3第二個(gè)轉(zhuǎn)換通道; (ADC2第三個(gè)轉(zhuǎn)換通道<<16)|ADC1第三個(gè)轉(zhuǎn)換通道; ADC3第三個(gè)轉(zhuǎn)換通道 (ADC2第一個(gè)轉(zhuǎn)換通道<<16)|ADC1第一個(gè)轉(zhuǎn)換通道…… 圖25. ADC DMA模式5實(shí)驗(yàn)結(jié)果
案例 ADC偵測(cè)Vref電壓
功能簡(jiǎn)介
? 實(shí)際應(yīng)用場(chǎng)景中,受外部電路等因素影響,ADC的模擬參考電壓可能出現(xiàn)波動(dòng),導(dǎo)致ADC轉(zhuǎn)換結(jié)果出現(xiàn)失真。當(dāng)無(wú)法優(yōu)化硬件時(shí),可嘗試如下解決辦法。 ADC通道ADC1_IN17連接到了MCU的內(nèi)部參考電壓,該內(nèi)部參考電壓是經(jīng)LDO輸出的穩(wěn)定的1.2V電壓值。故可通過(guò)ADC1_IN17的轉(zhuǎn)換數(shù)據(jù)來(lái)反推當(dāng)前的實(shí)際模擬參考電壓值。再以獲取的模擬參考電壓進(jìn)行ADC轉(zhuǎn)換通道數(shù)據(jù)的計(jì)算。 本例將示例如何以ADC1_IN17的轉(zhuǎn)換結(jié)果來(lái)反推當(dāng)前的模擬參考電壓值。 ?
資源準(zhǔn)備
? 1) 硬件環(huán)境: 對(duì)應(yīng)產(chǎn)品型號(hào)的AT-START BOARD 2) 軟件環(huán)境 projectat_start_f4xxexamplesadccurrent_vref_value_check ?
軟件設(shè)計(jì)
? 1) 配置流程
配置ADC使用的GPIO
配置用于普通通道數(shù)據(jù)傳輸?shù)腄MA
ADC相關(guān)配置及設(shè)定
普通通道軟觸發(fā)
獲取轉(zhuǎn)換數(shù)據(jù)反推當(dāng)前Vref值
2) 代碼介紹
DMA配置函數(shù)代碼
ADC配置函數(shù)代碼
中斷服務(wù)函數(shù)代碼
main函數(shù)代碼
實(shí)驗(yàn)效果
? 可通過(guò)串口打印查看實(shí)現(xiàn)效果,測(cè)試未獨(dú)立外接Vref,并使用AT-Link供電,可以看到實(shí)際Vref電壓固定保持3.32V左右。 圖26. ADC偵測(cè)Vref電壓實(shí)驗(yàn)結(jié)果 ? ? ? ?
審核編輯:湯梓紅
評(píng)論
查看更多