對于RL78系列的MCU,為了提高運行效率,減少CPU的占用,建議UART數(shù)據(jù)收發(fā)使用DMA功能。DMA(Direct Memory Access)是RL78 MCU內(nèi)置的一個控制器,能在支持DMA外圍硬件的SFR和內(nèi)部RAM之間不經(jīng)過CPU而自動傳送數(shù)據(jù)。

打開DMA0的配置界面如下,首先要確定DMA0的傳送方向,其次選擇外設SFR寄存器,以及RAM的地址和指定DMA0傳送的數(shù)據(jù)長度,第三要設置DMA0的觸發(fā)源。DAM1的設置和DMA0是相同的,根據(jù)應用需求,進行相應的配置。


UART的配置比較簡單,在此不在累述,配置好后,點擊“code generator”,生成對應的驅動代碼,順便說,自動生產(chǎn)的串口API函數(shù)是沒有__far類型的,但是實際測試的時候,發(fā)送的數(shù)據(jù)可能是錯誤的,因為定義的數(shù)據(jù)buffer可能不在鏡像區(qū),這樣會導致傳送的地址是錯誤的,所以為避免類似的情況發(fā)生,建議在如下地方修改為__far類型。

定義好接收數(shù)據(jù)的uart_buf[10], 并把數(shù)據(jù)buffer的地址給到DRA0,如下,DMA0被觸發(fā)后,會把在SFR接收到的數(shù)據(jù)直接送給uart_buf[10]。
左右滑動查看完整內(nèi)容

左右滑動查看完整內(nèi)容

通過DMA1發(fā)送數(shù)據(jù)時,也是一樣,要發(fā)送數(shù)據(jù)的buffer的地址賦給DRA1,DMA1被觸發(fā)后,會把RAM buffer的數(shù)據(jù)送給SFR進行發(fā)送。
左右滑動查看完整內(nèi)容

在主函數(shù)main里,初始化相關的函數(shù),如下。
左右滑動查看完整內(nèi)容

連接好硬件,并把生成的.mot文件下載到MCU里,通過串口助手給MCU發(fā)送8個字符數(shù)據(jù)“12345678”,在應用程序里沒有對接收的SFR數(shù)據(jù)進行處理的情況下,通過DMA0會把接收到SFR的8個數(shù)據(jù)送到指定的buffer 里,經(jīng)檢查結果,數(shù)據(jù)接收正確。



-
mcu
+關注
關注
147文章
18924瀏覽量
398076 -
控制器
+關注
關注
114文章
17788瀏覽量
193108 -
寄存器
+關注
關注
31文章
5608瀏覽量
129968 -
uart
+關注
關注
22文章
1314瀏覽量
106634 -
dma
+關注
關注
3文章
582瀏覽量
105920
發(fā)布評論請先 登錄
RL78 G12 UART SPI IIC不能同時使用嗎?
怎么實現(xiàn)基于瑞薩單片機RL78/I1A系列MCU設計的帶數(shù)字LED照明系統(tǒng)?
瑞薩RL78/G15針對8位MCU應用進行的優(yōu)化
介紹了RL78/G13 MCU 開發(fā)套件演示
瑞薩電子推出的RL78/I1x系列微控制器是RL78微控制器系列
RL78/G23 Data flash使用教程
RL78系列MCU Data Flash使用介紹
互動有禮 | 16位的RL78/G24 MCU可實現(xiàn)與32位MCU相當?shù)男阅埽?/a>
RL78系列MCU DMA在UART中的使用
評論