介紹
開發(fā)環(huán)境:IAR FOR ARM 9.30.1
RASC V4.3.0
芯片型號(hào):R7FA2L1AB2DFL#AA0
功能描述
在串口+DTC功能時(shí)無法得知接收一幀數(shù)據(jù)是否接收結(jié)束。本例程配合ELC功能聯(lián)動(dòng)定時(shí)器來判斷串口接收字節(jié)與字節(jié)之間超時(shí)來判斷一幀數(shù)據(jù)的接收完成。
主要內(nèi)容
1、新建RASC工程
如下圖所示:
![wKgZomWc8biAQ_UGAADwNl_5Ppg232.png](https://file1.elecfans.com/web2/M00/BB/B1/wKgZomWc8biAQ_UGAADwNl_5Ppg232.png)
2、安裝好RASC
默認(rèn)安裝目錄:
C:\Renesas\RA\sc_v2023-01_fsp_v4.3.0\
雙擊
![wKgaomWc9PmANa7wAAABYExxeWc652.png](https://file1.elecfans.com/web2/M00/BC/9C/wKgaomWc9PmANa7wAAABYExxeWc652.png)
運(yùn)行RASC
![wKgZomWc9QSAS57tAADRK0QMcks251.png](https://file1.elecfans.com/web2/M00/BB/B2/wKgZomWc9QSAS57tAADRK0QMcks251.png)
3、打開后如下圖所示:
![wKgZomWc9Q6AIlvnAACqe_-tfBA372.png](https://file1.elecfans.com/web2/M00/BB/B2/wKgZomWc9Q6AIlvnAACqe_-tfBA372.png)
4、新建工程
![wKgZomWc9kqAfzKAAAB3WTEavHs399.png](https://file1.elecfans.com/web2/M00/BB/B2/wKgZomWc9kqAfzKAAAB3WTEavHs399.png)
![wKgaomWc9lCABBBJAAC4Hb99PMI144.png](https://file1.elecfans.com/web2/M00/BC/9D/wKgaomWc9lCABBBJAAC4Hb99PMI144.png)
![wKgaomWc9laAGMidAABFgRtlD3g276.png](https://file1.elecfans.com/web2/M00/BC/9D/wKgaomWc9laAGMidAABFgRtlD3g276.png)
![wKgaomWc9lyASi6OAAB9lgtsxTo720.png](https://file1.elecfans.com/web2/M00/BC/9D/wKgaomWc9lyASi6OAAB9lgtsxTo720.png)
![wKgaomWc9mKAfRt4AAHJt5OCLY0187.png](https://file1.elecfans.com/web2/M00/BC/9D/wKgaomWc9mKAfRt4AAHJt5OCLY0187.png)
5、配置串口PIN腳功能
![wKgaomWc9nmAVDCkAAIcJ1bJuOE385.png](https://file1.elecfans.com/web2/M00/BC/9D/wKgaomWc9nmAVDCkAAIcJ1bJuOE385.png)
6、添加串口功能
![wKgaomWc9rCAZnk1AAGKr9ynuf0872.png](https://file1.elecfans.com/web2/M00/BC/9D/wKgaomWc9rCAZnk1AAGKr9ynuf0872.png)
7、添加串口dtc收發(fā)功能
![wKgZomWc9ruABy38AABvrZN7nW0914.png](https://file1.elecfans.com/web2/M00/BB/B2/wKgZomWc9ruABy38AABvrZN7nW0914.png)
![wKgZomWc9sKAVL1lAACEitEYPG0945.png](https://file1.elecfans.com/web2/M00/BB/B3/wKgZomWc9sKAVL1lAACEitEYPG0945.png)
8、配置串口屬性
![wKgZomWc9tiAaJKgAANHb4IxiLA871.png](https://file1.elecfans.com/web2/M00/BB/B3/wKgZomWc9tiAaJKgAANHb4IxiLA871.png)
![wKgZomWc9uKAHNwnAADmB4fd-p8484.png](https://file1.elecfans.com/web2/M00/BB/B3/wKgZomWc9uKAHNwnAADmB4fd-p8484.png)
9、添加定時(shí)器
![wKgZomWc9umAHkZjAAHBHOn-uSA642.png](https://file1.elecfans.com/web2/M00/BB/B3/wKgZomWc9umAHkZjAAHBHOn-uSA642.png)
10、配置定時(shí)器
這里以超時(shí)時(shí)間為2ms為例,用戶可以根據(jù)實(shí)際情況超時(shí)時(shí)間。
![wKgaomWc9vWAC7uaAADPjC3xr2w605.png](https://file1.elecfans.com/web2/M00/BC/9D/wKgaomWc9vWAC7uaAADPjC3xr2w605.png)
![wKgaomWc9vyAdq8QAAF0EdupaL0811.png](https://file1.elecfans.com/web2/M00/BC/9D/wKgaomWc9vyAdq8QAAF0EdupaL0811.png)
![wKgaomWc9wKABUIAAAFvYf7AzZQ993.png](https://file1.elecfans.com/web2/M00/BC/9D/wKgaomWc9wKABUIAAAFvYf7AzZQ993.png)
11、添加ELC
![wKgZomWc9xmAbjyCAAGeVQw8fsk547.png](https://file1.elecfans.com/web2/M00/BB/B3/wKgZomWc9xmAbjyCAAGeVQw8fsk547.png)
12、所需外設(shè)都已經(jīng)配置好,生成IAR工程
![wKgZomWc9yKAae_pAAFZ3XWnvuQ727.png](https://file1.elecfans.com/web2/M00/BB/B3/wKgZomWc9yKAae_pAAFZ3XWnvuQ727.png)
13、打開IAR工程
![wKgaomWc9y2Af1ZIAAF0flYowGg245.png](https://file1.elecfans.com/web2/M00/BC/9D/wKgaomWc9y2Af1ZIAAF0flYowGg245.png)
14、在hal_entry.c文件添加如下代碼:
#define TRANSFER_LENGTH 512 transfer_properties_t uart0_dtcinfo1; typedef struct sf_uart_conf { uint8_t uart_txflag; //發(fā)送標(biāo)志 uint8_t uart_rxflag; //接收標(biāo)志 uint16_t uart_txlen; //發(fā)送長(zhǎng)度 uint16_t uart_rxlen; //接收長(zhǎng)度 uint8_t uart_rxbuf[TRANSFER_LENGTH]; //接收buf uint8_t uart_txbuf[TRANSFER_LENGTH]; //發(fā)送buf } sf_uart_conf_t; sf_uart_conf_t uart0;
//2ms定時(shí)器0回調(diào)函數(shù) void uart0_rxtimeout_cb( timer_callback_args_t* p_args ) { if ( TIMER_EVENT_CYCLE_END == p_args->event ) { //關(guān)定時(shí)器0 ( void ) R_GPT_Stop( &g_timer0_ctrl ); //獲取串口0 接收DTC信息 R_DTC_InfoGet( &g_transfer1_ctrl, &uart0_dtcinfo1 ); //計(jì)算串口0接收長(zhǎng)度 uart0.uart_rxlen = TRANSFER_LENGTH - uart0_dtcinfo1.transfer_length_remaining; //置發(fā)送標(biāo)志 uart0.uart_rxflag = 1; } }
void hal_entry(void) { /* TODO: add your own code here */ //初始化定時(shí)器0 2ms間隔中斷 R_GPT_Open( &g_timer0_ctrl, &g_timer0_cfg ); //初始化串口0 R_SCI_UART_Open( &g_uart0_ctrl, &g_uart0_cfg ); //初始化ELC聯(lián)動(dòng) R_ELC_Open( &g_elc_ctrl, &g_elc_cfg ); //使能ECL R_ELC_Enable( &g_elc_ctrl ); //使能定時(shí)器0 ( void ) R_GPT_Enable( &g_timer0_ctrl ); //智串口0發(fā)送標(biāo)志 uart0.uart_txflag = 1; while ( true ) { if ( uart0.uart_rxflag ) { uart0.uart_rxflag = 0; uart0.uart_txlen = uart0.uart_rxlen; R_SCI_UART_Write( &g_uart0_ctrl, uart0.uart_rxbuf, uart0.uart_txlen ); } if ( uart0.uart_txflag ) { uart0.uart_txflag = 0; R_SCI_UART_Read( &g_uart0_ctrl, uart0.uart_rxbuf, TRANSFER_LENGTH ); } } #if BSP_TZ_SECURE_BUILD /* Enter non-secure code */ R_BSP_NonSecureEnter(); #endif }
15、仿真測(cè)試如下圖所示:
![wKgaomWc9ziARoBqAAIlzYCbOYs416.png](https://file1.elecfans.com/web2/M00/BC/9D/wKgaomWc9ziARoBqAAIlzYCbOYs416.png)
結(jié)論
該方式?jīng)]有問題,可以正常應(yīng)用到開發(fā)中。
-
定時(shí)器
+關(guān)注
關(guān)注
23文章
3255瀏覽量
115364 -
串口
+關(guān)注
關(guān)注
14文章
1557瀏覽量
77033
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
基于RA2L1的串口及J-Link的燒寫說明
基于RA2L1的串口及J-Link的燒寫說明
基于RA2L1實(shí)現(xiàn)串口DTC數(shù)據(jù)接收
![基于<b class='flag-5'>RA2L1</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>串口</b><b class='flag-5'>DTC</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>接收</b>](https://file1.elecfans.com/web2/M00/82/6E/wKgaomRTHhKAAedhAAAlSy32emo143.png)
RA2L1 組 Capacitive Touch Evaluation System 用戶手冊(cè)
![<b class='flag-5'>RA2L1</b> 組 Capacitive Touch Evaluation System 用戶手冊(cè)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論