0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

移植st7789屏幕驱动教程

全志在线 来源:全志在线开发者论坛 2023-10-21 16:35 次阅读

移植st7789屏幕驱动

真的不要太简单~

ST7789是一款高度集成的彩色TFT液晶显示屏控制器芯片,通常用于驱动小到中等尺寸的液晶屏。例如淘宝上常见的1.4寸、1.47寸、1.69寸屏幕等等。

309b382e-6feb-11ee-939d-92fbcf53809c.png30cf670c-6feb-11ee-939d-92fbcf53809c.png

为什么RES引脚直接接的VCC,因为不知道具体是哪一块出了问题。RES引脚接到推挽输出的IO引脚后,屏幕也能点亮,但是亮度莫名其妙很低。手上几个屏都测试了一下,都这样。

1st7789驱动

移植

现在就开始吧,首先新建st7789.c和st7789.h文件。然后创建用于初始化st7789芯片的命令序列表。

static lcd_init_cmd_t st7789_init_cmds[] = {
  {0x01, {0}, 0x80, 120},
  /* Sleep Out */
  {0x11, {0}, 0x80, 120},
  /* Memory Data Access Control, MX=MV=1, MY=ML=MH=0, RGB=0 */
  {0x36, {0x00}, 1},
  /* Interface Pixel Format, 16bits/pixel for RGB/MCU interface */
  {0x3A, {0x05}, 1},

这个序列表使用的是这样的数据结构:

310dd974-6feb-11ee-939d-92fbcf53809c.png

在创建列表后编写初始化函数,这里把gpio和spi的初始化也都放在里面了。

然后就是编写一下写命令和写数据的函数,写命令时需要设置一下DC引脚,然后写完立即将DC引脚切换回高电平。

static void st7789_send_cmd(uint8_t cmd) {
 gpio_set_level(disp_pin_dc, 0);
 dirver_spi_send_data(&cmd, 1);
 gpio_set_level(disp_pin_dc, 1);
}
static void st7789_send_data(void *data, uint16_t length) {
 dirver_spi_send_data(data, length);
}

编写屏幕翻转配置函数:

printf("Display orientation: %s
", orientation_str[orientation]);


 uint8_t data[] = {0xC0, 0x00, 0x60, 0xA0};


 printf("0x36 command value: 0x%02X
", data[orientation]);


 st7789_send_cmd(ST7789_MADCTL);
 st7789_send_data((void *)&data[orientation], 1);

最后再写一下写屏函数即可,这里为了快速刷屏,设置了比较大的缓存区。目前还不会使用XR806的DMA,学会了可以减少缓存RAM的大小。

uint8_t data[4] = {0};


 uint16_t offsetx1 = x1;
 uint16_t offsetx2 = x2;
 uint16_t offsety1 = y1;
 uint16_t offsety2 = y2;


#if (TFT_DISPLAY_OFFSETS)
 offsetx1 += TFT_DISPLAY_X_OFFSET;
 offsetx2 += TFT_DISPLAY_X_OFFSET;
 offsety1 += TFT_DISPLAY_Y_OFFSET;
 offsety2 += TFT_DISPLAY_Y_OFFSET;

2刷屏函数

添加

还需要添加一个刷屏函数作为测试,现在补一下。


由于1.69寸屏幕不需要设置屏幕窗口偏移量,就直接按满屏来刷了。

void lcd_clear(uint16_t color) { st7789_flush(0, 240, 0, 320, color); }

然后在main.c里调用屏幕初始化和刷屏函数就可以啦。

3刷屏效果

展示

经过测试,手上的1.47寸屏幕和1.69寸st7789屏幕都可以正常驱动。就是偏移值和屏幕分辨率设置需要再优化一下代码。

3189318c-6feb-11ee-939d-92fbcf53809c.png

审核编辑:汤梓红

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

    关注

    112

    文章

    15223

    浏览量

    171188
  • 液晶屏
    +关注

    关注

    18

    文章

    677

    浏览量

    41690
  • 屏幕
    +关注

    关注

    6

    文章

    1161

    浏览量

    55348
  • 移植
    +关注

    关注

    1

    文章

    367

    浏览量

    27854
  • TFT
    TFT
    +关注

    关注

    10

    文章

    374

    浏览量

    109779

原文标题:移植手表屏驱动步骤方法详解

文章出处:【微信号:gh_79acfa3aa3e3,微信公众号:全志在线】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    WeMOS D1 MIni与ST7789 FTF液晶显示屏是怎样连接的

    WeMOS D1 MIni与ST7789 FTF液晶显示屏材料硬件连接图库安装源代码示例材料硬件连接图库安装源代码示例
    发表于 11-01 07:36

    如何使用STM32CubeMX配置STM32L431RCT6的硬件SPI外设与ST7789通信

    本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件SPI外设与ST7789通信,驱动16bit TFT-LCD 屏幕。0. 前言学习 SPI 外设驱动L
    发表于 11-30 06:36

    STM32 SPI如何驱动ST7789 LCD ISP TFT液晶屏幕

    STM32 SPI如何驱动ST7789 LCD ISP TFT液晶屏幕
    发表于 12-17 06:39

    请问如何用D1s把st7789 i80点亮?

    如何用D1s把st7789 i80点亮?
    发表于 12-28 07:21

    实现ST7789图像显示的方法

    ESP32-CAM之ST7789图像显示最近笔者在学习使用安信可的ESP32-CAM开发板,该开发板自带一个OV2640摄像头。官方提供的例程可以将摄像头视频通过WIFI传输到网页显示,而笔者手里
    发表于 02-18 07:09

    请问CH579可以使用LVGL库吗?可以通过SPI驱动ST7789屏吗?

    请问CH579可以使用LVGL库吗?可以通过SPI驱动ST7789屏吗? CH579可以驱动ST7789屏吗?
    发表于 08-10 07:01

    求助,请问CH579硬件SPI可以驱动ST7789屏吗?

    请问CH579硬件SPI可以驱动ST7789屏吗?
    发表于 09-06 06:12

    在全志XR806上移植st7789屏幕驱动

    驱动 ST7789是一款高度集成的彩色TFT液晶显示屏控制器芯片,通常用于驱动小到中等尺寸的液晶屏。例如淘宝上常见的1.4寸、1.47寸、1.69寸屏幕等等。 现在就开始吧,首先新建
    发表于 11-10 10:21

    STM32单片机基础17——使用硬件SPI驱动TFT-LCD(ST7789

    本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件SPI外设与ST7789通信,驱动16bit TFT-LCD 屏幕。0. 前言学习 SPI 外设驱动L
    发表于 11-21 17:21 62次下载
    STM32单片机基础17——使用硬件SPI<b class='flag-5'>驱动</b>TFT-LCD(<b class='flag-5'>ST7789</b>)

    【STM32Cube_17】使用硬件SPI驱动TFT-LCD(ST7789

    本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件SPI外设与ST7789通信,驱动16bit TFT-LCD 屏幕
    发表于 12-05 19:36 92次下载
    【STM32Cube_17】使用硬件SPI<b class='flag-5'>驱动</b>TFT-LCD(<b class='flag-5'>ST7789</b>)

    STM32:FSMC驱动TFTLCD(ST7789)

    最近项目使用STM32F407驱动tft彩屏,屏幕的内部驱动芯片为ST7789V,这个IC网上资料不多。废话不说,直接上完整驱动代码。1.代
    发表于 12-27 18:58 134次下载
    STM32:FSMC<b class='flag-5'>驱动</b>TFTLCD(<b class='flag-5'>ST7789</b>)

    使用Visuino程序将SSD1331 OLED和ST7789显示器连接到Arduino

    电子发烧友网站提供《使用Visuino程序将SSD1331 OLED和ST7789显示器连接到Arduino.zip》资料免费下载
    发表于 11-02 15:02 1次下载
    使用Visuino程序将SSD1331 OLED和<b class='flag-5'>ST7789</b>显示器连接到Arduino

    让我们为Arduino和ST7789显示器设计一个盾牌

    电子发烧友网站提供《让我们为Arduino和ST7789显示器设计一个盾牌.zip》资料免费下载
    发表于 06-27 14:30 5次下载
    让我们为Arduino和<b class='flag-5'>ST7789</b>显示器设计一个盾牌

    ST7789屏幕初始化的步骤

    st7789屏幕构建系统和配置 驱屏就是初始化 DC转换和cs
    的头像 发表于 10-16 09:27 2552次阅读

    【XR806开发板试用】移植st7789屏幕驱动

    如果提示 Username for : 请输入 全志在线开发者论坛 的用户名和密码。(注:需要全志在线开发者论坛LV2等级以上用户才有权限拉取 SDK,随便注册个账户,灌灌水就到了)
    的头像 发表于 10-16 11:01 361次阅读
    【XR806开发板试用】<b class='flag-5'>移植</b><b class='flag-5'>st7789</b><b class='flag-5'>屏幕</b><b class='flag-5'>驱动</b>