XR806开发板ST7789LCD屏幕测试
1
屏幕硬件
连接
本文使用的LCD屏幕的原理图如下,可以确定LCD屏幕的控制引脚接线。

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

实际的连接效果如图所示

2
驱动编写
ST7789的驱动使用中景园的LCD驱动库,驱动文件包括:
lcd.c
lcd.h
lcd_init.c
lcd_init.h
lcd_font.h
在XR806的示例程序中GPIO工程的基础上进行移植。在gpio示例文件夹中添加lcd的驱动代码。

移植时要实现对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
屏幕驱动
效果
编译下载后,可以看到屏幕的颜色切换以及串口的数据输出


审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
LCD屏
+关注
关注
0文章
132浏览量
16622 -
GPIO
+关注
关注
16文章
1333浏览量
56446 -
串口输出
+关注
关注
0文章
18浏览量
7850 -
xr806
+关注
关注
0文章
14浏览量
1608
原文标题:XR806开发板进行ST7789LCD屏幕测试
文章出处:【微信号:gh_79acfa3aa3e3,微信公众号:全志在线】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
基于全志XR806开发板的家用环境监测传感器设计
本文来自全志XR806开发板评测活动文章,作者使用XR806开发板制作一个简单的家用环境监测传感器,可以获取当前的温度、湿度、气压、海拔这四个参数,同时能够通过外部的
XR806芯片、XR806开源鸿蒙开发板简介
。可广泛满足 智能家居、智慧楼宇、工业互联、儿童玩具、电子竞赛、极客DIY 等领域的无线连接需求。芯片框图芯片参数XR806开源鸿蒙开发板介绍XR806开发板是基于
发表于 11-15 17:08
XR806芯片、XR806开源鸿蒙开发板简介
。可广泛满足 智能家居、智慧楼宇、工业互联、儿童玩具、电子竞赛、极客DIY 等领域的无线连接需求。芯片框图芯片参数XR806开源鸿蒙开发板介绍XR806开发板是基于
发表于 11-15 18:32
在全志XR806上移植st7789屏幕驱动
\");
st7789_set_orientation(DISPLAY_ORIENTATION);
硬件连接如图所示
屏幕
开发板
BLK
B14
CS
B06
DC
B03
RES
VCC
发表于 11-10 10:21
简述XR806开发板与STAR-MC1处理器
全志XR806开发板基于XR806芯片设计,搭载了安谋中国的星辰系列STAR-MC1处理器。该开发板体积较小,具备WiFi、低功耗蓝牙技术等功能,技术集成度高,成本低,支持鸿蒙系统,能
【XR806开发板试用】留言板功能开发
XR806开源鸿蒙开发板是一款基于XR806芯片设计,高度集成WiFi/BLE/常用外设,可供开发者进行方案评估、DIY或小规模产品研发,可
XR806开发板进行ST7789LCD屏幕测试步骤
评论