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

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

3天内不再提示

XR806开发板进行ST7789LCD屏幕测试步骤

全志在线 来源:全志在线 2023-12-22 17:31 次阅读

XR806开发板ST7789LCD屏幕测试

1

屏幕硬件

连接

本文使用的LCD屏幕的原理图如下,可以确定LCD屏幕的控制引脚接线。

adb79dba-a0ac-11ee-8b88-92fbcf53809c.png

XR806与LCD屏幕的控制引脚分布如下

adc6a896-a0ac-11ee-8b88-92fbcf53809c.png

实际的连接效果如图所示

add0a72e-a0ac-11ee-8b88-92fbcf53809c.jpg

2

驱动编写

ST7789的驱动使用中景园的LCD驱动库,驱动文件包括:

lcd.c

lcd.h

lcd_init.c

lcd_init.h

lcd_font.h

在XR806的示例程序中GPIO工程的基础上进行移植。在gpio示例文件夹中添加lcd的驱动代码。

ae11e810-a0ac-11ee-8b88-92fbcf53809c.png

移植时要实现对LCD引脚的控制,在lcd_init.h中添加以下代码

#include "driver/chip/hal_gpio.h"
#include "kernel/os/os.h"


#define LCD_SCLK_Clr() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_7, GPIO_PIN_LOW)
#define LCD_SCLK_Set() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_7, GPIO_PIN_HIGH)


#define LCD_MOSI_Clr() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_4, GPIO_PIN_LOW)
#define LCD_MOSI_Set() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_4, GPIO_PIN_HIGH)


#define LCD_RES_Clr() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_5, GPIO_PIN_LOW)
#define LCD_RES_Set() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_5, GPIO_PIN_HIGH)


#define LCD_DC_Clr() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_3, GPIO_PIN_LOW)
#define LCD_DC_Set() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_3, GPIO_PIN_HIGH)


#define LCD_CS_Clr() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_6, GPIO_PIN_LOW)
#define LCD_CS_Set() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_6, GPIO_PIN_HIGH)
//硬件上没有给出控制接口,这里不做定义
#define LCD_BLK_Clr()
#define LCD_BLK_Set()

在lcd_init.c中添加引脚的初始化函数,并替换延时函数为OS_MSleep,相关的代码如下:

#include "lcd_init.h"


void LCD_GPIO_Init(void)
{
 GPIO_InitParam param;
 param.driving = GPIO_DRIVING_LEVEL_1;
 param.mode = GPIOx_Pn_F1_OUTPUT;
 param.pull = GPIO_PULL_NONE;
 HAL_GPIO_Init(GPIO_PORT_B, GPIO_PIN_3, ¶m);
 HAL_GPIO_Init(GPIO_PORT_B, GPIO_PIN_4, ¶m);
 HAL_GPIO_Init(GPIO_PORT_B, GPIO_PIN_5, ¶m);
 HAL_GPIO_Init(GPIO_PORT_B, GPIO_PIN_6, ¶m);
 HAL_GPIO_Init(GPIO_PORT_B, GPIO_PIN_7, ¶m);
}


void LCD_Init(void)
{
 LCD_GPIO_Init();


 LCD_RES_Clr(); 
 OS_MSleep(100);//替换延时函数
 LCD_RES_Set();
 OS_MSleep(100);
  
  //以下代码忽略
}

在main.c中添加以下代码

int main(void)
{


 LCD_Init();


 OS_MSleep(100);


 LCD_Fill(0, 0, LCD_W, LCD_H, RED);
 // LCD_ShowString(4, 0, "XR806 LCD Test", RED, CYAN, 16, 0);
 LCD_DrawRectangle(0, 0, LCD_W - 1, LCD_H - 1, MAGENTA);
 LCD_DrawRectangle(1, 1, LCD_W - 2, LCD_H - 2, MAGENTA);
 while (1)
 {
  OS_MSleep(1000);
  LCD_Fill(0, 0, LCD_W, LCD_H, BLUE);
  OS_MSleep(1000);
  LCD_Fill(0, 0, LCD_W, LCD_H, GREEN);
  OS_MSleep(1000);
  LCD_Fill(0, 0, LCD_W, LCD_H, YELLOW);
  OS_MSleep(1000);
  LCD_Fill(0, 0, LCD_W, LCD_H, LIGHTGREEN);
  printf("XR806 LCD Test
");
 }


 return 0;
}

3

屏幕驱动

效果

编译下载后,可以看到屏幕的颜色切换以及串口的数据输出

ae4744b0-a0ac-11ee-8b88-92fbcf53809c.png

ae5b4366-a0ac-11ee-8b88-92fbcf53809c.jpg








审核编辑:刘清

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

    关注

    0

    文章

    118

    浏览量

    15119
  • GPIO
    +关注

    关注

    16

    文章

    1135

    浏览量

    50580
  • 串口输出
    +关注

    关注

    0

    文章

    16

    浏览量

    7383
  • xr806
    +关注

    关注

    0

    文章

    14

    浏览量

    1251

原文标题:XR806开发板进行ST7789LCD屏幕测试

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

收藏 人收藏

    评论

    相关推荐

    如何使用XR806开发板来设计一个粮食霉变检测系统?

    XR806开发板具有强大的数据处理和传输能力,广泛应用于物联网和嵌入式系统开发
    的头像 发表于 01-05 17:30 477次阅读
    如何使用<b class='flag-5'>XR806</b><b class='flag-5'>开发板</b>来设计一个粮食霉变检测系统?

    XR806芯片、XR806开源鸿蒙开发板简介

    。可广泛满足 智能家居、智慧楼宇、工业互联、儿童玩具、电子竞赛、极客DIY 等领域的无线连接需求。芯片框图芯片参数XR806开源鸿蒙开发板介绍XR806开发板是基于
    发表于 11-15 17:08

    XR806芯片、XR806开源鸿蒙开发板简介

    。可广泛满足 智能家居、智慧楼宇、工业互联、儿童玩具、电子竞赛、极客DIY 等领域的无线连接需求。芯片框图芯片参数XR806开源鸿蒙开发板介绍XR806开发板是基于
    发表于 11-15 18:32

    请问一下XR806开发板是如何与腾讯云平台进行对接的

    请问一下XR806开发板是如何与腾讯云平台进行对接的?有哪些操作步骤
    发表于 12-28 07:11

    有哪位大神可以分享一下XR806开发板/模组的资料呢

    XR806开发板/模组的硬件包含哪几个部分?XR806开发板/模组的硬件该怎样去设计呢?
    发表于 12-28 06:51

    如何利用XR806开发板对TCP通信进行测试

    如何利用XR806开发板对TCP通信进行测试呢?其测试代码该怎样去是实现呢?
    发表于 12-28 07:48

    XR806开发板是如何连上华为云实现物联网的

    XR806开发板是如何连上华为云实现物联网的?有哪些步骤呢?
    发表于 12-28 06:20

    如何对XR806开发板的环境进行配置呢

    如何对XR806开发板的环境进行配置呢?有哪些配置步骤
    发表于 12-28 07:51

    请问大佬XR806鸿蒙开发板怎么样?

    请问大佬XR806鸿蒙开发板怎么样?
    发表于 12-29 07:06

    用deepin进行xr806开发板开发

    为了防止后面一些玄学问题,就放弃在deepin上进行xr806开发了,还是老老实实的在ubuntu上吧.相同的操作,在ubuntu20是,就没有问题。由于下载源码时,正好原官方仓库不可用,就使用了临时
    发表于 11-17 10:50

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

    \"); st7789_set_orientation(DISPLAY_ORIENTATION); 硬件连接如图所示 屏幕 开发板 BLK B14 CS B06 DC B03 RES VCC
    发表于 11-10 10:21

    全志XR806开发板适配ST7789LCD屏幕测试

    本次使用XR806实现ST7789屏幕的驱动。 硬件连接 本文使用的LCD屏幕的原理图如下,可以确定L
    发表于 12-13 14:03

    XR806开发板试用】FreeRTOS创建任务测试

    这篇来学习下,XR806开发板在FreeRTOS系统下创建两个任务测试,由于没有找到学习的文档,试着参考例程来测试
    的头像 发表于 10-10 11:47 366次阅读
    【<b class='flag-5'>XR806</b><b class='flag-5'>开发板</b>试用】FreeRTOS创建任务<b class='flag-5'>测试</b>

    全志XR806底板位号图

    全志XR806底板位号图
    发表于 10-19 15:11 0次下载

    全志XR806开发板原理图

    全志XR806开发板原理图
    发表于 10-19 15:11 9次下载