2.4 觸發(fā)源
●軟件觸發(fā)
●來(lái)自事件鏈接控制器(ELC)的同步觸發(fā)器
●由外部觸發(fā)引腳ADTRG0(單元0)和ADTRG1(單元1)異步觸發(fā)
2.5 ADC轉(zhuǎn)換時(shí)間
ADC時(shí)鐘
ADC輸入時(shí)鐘ADCLK由PCLKC經(jīng)過(guò)分頻產(chǎn)生,最大值是四分頻50MHz,PCLKA和PCLKC (ADCLK) 的分頻比可以設(shè)置為 1:1, 2:1, 4:1, 8:1, 1:2, 1:4。
ADC轉(zhuǎn)換時(shí)間
ADC允許的最大值頻率值是50MHz,使用50 MHz的時(shí)候12-bit轉(zhuǎn)換時(shí)間為0.4 μs。
2.6 數(shù)據(jù)寄存器
ADDRn寄存器是16位只讀寄存器,用于存儲(chǔ)AD轉(zhuǎn)換結(jié)果。
以下條件決定了AD數(shù)據(jù)寄存器中的數(shù)據(jù)格式:
● AD數(shù)據(jù)寄存器格式選擇位(ADCER.ADRFMT)的設(shè)置(左對(duì)齊或右對(duì)齊);
● AD轉(zhuǎn)換精度 選擇位(ADCER.ADPRC[1:0])中的設(shè)置(可選擇12位、10位、8位。);
●加法平均計(jì)數(shù)選擇位(ADADC.ADC[2:0])的設(shè)置(1、2、3、4或16次);
●設(shè)置平均模式啟用位(ADADC.AVEE)(加法或平均)。
未選擇AD轉(zhuǎn)換值加法平均模式時(shí):
表40.5顯示了12位精度的位分配示例。
點(diǎn)擊可查看大圖
選擇AD轉(zhuǎn)換值平均模式時(shí):
當(dāng)A/ D轉(zhuǎn)換值加法指定2次或4次時(shí),可選擇A/D轉(zhuǎn)換值平均模式。這樣可以提高A/D轉(zhuǎn)換的有效位。
選擇AD轉(zhuǎn)換值相加模式時(shí):
對(duì)于12位、10位、8位精度,可以在A/D轉(zhuǎn)換值相加模式中選擇1、2、3或4次。在該轉(zhuǎn)換精度下A/D轉(zhuǎn)換結(jié)果以2bit擴(kuò)展值存儲(chǔ)在A/D數(shù)據(jù)寄存器中。對(duì)于12位精度,在A/D轉(zhuǎn)換值相加模式中也可以選擇16次。在AD轉(zhuǎn)換值相加模式中,這些寄存器指示值,通過(guò)在特定通道上添加A/D轉(zhuǎn)換值獲得。A/D轉(zhuǎn)換結(jié)果以4bit擴(kuò)展值存儲(chǔ)在A/D數(shù)據(jù)寄存器中。
2.7 電壓轉(zhuǎn)換
模擬電壓經(jīng)過(guò)ADC轉(zhuǎn)換后,是一個(gè)12位的數(shù)字值,如果通過(guò)串口以16進(jìn)制打印出來(lái)的話(huà),可讀性比較差,那么有時(shí)候我們就需要把數(shù)字電壓轉(zhuǎn)換成模擬電壓,也可以跟實(shí)際的模擬電壓(用萬(wàn)用表測(cè))對(duì)比,看看轉(zhuǎn)換是否準(zhǔn)確。
設(shè)計(jì)原理圖的時(shí)候會(huì)把ADC的輸入電壓范圍設(shè)定在:0~3.3v,這時(shí)需要將采樣的參考電壓硬件VREFH0/VREFL0引腳分別接到VCC和VSS上,因?yàn)锳DC是12位的,那么12位滿(mǎn)量程對(duì)應(yīng)的就是3.3V,12位滿(mǎn)量程對(duì)應(yīng)的數(shù)字值是:2^12。數(shù)值0對(duì)應(yīng)的就是0V。如果轉(zhuǎn)換后的數(shù)值為 X對(duì)應(yīng)的模擬電壓為Y,那么會(huì)有這么一個(gè)等式成立:2^12 / 3.3 = X / Y , Y = (3.3 * X ) / 2^12。這樣便可以計(jì)算出對(duì)應(yīng)采樣的電壓值了。
三
實(shí)現(xiàn)程序設(shè)計(jì)
3.1 硬件設(shè)計(jì)
如下圖DEMO板上的ADC采樣原理圖P000端口連接在一個(gè)可調(diào)電位器上
3.2 軟件設(shè)計(jì)
1
新建工程
如上圖,1選擇板上對(duì)應(yīng)MCU型號(hào),2處選擇工程類(lèi)型:e2 studio / IAR / Keil,然后默認(rèn)下一步直到完成。
2
FSP配置
第一步選擇并配置時(shí)鐘,請(qǐng)確認(rèn)板子上的外部時(shí)鐘,當(dāng)板子上的外部時(shí)鐘為8M時(shí),進(jìn)行選擇并按要求分配好對(duì)應(yīng)的時(shí)鐘。
依次點(diǎn)擊 “Stacks” -> “Pins”-> “Peripherals” ->“ADC0” 來(lái)配置通道AN000對(duì)應(yīng)的引腳為P000。如下圖所示:
然后依次點(diǎn)擊 “Stacks” ->“New Stack” -> “Analog” ->“ADC-DMAC Integration(r_adc)” 來(lái)配置ADC模塊。如下圖所示:
ADC的屬性配置:
勾選“Input” -> “Channel Scan Mask” -> “Channel 0” 通道0,并設(shè)置中斷函數(shù)名及優(yōu)先級(jí)。“Interrupts” -> “Callback” & “Scan End interrupt Priority”
DMAC的屬性設(shè)置:
設(shè)置中斷函數(shù)名及優(yōu)先級(jí)。
“Callback” & “Transfer End Interrupt Priority”
3
程序?qū)崿F(xiàn)
外設(shè)初始化:
●ADC初始化
R_ADC_Open()為整個(gè)外設(shè)設(shè)置操作模式、觸發(fā)源、中斷優(yōu)先級(jí)和配置。如果啟用了中斷,該函數(shù)將注冊(cè)一個(gè)回調(diào)函數(shù)指針,以便在掃描完成時(shí)通知用戶(hù)。
R_ADC_ScanCfg()配置ADC掃描參數(shù),通道特定設(shè)置是在這個(gè)函數(shù)中設(shè)置的。
●DMA初始化
R_DMAC_Open()初始化DMAC函數(shù)。
R_DMAC_Enable()使能DMAC中斷。
中斷處理函數(shù):
設(shè)置傳輸目的地址到DMA0_ADC0數(shù)據(jù)輸入寄存器,然后開(kāi)始數(shù)據(jù)傳輸。
DMA傳輸完成,記錄傳輸次數(shù)。
hal_entry入口函數(shù):
點(diǎn)擊可查看大圖
達(dá)到設(shè)定次數(shù)ADC_count再求平均值,當(dāng)然DEMO也可以通過(guò)定時(shí)器進(jìn)行更為精準(zhǔn)的控制采樣的間隔。
總結(jié)
當(dāng)然DEMO還有更多要優(yōu)化的地方,這里只學(xué)習(xí)FSP配置基礎(chǔ)的功能樣例,若有陳述不嚴(yán)謹(jǐn)之處,歡迎大家指正。謝謝!
審核編輯:湯梓紅
-
寄存器
+關(guān)注
關(guān)注
31文章
5336瀏覽量
120230 -
adc
+關(guān)注
關(guān)注
98文章
6495瀏覽量
544464 -
瑞薩
+關(guān)注
關(guān)注
35文章
22308瀏覽量
86240 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2000瀏覽量
61132
原文標(biāo)題:基于RA6M4開(kāi)發(fā)板在FSP上配置DMAC傳輸ADC采樣的方法(下)
文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論