對于RL78系列的MCU,為了提高運(yùn)行效率,減少CPU的占用,建議UART數(shù)據(jù)收發(fā)使用DMA功能。DMA(Direct Memory Access)是RL78 MCU內(nèi)置的一個(gè)控制器,能在支持DMA外圍硬件的SFR和內(nèi)部RAM之間不經(jīng)過CPU而自動(dòng)傳送數(shù)據(jù)。
打開DMA0的配置界面如下,首先要確定DMA0的傳送方向,其次選擇外設(shè)SFR寄存器,以及RAM的地址和指定DMA0傳送的數(shù)據(jù)長度,第三要設(shè)置DMA0的觸發(fā)源。DAM1的設(shè)置和DMA0是相同的,根據(jù)應(yīng)用需求,進(jìn)行相應(yīng)的配置。
UART的配置比較簡單,在此不在累述,配置好后,點(diǎn)擊“code generator”,生成對應(yīng)的驅(qū)動(dòng)代碼,順便說,自動(dòng)生產(chǎn)的串口API函數(shù)是沒有__far類型的,但是實(shí)際測試的時(shí)候,發(fā)送的數(shù)據(jù)可能是錯(cuò)誤的,因?yàn)槎x的數(shù)據(jù)buffer可能不在鏡像區(qū),這樣會(huì)導(dǎo)致傳送的地址是錯(cuò)誤的,所以為避免類似的情況發(fā)生,建議在如下地方修改為__far類型。
定義好接收數(shù)據(jù)的uart_buf[10], 并把數(shù)據(jù)buffer的地址給到DRA0,如下,DMA0被觸發(fā)后,會(huì)把在SFR接收到的數(shù)據(jù)直接送給uart_buf[10]。
左右滑動(dòng)查看完整內(nèi)容
左右滑動(dòng)查看完整內(nèi)容
通過DMA1發(fā)送數(shù)據(jù)時(shí),也是一樣,要發(fā)送數(shù)據(jù)的buffer的地址賦給DRA1,DMA1被觸發(fā)后,會(huì)把RAM buffer的數(shù)據(jù)送給SFR進(jìn)行發(fā)送。
左右滑動(dòng)查看完整內(nèi)容
在主函數(shù)main里,初始化相關(guān)的函數(shù),如下。
左右滑動(dòng)查看完整內(nèi)容
連接好硬件,并把生成的.mot文件下載到MCU里,通過串口助手給MCU發(fā)送8個(gè)字符數(shù)據(jù)“12345678”,在應(yīng)用程序里沒有對接收的SFR數(shù)據(jù)進(jìn)行處理的情況下,通過DMA0會(huì)把接收到SFR的8個(gè)數(shù)據(jù)送到指定的buffer 里,經(jīng)檢查結(jié)果,數(shù)據(jù)接收正確。
-
mcu
+關(guān)注
關(guān)注
146文章
17123瀏覽量
350973 -
控制器
+關(guān)注
關(guān)注
112文章
16332瀏覽量
177800 -
寄存器
+關(guān)注
關(guān)注
31文章
5336瀏覽量
120224 -
uart
+關(guān)注
關(guān)注
22文章
1235瀏覽量
101350 -
dma
+關(guān)注
關(guān)注
3文章
560瀏覽量
100544
原文標(biāo)題:RL78系列MCU DMA在UART中的使用
文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論