19.10
實(shí)驗(yàn)4:DTC+UART串口收發(fā)
19.10.1
軟件設(shè)計(jì)
19.10.1.1
新建工程
本實(shí)驗(yàn)新建工程的步驟與上面的實(shí)驗(yàn)3基本一致。
對(duì)于e2studio開(kāi)發(fā)環(huán)境:
拷貝一份我們之前的e2s工程 “19_UART_Receive_Send”,然后將工
程文件夾重命名為“20_DTC_Using_UART”,最后再將它導(dǎo)入到我們的e2studio工作空間中。
對(duì)于Keil開(kāi)發(fā)環(huán)境:
拷貝一份我們之前的Keil工程“19_UART_Receive_Send”,然后將工程文
件夾重命名為“20_DTC_Using_UART”,并進(jìn)入該文件夾里面雙擊Keil工程文件,打開(kāi)該工程。
工程新建好之后,在工程根目錄的“src”文件夾下面新建“dtc”文件夾,再進(jìn)入“dtc”文件夾里面新建源文件和頭文件:“bsp_dtc.c”和“bsp_dtc.h”。工程文件結(jié)構(gòu)如下。
列表26:文件結(jié)構(gòu)
左右滑動(dòng)查看完整內(nèi)容
20_DTC_External_Interrupt ├─ ...... └─src ├─ led │ ├─ bsp_led.c │ └─ bsp_led.h ├─ debug_uart │ ├─ bsp_debug_uart.c │ └─ bsp_debug_uart.h ├─ dtc │ ├─ bsp_dtc.c │ └─ bsp_dtc.h └─ hal_entry.c
19.10.1.2
FSP配置
打開(kāi)該工程的FSP配置界面。
在“Stacks”一欄里面我們可以看到,工程“19_UART_Receive_Send”已有UART模塊的配置了,如下圖所示。

在這個(gè)已有的UART模塊上面,我們下一步直接在該UART模塊的底層添加DTC傳輸驅(qū)動(dòng)。如下圖所示。

按照如下的步驟操作,為UART的發(fā)送和接收都添加DTC底層驅(qū)動(dòng):
UART發(fā)送:用鼠標(biāo)依次點(diǎn)擊“Add DTC Driver for Transmission”→“New”→“Transfer (r_dtc)”。
UART接收:用鼠標(biāo)依次點(diǎn)擊“Add DTC Driver for Reception”→“New”→“Transfer(r_dtc)”。
我們注意到:“Add DTC Driver for Transmission”之后有“[Recommended but optional]”的字眼、“Add DTC Driver for Reception”之后有“[Not recommended]”的字眼,即:瑞薩FSP庫(kù)官方推薦我們使用DTC來(lái)發(fā)送UART數(shù)據(jù)(雖然也可以不使用DTC),但不推薦使用DTC來(lái)接收UART數(shù)據(jù)。后面我們?cè)賮?lái)講講這是為什么。
添加完成后如下圖所示:

上圖中顯示的UART模塊顯示為紅色,是報(bào)錯(cuò)的,對(duì)此還需要修改下UART模塊的配置。點(diǎn)擊UART 模塊,在屬性配置里將“Common”→“DTC Support”屬性由“Disable”改為“Enable”即可。
接著順便也點(diǎn)擊下UART下面的DTC模塊,會(huì)發(fā)現(xiàn)DTC是基本默認(rèn)配置好的了,不用我們更改,也無(wú)法更改,能改的只有名字,我們把名字改一下,就可以點(diǎn)擊生成代碼,然后編譯了。

與上面使用DTC一些不同的地方是,瑞薩已經(jīng)將DTC融入到UART中了,所以我們?cè)谑褂眠^(guò)程中基本感覺(jué)不到我們?cè)谑褂肈TC傳輸數(shù)據(jù)給UART。
比如,正常情況下會(huì)有一個(gè)open函數(shù)去開(kāi)啟DTC的,但現(xiàn)在不同自己去調(diào)用該函數(shù),因?yàn)槲覀冊(cè)谑褂胓_uart_on_sci.open函數(shù)去開(kāi)啟串口時(shí),就已經(jīng)在內(nèi)部調(diào)用了DTC的開(kāi)啟函數(shù)。
我們只需調(diào)用g_transfer_on_dtc.enable函數(shù)進(jìn)行使能就好了。
列表27:代碼清單20?23使能dtc
左右滑動(dòng)查看完整內(nèi)容
err = g_transfer_on_dtc.enable(g_uart4.p_cfg->p_transfer_rx->p_ctrl); assert(FSP_SUCCESS == err);
使能后就可以像正常使用串口基本一樣了。區(qū)別主要在于:
使用DTC后,串口可以不用等待發(fā)送完成,只需激活DTC后自動(dòng)進(jìn)行搬運(yùn)數(shù)據(jù),不占用CPU;
中斷開(kāi)啟DTC后相當(dāng)于DTC接管了串口的中斷。
使用g_uart_on_sci.write或者R_SCI_UART_Write函數(shù)將字符串?dāng)?shù)據(jù)發(fā)送到串口,該函數(shù)內(nèi)部會(huì)采用DTC來(lái)傳輸。
列表28:代碼清單20?24測(cè)試dtc串口
左右滑動(dòng)查看完整內(nèi)容
uint8_t sci_tx_data[] = {"embedfire-野火 www.embedfire.com
"};
/* 在 while(1) 中循環(huán)調(diào)用 */
// 可以嘗試在 configuration.xml 中將 DTC 模塊去除,再進(jìn)行代碼調(diào)試,看看會(huì)有什么區(qū)別
g_uart_on_sci.write(g_uart4.p_ctrl, (uint8_t *)(sci_tx_data),sizeof(sci_
→tx_data)/sizeof(sci_tx_data[0]));
19.10.1.3
為什么不用DTC接收串口數(shù)據(jù)
在實(shí)際使用過(guò)程中DTC有一些限制:
在本實(shí)驗(yàn)中使用DTC發(fā)送串口數(shù)據(jù),但我們沒(méi)有配置使用DTC接收串口數(shù)據(jù),因?yàn)榫唧w配置過(guò)程可能會(huì)很復(fù)雜,而且我們并不知道串口具體要接收多少數(shù)據(jù),而DTC是傳輸完成了才會(huì)產(chǎn)生中斷,這樣就可能存在,我設(shè)定接受數(shù)據(jù)長(zhǎng)度為128,但實(shí)際傳輸可能只有100,這時(shí)候就不會(huì)產(chǎn)生中斷,雖然接收了數(shù)據(jù),但我們不知道。
如果使用DTC接口進(jìn)行傳輸,則傳輸大小必須小于或等于64K字節(jié)。
所以,雖然在FSP配置頁(yè)面上,顯示有DTC這個(gè)選項(xiàng),但不建議去使用DTC進(jìn)行接收。
19.10.2
實(shí)驗(yàn)現(xiàn)象
運(yùn)行例程代碼時(shí),可以在串口助手看到字符串“embedfire-野火 www.embedfire.com”,以一秒傳輸一次的頻率傳輸字符串,led 也是一秒變換一次。
-
瑞薩
+關(guān)注
關(guān)注
37文章
22482瀏覽量
90901 -
串口
+關(guān)注
關(guān)注
15文章
1619瀏覽量
82867 -
uart
+關(guān)注
關(guān)注
22文章
1314瀏覽量
106678 -
開(kāi)發(fā)環(huán)境
+關(guān)注
關(guān)注
1文章
270瀏覽量
17639
原文標(biāo)題:實(shí)驗(yàn)4:DTC+UART串口收發(fā)——瑞薩RA系列FSP庫(kù)開(kāi)發(fā)實(shí)戰(zhàn)指南(61)
文章出處:【微信號(hào):瑞薩嵌入式小百科,微信公眾號(hào):瑞薩嵌入式小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
瑞薩RA系列FSP庫(kù)開(kāi)發(fā)實(shí)戰(zhàn)指南之DMAC+UART串口收發(fā)實(shí)驗(yàn)
瑞薩RA系列FSP庫(kù)開(kāi)發(fā)實(shí)戰(zhàn)指南之DTC外部中斷觸發(fā)傳輸實(shí)驗(yàn)
瑞薩RA系列FSP庫(kù)開(kāi)發(fā)實(shí)戰(zhàn)指南之I2C讀寫(xiě)EEPROM實(shí)驗(yàn)
瑞薩RA系列FSP庫(kù)開(kāi)發(fā)實(shí)戰(zhàn)指南之QSPI讀寫(xiě)外部Flash芯片實(shí)驗(yàn)
瑞薩e2studio(1)----瑞薩芯片之搭建FSP環(huán)境
【瑞薩RA2L1入門(mén)學(xué)習(xí)】1. 點(diǎn)亮LED
【瑞薩**RA2L1入門(mén)學(xué)習(xí)】+**UART測(cè)試實(shí)驗(yàn)
【瑞薩RA4系列開(kāi)發(fā)板體驗(yàn)】開(kāi)發(fā)環(huán)境搭建和新手點(diǎn)燈指南
【瑞薩RA4系列開(kāi)發(fā)板體驗(yàn)】CoreMark移植完全指南——UART輸出和SysTick計(jì)時(shí)的應(yīng)用
【瑞薩RA4系列開(kāi)發(fā)板體驗(yàn)】10. 我的試用總結(jié)
【瑞薩RA4系列開(kāi)發(fā)板體驗(yàn)】體驗(yàn)過(guò)程
【野火啟明6M5開(kāi)發(fā)板體驗(yàn)】開(kāi)箱+認(rèn)識(shí)開(kāi)發(fā)板+資料
【有獎(jiǎng)直播預(yù)報(bào)名】瑞薩電子RA系列產(chǎn)品開(kāi)發(fā)工具之FSP4.0.0新特性介紹
基于瑞薩RA0E1開(kāi)發(fā)板的ThreadX實(shí)時(shí)操作系統(tǒng)串口回顯測(cè)試
瑞薩RA系列FSP庫(kù)開(kāi)發(fā)實(shí)戰(zhàn)指南之DTC+UART串口收發(fā)實(shí)驗(yàn)
評(píng)論