RA MCU众测宝典 | SPI驱动TFT屏幕

描述

 

RA MCU众测宝典SPI专题来啦!这次我们聚焦【RA-Eco-RA4E2】开发板,一步步用SPI驱动1.8寸TFT屏幕。


 

开启宝典

 


 

前言

本次实验使用的是1.8寸TFT屏幕,分辨率128x160,驱动IC是ST7735。

实验的主要目的是根据屏幕的引脚定义来调用FSP库的SPI功能,为之后的项目模块整合打个基础。


 

01


 

硬件部分


 

1.8寸TFT屏幕的引脚定义如下:

TFT屏幕TFT屏幕

观察原理图,在PMOD这块,正好有我们驱动屏幕所需的SPI功能所使用的引脚。接下来在e2s配置里就着重关注相关引脚配置。

TFT屏幕


 

02


 

软件部分


 

1

新建工程

将先前创建的工程模板文件夹复制一份,并将文件夹重命名为03_SPI_TFT。


 

在e2s里面,选择菜单栏的文件—导入—常规—现有项目到工作空间中—选择根目录"浏览"—完成。


 

2

配置工程

2.1 设置外设对应引脚


 

TFT屏幕

这里将RST、DC、CS、BL这几个用GPIO进行操作,它们分别对应的开发板接口在先前的表格中已给出。


 

将P408、P105、P301、P014都设置为类似如下图所示的内容,注意Symbolic name这里,我都用的前面表格内的引脚名,如RST、DC等;Mode选择Output Initial Low。

TFT屏幕


 

2.2 新建并设置模块属性


 

点击Stacks,New Stack—Connectivity—SPI(r_spi)。点击刚生成的模块-属性,我们只需要改动下图所示的地方。

TFT屏幕


 

2.3 生成代码


 

保存配置文件,并点击Generate Project Content让其自动为我们生成代码。


 

3

编写代码

由于代码内容过多,请在附件中下载工程压缩包查看。

3.1 新建文件夹及源文件


 

在工程的src文件夹下,新建一个文件夹名为lcd,以及lcd_driver.h头文件和lcd_driver.c源文件,另外再建两个头文件,分别是font.h和pic.h。


 

3.2 修改lcd文件夹下的文件


 

请直接下载附件,查看工程源文件。


 

3.3 修改hal_entry.c


 

在文件开头增加:

左右滑动查看完整内容

  •  

#include"lcd/lcd_driver.h"


 

在hal_entry函数前面增加spi_callback,spi回调函数:

左右滑动查看完整内容

  •  
  •  
  •  
  •  
  •  
  •  
  •  

voidspi_callback(spi_callback_args_t * p_args){    if (SPI_EVENT_TRANSFER_COMPLETE == p_args->event)    {        g_transfer_complete = true;    }}


 

在hal_entry函数内增加:

左右滑动查看完整内容

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

fsp_err_t err = 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,即调用R_SPI_Open。因为之前做点亮LED实验时,R_IOPORT_Open是被初始化程序自动调用的,在这里想当然地以为程序也会自动调用,就没加。结果就是屏幕各种点不亮。

需要在配置屏幕初始化之前,对屏幕进行reset操作,即拉低RST引脚1ms,拉高后等待120ms以上,再调用LCD_Init()。


 

03


 

下载测试


 

连接好开发板与屏幕,编译项目、烧录程序。


 

如果成功,将会看到颜色填充刷屏+显示字符串的效果,如结尾视频所示。


 

04


 

附件


 

您可扫描下方二维码查看完整代码内容。


 

完整代码

/uploads/03_SPI_TFT_1751424661.zip

TFT屏幕
 


 

从屏幕引脚匹配、SPI模块参数配置,到LCD驱动代码编写,再到避开“未手动开启SPI”“复位不充分”的关键坑,我们不仅成功让TFT屏幕实现色彩刷屏和“RA4E2”“SPI-LCD”字符串显示,更扎实掌握了SPI高速串行通信的核心逻辑——这种多线传输的方式,在显示外设、数据传输等场景中有着不可替代的优势。

TFT屏幕

SPI我们打开了高速通信的大门!接下来,“RA MCU 众测宝典”将迎来新的进阶专题——QSPI。作为SPI的升级版本,QSPI凭借四通道传输的优势,在高速存储、外设通信等场景中表现更出色,咱们会一起探索它的独特玩法。关注瑞萨嵌入式小百科,新专题开启第一时间就能跟上,继续解锁RA系列开发板的通信新技能!


 

TFT屏幕


 

瑞萨样品/开发板申请入口如下,可扫描二维码或复制链接到浏览器获得

申请入口

瑞萨样品/开发板申请入口:

https://jsj.top/f/AgUyYV

TFT屏幕


 

 

需要技术支持?

如您在使用瑞萨MCU/MPU产品中有任何问题,可识别下方二维码或复制网址到浏览器中打开,进入瑞萨技术论坛寻找答案或获取在线技术支持。

TFT屏幕

https://community-ja.renesas.com/zh/forums-groups/mcu-mpu/


 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分