“RA MCU眾測寶典”SPI專題來啦!這次我們聚焦【RA-Eco-RA4E2】開發(fā)板,一步步用SPI驅動1.8寸TFT屏幕。
開啟寶典
前言
本次實驗使用的是1.8寸TFT屏幕,分辨率128x160,驅動IC是ST7735。
實驗的主要目的是根據(jù)屏幕的引腳定義來調(diào)用FSP庫的SPI功能,為之后的項目模塊整合打個基礎。
01
硬件部分
1.8寸TFT屏幕的引腳定義如下:


觀察原理圖,在PMOD這塊,正好有我們驅動屏幕所需的SPI功能所使用的引腳。接下來在e2s配置里就著重關注相關引腳配置。

02
軟件部分
1
新建工程
將先前創(chuàng)建的工程模板文件夾復制一份,并將文件夾重命名為03_SPI_TFT。
在e2s里面,選擇菜單欄的文件—導入—常規(guī)—現(xiàn)有項目到工作空間中—選擇根目錄"瀏覽"—完成。
2
配置工程
2.1設置外設對應引腳

這里將RST、DC、CS、BL這幾個用GPIO進行操作,它們分別對應的開發(fā)板接口在先前的表格中已給出。
將P408、P105、P301、P014都設置為類似如下圖所示的內(nèi)容,注意Symbolic name這里,我都用的前面表格內(nèi)的引腳名,如RST、DC等;Mode選擇Output Initial Low。

2.2新建并設置模塊屬性
點擊Stacks,New Stack—Connectivity—SPI(r_spi)。點擊剛生成的模塊-屬性,我們只需要改動下圖所示的地方。

2.3生成代碼
保存配置文件,并點擊Generate Project Content讓其自動為我們生成代碼。
3
編寫代碼
由于代碼內(nèi)容過多,請在附件中下載工程壓縮包查看。
3.1新建文件夾及源文件
在工程的src文件夾下,新建一個文件夾名為lcd,以及l(fā)cd_driver.h頭文件和lcd_driver.c源文件,另外再建兩個頭文件,分別是font.h和pic.h。
3.2修改lcd文件夾下的文件
請直接下載附件,查看工程源文件。
3.3修改hal_entry.c
在文件開頭增加:
左右滑動查看完整內(nèi)容
#include"lcd/lcd_driver.h"
在hal_entry函數(shù)前面增加spi_callback,spi回調(diào)函數(shù):
左右滑動查看完整內(nèi)容
voidspi_callback(spi_callback_args_t * p_args){ if(SPI_EVENT_TRANSFER_COMPLETE== p_args->event) { g_transfer_complete =true; }}
在hal_entry函數(shù)內(nèi)增加:
左右滑動查看完整內(nèi)容
fsp_err_terr =R_SPI_Open(&g_spi1_ctrl, &g_spi1_cfg);assert(FSP_SUCCESS == err);R_IOPORT_PinWrite(&g_ioport_ctrl, RST, BSP_IO_LEVEL_LOW);R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MILLISECONDS);R_IOPORT_PinWrite(&g_ioport_ctrl, RST, BSP_IO_LEVEL_HIGH);R_BSP_SoftwareDelay(150, BSP_DELAY_UNITS_MILLISECONDS);R_IOPORT_PinWrite(&g_ioport_ctrl, BL, BSP_IO_LEVEL_HIGH);LCD_Init();LED_ON();
while(1){ LCD_Fill(0,0,LCD_W,LCD_H,BLUE); R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS); LCD_Fill(0,0,LCD_W,LCD_H,YELLOW); R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS); LCD_Fill(0,0,LCD_W,LCD_H,BLACK); LCD_ShowString(32,50,(uint8_t*)"RA4E2",RED,BLACK,24,0); LCD_ShowString(8,80,(uint8_t*)"SPI-LCD",BLUE,BLACK,32,0); R_BSP_SoftwareDelay(2000, BSP_DELAY_UNITS_MILLISECONDS);}
注:這里踩了兩個坑
一定要在使用SPI前開啟SPI,即調(diào)用R_SPI_Open。因為之前做點亮LED實驗時,R_IOPORT_Open是被初始化程序自動調(diào)用的,在這里想當然地以為程序也會自動調(diào)用,就沒加。結果就是屏幕各種點不亮。
需要在配置屏幕初始化之前,對屏幕進行reset操作,即拉低RST引腳1ms,拉高后等待120ms以上,再調(diào)用LCD_Init()。
03
下載測試
連接好開發(fā)板與屏幕,編譯項目、燒錄程序。
如果成功,將會看到顏色填充刷屏+顯示字符串的效果,如結尾視頻所示。
04
附件
您可掃描下方二維碼查看完整代碼內(nèi)容。
完整代碼
/uploads/03_SPI_TFT_1751424661.zip

從屏幕引腳匹配、SPI模塊參數(shù)配置,到LCD驅動代碼編寫,再到避開“未手動開啟SPI”“復位不充分”的關鍵坑,我們不僅成功讓TFT屏幕實現(xiàn)色彩刷屏和“RA4E2”“SPI-LCD”字符串顯示,更扎實掌握了SPI高速串行通信的核心邏輯——這種多線傳輸?shù)姆绞?,在顯示外設、數(shù)據(jù)傳輸?shù)葓鼍爸杏兄豢商娲膬?yōu)勢。

SPI我們打開了高速通信的大門!接下來,“RA MCU 眾測寶典”將迎來新的進階專題——QSPI。作為SPI的升級版本,QSPI憑借四通道傳輸?shù)膬?yōu)勢,在高速存儲、外設通信等場景中表現(xiàn)更出色,咱們會一起探索它的獨特玩法。關注瑞薩嵌入式小百科,新專題開啟第一時間就能跟上,繼續(xù)解鎖RA系列開發(fā)板的通信新技能!
瑞薩樣品/開發(fā)板申請入口如下,可掃描二維碼或復制鏈接到瀏覽器獲得
申請入口
瑞薩樣品/開發(fā)板申請入口:
https://jsj.top/f/AgUyYV

需要技術支持?
如您在使用瑞薩MCU/MPU產(chǎn)品中有任何問題,可識別下方二維碼或復制網(wǎng)址到瀏覽器中打開,進入瑞薩技術論壇尋找答案或獲取在線技術支持。

https://community-ja.renesas.com/zh/forums-groups/mcu-mpu/
-
mcu
+關注
關注
147文章
18916瀏覽量
397850 -
TFT屏幕
+關注
關注
0文章
11瀏覽量
10182 -
SPI
+關注
關注
17文章
1885瀏覽量
101185
發(fā)布評論請先 登錄
瑞薩RA2L1 MCU e2 studio和FSP的使用指南
瑞薩RA MCU眾測寶典 SysTick之RA0E1定時器點燈
RA MCU眾測寶典 | I2C讀取EEPROM
RA MCU眾測寶典 | ADC/DAC之【RA2L1】DAC電壓輸出及ADC電壓采集實驗
【RA-Eco-RA0E1-32PIN-V1.0開發(fā)板試用】軟件驅動TFT屏幕
【RA-Eco-RA4E2-64PIN-V1.0開發(fā)板試用】03、SPI驅動TFT屏幕
是否有用于“KMR-1.8 SPI TFT 128 * 60”屏幕的PIC32驅動程序?
RT-Thread與Renesas RA2L1實現(xiàn)1.8寸TFT屏幕顯示的步驟
STM32單片機基礎17——使用硬件SPI驅動TFT-LCD(ST7789)
STC8的硬件SPI驅動ST7735彩色TFT屏幕
RA MCU眾測寶典 | IIC之【RA2E1】IIC通信的OLED顯示
RA MCU眾測寶典 | 在瑞薩CPKCOR-RA8D1B核心板上實現(xiàn)QSPI讀取外部Flash
RA MCU眾測寶典 | SPI驅動TFT屏幕
評論