引言
在嵌入式系統(tǒng)開發(fā)與測試中,穩(wěn)定、精確的測試信號生成是一項常見且關(guān)鍵的需求。傳統(tǒng)方法依賴于CPU實時計算并搬運(yùn)數(shù)據(jù),這會持續(xù)占用處理器資源,增加系統(tǒng)功耗,并可能影響主程序的實時性。為解決這一問題,本文介紹一種利用瑞薩RA2L1微控制器(MCU)的DAC、DTC和AGT三個外設(shè)模塊協(xié)同工作的解決方案。該方案能夠以極低的CPU參與度,高效生成正弦波、三角波等多種標(biāo)準(zhǔn)波形,為需要模擬信號輸出的應(yīng)用提供了一種高性能、低功耗的設(shè)計范例。
核心模塊
DTC(數(shù)據(jù)傳輸控制器)模塊
DTC(Data Transfer Controller)模塊根據(jù)傳輸信息進(jìn)行數(shù)據(jù)傳輸,需要先在SRAM區(qū)域存儲傳輸信息。DTC被激活時,會讀取與向量號相關(guān)聯(lián)的DTC向量,從DTC向量中引用的傳輸信息存儲地址讀取傳輸信息并進(jìn)行數(shù)據(jù)傳輸。
傳輸模式包括普通傳輸模式(Normal transfer mode)、重復(fù)傳輸模式(Repeat transfer mode)和塊傳輸模式(Block transfer mode)。DTC在DTC傳送源寄存器(SAR)中指定傳輸源地址,在DTC傳送目標(biāo)寄存器(DAR)中指定傳輸目的地址。在數(shù)據(jù)傳輸后,這些寄存器的值可以獨立地增減或保持不變。
AGT(低功耗異步通用定時器)模塊
AGT(Low Power Asynchronous General Purpose Timer)模塊是一個靈活的16位定時器,可在低功耗模式下運(yùn)行。在本設(shè)計中,它被配置為周期定時模式,用于產(chǎn)生固定時間間隔的中斷。這些中斷信號作為“觸發(fā)源”,定期激活DTC,從而精確控制DAC輸出每個數(shù)據(jù)點的時間間隔,決定了最終輸出波形的頻率。
DAC(數(shù)模轉(zhuǎn)換器)模塊
RA2L1提供一個帶輸出放大器的12位數(shù)模轉(zhuǎn)換器(DAC12),由AVCC0和AVSS0提供模擬電源及模擬參考電壓源,輸出引腳為DA0。DAC12的D/A數(shù)據(jù)寄存器0(DADR0)適用于存儲數(shù)模轉(zhuǎn)換數(shù)據(jù)的16位讀/寫寄存器,啟動模擬輸出后,DADR0中的數(shù)值會被轉(zhuǎn)換并輸出到模擬輸出引腳(DA0)中。
系統(tǒng)設(shè)計方案
系統(tǒng)架構(gòu)

圖1.系統(tǒng)架構(gòu)
DAC模塊:負(fù)責(zé)最終的數(shù)模轉(zhuǎn)換與電壓輸出。
AGT模塊:作為系統(tǒng)的“節(jié)拍器”,產(chǎn)生固定周期的中斷來觸發(fā)數(shù)據(jù)傳輸。
DTC模塊:作為“數(shù)據(jù)搬運(yùn)工”,在每次AGT中斷時,自動將LUT中的下一個數(shù)據(jù)點送至DAC。
波形查找表
波形查找表機(jī)制
兩種波形的數(shù)據(jù)都預(yù)先計算并存儲在查找表(LUT)中。系統(tǒng)運(yùn)行時,DTC模塊按固定時間間隔依次讀取表中數(shù)據(jù)并傳輸?shù)紻AC寄存器,實現(xiàn)波形的周期性輸出。這種方式避免了實時計算,大幅降低CPU負(fù)載。
正弦波查找表
使用余弦函數(shù)計算一個完整周期(T=input_spp)的采樣點數(shù)據(jù)。通過cos(2πi/input_spp)計算每個采樣點的瞬時值(i=0,1,???,input_spp-1)。由于余弦函數(shù)輸出范圍是[-1,1],需要加1后乘以DAC中間值((DAC_MID_VAL),將其映射到DAC的有效輸出范圍(0~4095)。采樣點數(shù)越多,生成的波形越平滑。
正弦波查找表函數(shù)
左右滑動查看完整內(nèi)容
voidgenerate_sin(void) { /* Calculate look up table for sin function */ for(int i=0; i< input_spp; ++i) ? ? { ? ? ? ? look_up_table[i] = (uint16_t)?


三角波查找表
采用分段線性計算方式。前半周期線性遞增,從0上升到最大值;后半周期線性遞減,從最大值下降到0,形成對稱的三角波形。計算公式基于當(dāng)前采樣點位置與總采樣點數(shù)的比例關(guān)系,通過簡單的線性插值即可得到每個點的輸出值。
三角波查找表函數(shù)


軟件流程


圖2. 主流程
系統(tǒng)時序

圖3.系統(tǒng)時序圖
開發(fā)環(huán)境
表1 開發(fā)環(huán)境
| 項目 | 內(nèi)容 |
| 所用微控制器 | RA2L1(R7FA2L1AB2DFM) |
| 工作頻率 | HOCO:48MHz,PCLKB:24MHz |
| 工作電壓 | 3.3V(工作電壓范圍1.6V~5.5V) |
| 開發(fā)板 | CPK-RA2L1 MCU評估板(LQFP64) |
| 集成開發(fā)環(huán)境 |
e2studio v2025-07(瑞薩電子開發(fā)) FSP v6.0.0 LLVM for ARM v18.1.3 |
| BSP文件 | Renesas.RA_board_ra2l1_cpk.3.7.0.pack |
RA2L1 - 48MHz Arm Cortex-M23超低功耗通用微控制器 | Renesas瑞薩電子
https://www.renesas.cn/zh/products/ra2l1?queryID=0135065201ac0d335ce3d718259fb7b4
CPK-RA2L1 - RA2L1 MCU群組中國本地評估板 | Renesas瑞薩電子
https://www.renesas.cn/zh/design-resources/boards-kits/cpk-ra2l1?queryID=7488f1b4dfae70a40b8d81382c878554
e2studio | Renesas瑞薩電子
https://www.renesas.cn/zh/software-tool/e2-studio?queryID=c68ed897f8fb82511bedafe733272066
RA可擴(kuò)展性強(qiáng)的配置軟件包(FSP) | Renesas瑞薩電子
https://www.renesas.cn/zh/software-tool/ra-flexible-software-package-fsp?queryID=a5545772de53314f3a65441b56a71922
硬件配置

圖4.硬件配置示例
參考例程
為便于讀者快速上手,本文提供了一個完整的波形生成參考例程。該例程實現(xiàn)了正弦波和三角波的生成與切換功能,讀者可以在此基礎(chǔ)上進(jìn)行測試、二次開發(fā)和功能擴(kuò)展。
dac_cpkcor_ra2l1_ep.zip
https://e.gitee.com/recn-mcu-ae/repos/recn-mcu-ae/dac_cpkcor_ra2l1_ep/sources
gitee下載鏈接
https://e.gitee.com/recn-mcu-ae/repos/recn-mcu-ae/dac_cpkcor_ra2l1_ep/sources

例程操作說明
硬件準(zhǔn)備
參考例程使用的是瑞薩中國本地推廣板CPK-RA2L1 MCU評估板(LQFP64),如圖5所示。開發(fā)板調(diào)試接口為J11,波形輸出端口(P014)從J2連接器的Pin 21引出(見圖5中紅框)。

圖5.CPK-RA2L1 MCU評估板(LQFP64)
工程配置
由于例程中使用的開發(fā)板為CPK開發(fā)板,因此在首次使用時需要導(dǎo)入BSP文件,導(dǎo)入方法見《向FSP中添加CPK評估板的BSP》。導(dǎo)入BSP文件后可選擇CPK-RA2L1評估版,請確認(rèn)configuration.xml中的BSP信息與圖6一致。
向FSP中添加CPK評估板的BSP
https://www.renesas.cn/zh/document/gde/fsp-cpk-bsp?r=1596841

圖6.參考例程中BSP信息
編譯與燒錄:
確認(rèn)BSP信息無誤后即可對工程進(jìn)行編譯,燒錄到開發(fā)板中并運(yùn)行程序。
交互控制
打開J-Link RTT Viewer,選擇USB連接方式,將“Specify Target Device”設(shè)定為“R7FA2L1AB”,“RTT Control Block”選擇為“Auto Detection”,點擊“OK”后即可連接到開發(fā)板。

圖7.J-Link RTT Viewer配置信息
成功連接到開發(fā)板后可看到如圖8的工程信息,包括工程版本、FSP版本、例程說明等等。

圖8.J-Link RTT Viewer工程信息顯示
如圖9所示,用戶需要對J-Link RTT Viewer中發(fā)送數(shù)據(jù)的方式進(jìn)行以下設(shè)置。

圖9.J-Link RTT Viewer輸入設(shè)置
參照圖8中的提示,用戶輸入“0”可以選擇生成正弦波,輸入“1”可以選擇生成三角波,首先輸入“0”選擇正弦波輸出,如圖10所示。

圖10.選擇正弦波輸出
根據(jù)圖10中的信息,下一步需要輸入期望采樣點數(shù),注意輸入值需要在2到256之間。

圖11.輸入期望采樣點數(shù)
最后需要輸入期望輸出波形頻率,注意波形頻率的最大值已根據(jù)期望采樣點數(shù)計算得出,因此輸入的期望頻率需要小于最大波形頻率。

圖12.輸入期望頻率
波形觀測
圖13為輸入“0”后生成采樣點為256,頻率為100Hz的正弦波輸出結(jié)果。

圖13.正弦波輸出結(jié)果
圖14為輸入“1”后生成采樣點為256,頻率為100Hz的三角波輸出結(jié)果。

圖14.三角波輸出結(jié)果
代碼說明
常量一覽
例程中所用常量見表2。
表2 常量說明
| 常量名稱 | 數(shù)值 | 說明 |
| SPP_MIN_VAL | 2 | 最小采樣點數(shù) |
| SPP_MAX_VAL | 256 | 最大采樣點數(shù) |
| DAC_MID_VAL | 2047.5 | 波形放縮系數(shù) |
| DADR0 | 0x4005E000 |
DADR0 寄存器地址 |
|
DAC_MAX_ CONVERSION_PERIOD |
30 | DAC最大采樣周期 |
變量一覽
例程中所用變量見表3。
表3 變量說明
| 類型 | 變量名稱 | 內(nèi)容 |
| uint16_t |
look_up_table [SPP_MAX_VAL] |
波形查找表 |
| uint16_t | input_spp | 用戶期望采樣點數(shù) |
| uint32_t | input_freq | 用戶期望輸出波形頻率 |
| uint32_t | wave_output | 用戶期望輸出波形類型 |
| double | sample_freq | DAC采樣頻率 |
| uint32_t | freq_max_val | 最大輸出頻率 |
| double | dac_max_samp_rate | DAC最大采樣率 |
函數(shù)一覽
例程中所用函數(shù)見表4。
表4 函數(shù)說明
| 類型 | 內(nèi)容 |
| R_FSP_VersionGet() | 獲取FSP版本 |
| R_IOPORT_PinCfg() | 配置引腳設(shè)置 |
| R_DAC_Open() | 初始化DAC |
| R_DAC_Start() | 開啟數(shù)模轉(zhuǎn)換輸出 |
| R_DTC_Open() | 啟用DTC |
| R_DTC_Enable() | 啟用傳輸 |
| R_AGT_Open() | 初始化AGT |
| R_AGT_Start() | 啟動定時器 |
| R_DTC_Reconfigure() | 配置DTC |
| R_FSP_SystemClockHzGet() | 獲取系統(tǒng)時鐘頻率 |
| R_AGT_PeriodSet() | 更新AGT周期 |
| generate_sin() | 生成正弦波波形查找表 |
| generate_triangle() | 成三角波波形查找表 |
結(jié)語
本文詳細(xì)闡述了基于RA2L1 MCU的硬件協(xié)同波形生成方案。通過巧妙運(yùn)用AGT定時觸發(fā)、DTC自動搬運(yùn)、DAC轉(zhuǎn)換輸出三者形成的“硬件流水線”,成功將CPU從頻繁的數(shù)據(jù)搬運(yùn)任務(wù)中解放出來,實現(xiàn)了極低的處理器占用與功耗。預(yù)存波形查找表的方法不僅保證了高精度輸出,也預(yù)留了強(qiáng)大的擴(kuò)展能力,可輕松支持方波、鋸齒波或任意自定義波形。
該設(shè)計理念突出了利用MCU豐富外設(shè)實現(xiàn)功能卸載、優(yōu)化系統(tǒng)效率的嵌入式設(shè)計思想。讀者可基于提供的參考例程,快速進(jìn)行原型驗證,并靈活調(diào)整采樣率、輸出頻率及波形種類,以滿足各類嵌入式應(yīng)用中對模擬信號生成的需求。
-
微控制器
+關(guān)注
關(guān)注
48文章
8313瀏覽量
163742 -
mcu
+關(guān)注
關(guān)注
147文章
18819瀏覽量
393859 -
瑞薩
+關(guān)注
關(guān)注
37文章
22468瀏覽量
90127 -
定時器
+關(guān)注
關(guān)注
23文章
3367瀏覽量
122509 -
波形
+關(guān)注
關(guān)注
3文章
406瀏覽量
32986
原文標(biāo)題:基于瑞薩RA2L1的波形生成系統(tǒng)設(shè)計——DTC、AGT與DAC的協(xié)同應(yīng)用
文章出處:【微信號:瑞薩嵌入式小百科,微信公眾號:瑞薩嵌入式小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
瑞薩RA2L1 MCU e2 studio和FSP的使用指南
基于瑞薩RA2L1 MCU的波形生成系統(tǒng)設(shè)計
評論