1.1硬件平臺(tái)介紹
RT-Thread和瑞薩推出的HMI-Board上的主控芯片型號(hào)為R7FA6M3AH3CFB。
瑞薩電子 RA6M3 微控制器 (MCU) 群組使用高性能 Arm? Cortex?-M4 內(nèi)核,提供具備 2D 加速器和 JPEG 解碼器的 TFT 控制器。此外,RA6M3 MCU 提供具有單獨(dú) DMA 和 USB 高速接口的以太網(wǎng) MAC,可確保大的數(shù)據(jù)吞吐量。RA6M3 MCU 采用高效的 40nm 工藝,由開放且靈活的生態(tài)系統(tǒng)概念提供支持,即基于 FreeRTOS 的靈活配置軟件包 (FSP),能夠擴(kuò)展以使用其他 RTOSes 和中間件。RA6M3 適用于需要 TFT、以太網(wǎng)、安全性、大型嵌入式 RAM 和 USB 高速 (HS) 的物聯(lián)網(wǎng)應(yīng)用。芯片的特性如下:
20MHz Arm? Cortex?-M4
1MB - 2MB 閃存以及 640kB SRAM
與 EEPROM 存儲(chǔ)數(shù)據(jù)功能類似的 64kB 數(shù)據(jù)閃存
可從 100 引腳封裝擴(kuò)展至 176 引腳封裝
具備 DMA 的以太網(wǎng)控制器
TFT 控制器/2D 加速器/JPEG 解碼器
電容式觸摸傳感單元
USB 2.0 全速/USB 高速
CAN 2.0B
SCI(UART、簡單 SPI、簡單 I2C)
SPI/ I2C 多主機(jī)接口/SDHI
在RT-Stuido的工程創(chuàng)建界面可以看到板卡的芯片數(shù)據(jù)手冊(cè)、使用手冊(cè),以及開發(fā)板的原理圖。
1.2 瑞薩FSP配置安裝和代碼生成
RT-Thread框架如下所示。
其中針對(duì)開發(fā)板的BSP驅(qū)動(dòng)部分,使用瑞薩推出的FSP配置工具RASC來生成板卡的硬件驅(qū)動(dòng)程序。在Github上的可以下載到不同版本的FSP。HMI-Board使用的RASC的版本為v3.5.0。下載完成后,采用默認(rèn)安裝即可。
1.3 嘗試生成Keil工程
使用RASC生成的工程是面向Keil或者IAR等第三方工具,本文選擇使用Keil開發(fā)環(huán)境。
在之前安裝好的的FSP目錄下打開rasc.exe。
在彈出的工程創(chuàng)建界面中,輸入要?jiǎng)?chuàng)建的工程名稱以及路徑。
由于HMI-Board不是Renesas官方推出的開發(fā)板,在Board欄中選則“Cunstom User Board(Any Device)”,芯片選擇R7FA6M3AH3CFB,IDE Project Type 選擇Keil MDK Version5。
在RTOS選擇頁選擇”No RTOS”,不需要操作系統(tǒng)支持。
在工程模板選擇中選擇“Bare Metal - Minimal”,創(chuàng)建出的工程不會(huì)進(jìn)行任何操作,在此基礎(chǔ)上,可以根據(jù)Renesas定義的函數(shù)接口來實(shí)現(xiàn)用戶自定義的功能。
工程創(chuàng)建完成后在FSP Configuration的配置頁中,對(duì)芯片的外設(shè)、模塊、協(xié)議棧等進(jìn)行添加和配置。
查看開發(fā)手冊(cè)可以看到P209和P210上外接了兩個(gè)LED燈,P205(TX)和P206(RX)為串口4的引腳。在FSP->Configuration的Stack中添加相應(yīng)的IO模塊和串口模塊。添加完成后的模塊組成如圖所示。
模塊添加完成后,需要根據(jù)硬件的參數(shù)對(duì)其進(jìn)行相應(yīng)的配置,主要是引腳和使用到的串口號(hào)。LED控制屬于通用GPIO輸出。IO模塊的參數(shù)采用默認(rèn)參數(shù)即可。
串口模塊需要指定使用的串口號(hào)、波特率、數(shù)據(jù)位、校驗(yàn)位、停止位以及引腳等信息,模塊的配置如下:
其他外設(shè)的配置方式與此類似,這里就不在進(jìn)行介紹了。點(diǎn)擊Generate Project Content生成相應(yīng)的工程,就可以在工程使用上述模塊的接口函數(shù),不再需要自己編寫底層的代碼。
生成的Keil工程的目錄如下圖所示。
RASC會(huì)自動(dòng)生成的代碼都在Flex Software標(biāo)簽下,而工程相關(guān)的代碼則存在其它的文件目錄中。
注:目前使用過程中,在RASC中添加新的模塊并重新生成Keil工程后,會(huì)把Keil中的配置選項(xiàng)重置,這對(duì)開發(fā)是一個(gè)不友好的功能,不知道該如何解決。
1.4 串口通訊和IO控制
在RASC中配置的IO和串口模塊在hal_data.c中定義了xx_data.c中定義了相關(guān)模塊的配置、接口和實(shí)例變量。
在瑞薩的提供的HAL庫中,函數(shù)的接口定義格式為:
R__();
比如
err = R_SCI_UART_Open (&g_uart4_ctrl, &g_uart4_cfg);
err = R_SCI_UART_Write (&g_uart4_ctrl, p_msg, msg_len);
R_IOPORT_PinWrite(&g_ioport_ctrl,BSP_IO_PORT_02_PIN_09,pin_level);
串口的中斷函數(shù)在RASC聲明為user_uart4_callback,定義如下:
void user_uart4_callback(uart_callback_args_t *p_args)
{
g_data_received_flag=true;
}
定義功能函數(shù)
fsp_err_t uart_ep_demo(void)
{
/* Holds level to set for pins /
bsp_io_level_t pin_level = BSP_IO_LEVEL_LOW;
while (true)
{
if(g_data_received_flag)
{
g_data_received_flag = false;
R_IOPORT_PinWrite(&g_ioport_ctrl,BSP_IO_PORT_02_PIN_09,pin_level);
R_IOPORT_PinWrite(&g_ioport_ctrl,BSP_IO_PORT_02_PIN_10,pin_level);
/ Toggle level for next write */
if (BSP_IO_LEVEL_LOW == pin_level)
{
pin_level = BSP_IO_LEVEL_HIGH;
}
else
{
pin_level = BSP_IO_LEVEL_LOW;
}
}
}
}
在入口函數(shù)hal_entry中調(diào)用上述的函數(shù)
void hal_entry(void)
{
/* TODO: add your own code here /
......
/ Initializing IOPORT /
err=R_IOPORT_Open(&g_ioport_ctrl,&g_bsp_pin_cfg);
if(err!=FSP_SUCCESS)
{
APP_PRINT ("rn ** IO PORT INIT FAILED ** rn");
APP_ERR_TRAP(err);
}
/ Initializing UART /
err = uart_initialize();
if (FSP_SUCCESS != err)
{
APP_PRINT ("rn ** UART INIT FAILED ** rn");
APP_ERR_TRAP(err);
}
/ User defined function to demonstrate UART functionality /
err = uart_ep_demo();
if (FSP_SUCCESS != err)
{
APP_PRINT ("rn ** UART EP Demo FAILED ** rn");
deinit_uart();
APP_ERR_TRAP(err);
}
#if BSP_TZ_SECURE_BUILD
/ Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}
編譯前勾選使用“Use MicroLIB”
編譯完成后,在下載時(shí)需要在調(diào)試器的配置界面設(shè)定以下參數(shù),這些參數(shù)中的RAM項(xiàng)和指定MCU的SRAM空間分布相關(guān),需要查看使用手冊(cè)來確定。
下載后運(yùn)行,通過串口發(fā)送任意字符,可以觀察到板卡上的LED燈在閃爍。
-
加速器
+關(guān)注
關(guān)注
2文章
833瀏覽量
39573 -
EEPROM
+關(guān)注
關(guān)注
9文章
1103瀏覽量
84990 -
電容式觸摸
+關(guān)注
關(guān)注
0文章
49瀏覽量
18943 -
以太網(wǎng)控制器
+關(guān)注
關(guān)注
0文章
41瀏覽量
13077 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1496瀏覽量
43481
發(fā)布評(píng)論請(qǐng)先 登錄
【獲獎(jiǎng)名單】瑞薩RA4M2物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)計(jì)挑戰(zhàn)賽獲獎(jiǎng)名單公布!
LabVIEW挑戰(zhàn)賽正式開賽,臺(tái)北總決賽等著你!
【DIGILENT挑戰(zhàn)賽】+電子相框
征集“沈陽編程挑戰(zhàn)賽”志愿者,科普IoT相關(guān)工具及技術(shù)
5天通過VR學(xué)習(xí)原理圖設(shè)計(jì)挑戰(zhàn)賽
5天通過VR學(xué)習(xí)原理圖挑戰(zhàn)賽
分享3天LabVIEW人臉識(shí)別挑戰(zhàn)賽設(shè)計(jì)心得,贏取學(xué)院課程福利!
等個(gè)有“源”人|OpenHarmony 成長計(jì)劃學(xué)生挑戰(zhàn)賽報(bào)名啟動(dòng)
等個(gè)有“源”人|OpenHarmony 成長計(jì)劃學(xué)生挑戰(zhàn)賽報(bào)名啟動(dòng)
OpenHarmony成長計(jì)劃挑戰(zhàn)賽作品有獎(jiǎng)?wù)骷?/a>
#Altium聲源跟蹤小車挑戰(zhàn)賽 活動(dòng)手冊(cè)
【獲獎(jiǎng)公示】華秋PCB多層板設(shè)計(jì)挑戰(zhàn)賽獲獎(jiǎng)名單
【精品合集】瑞薩RA4M2物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)計(jì)挑戰(zhàn)賽作品合集
【RA4M2設(shè)計(jì)挑戰(zhàn)賽】獲獎(jiǎng)感言
Renesas GUI挑戰(zhàn)—天氣日歷設(shè)計(jì)

評(píng)論