XR806開發(fā)板ST7789LCD屏幕測(cè)試
1
屏幕硬件
連接
本文使用的LCD屏幕的原理圖如下,可以確定LCD屏幕的控制引腳接線。
XR806與LCD屏幕的控制引腳分布如下
實(shí)際的連接效果如圖所示
2
驅(qū)動(dòng)編寫
ST7789的驅(qū)動(dòng)使用中景園的LCD驅(qū)動(dòng)庫(kù),驅(qū)動(dòng)文件包括:
lcd.c
lcd.h
lcd_init.c
lcd_init.h
lcd_font.h
在XR806的示例程序中GPIO工程的基礎(chǔ)上進(jìn)行移植。在gpio示例文件夾中添加lcd的驅(qū)動(dòng)代碼。
移植時(shí)要實(shí)現(xiàn)對(duì)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中添加引腳的初始化函數(shù),并替換延時(shí)函數(shù)為OS_MSleep,相關(guān)的代碼如下:
#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);//替換延時(shí)函數(shù) 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
屏幕驅(qū)動(dòng)
效果
編譯下載后,可以看到屏幕的顏色切換以及串口的數(shù)據(jù)輸出
審核編輯:劉清
-
LCD屏
+關(guān)注
關(guān)注
0文章
125瀏覽量
15815 -
GPIO
+關(guān)注
關(guān)注
16文章
1238瀏覽量
53309 -
串口輸出
+關(guān)注
關(guān)注
0文章
16瀏覽量
7605 -
xr806
+關(guān)注
關(guān)注
0文章
14瀏覽量
1417
原文標(biāo)題:XR806開發(fā)板進(jìn)行ST7789LCD屏幕測(cè)試
文章出處:【微信號(hào):gh_79acfa3aa3e3,微信公眾號(hào):全志在線】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
【XR806開發(fā)板適用】基于多源信息融合的糧食霉變檢測(cè)系統(tǒng)設(shè)計(jì)

基于全志XR806開發(fā)板的家用環(huán)境監(jiān)測(cè)傳感器設(shè)計(jì)

如何使用XR806開發(fā)板來(lái)設(shè)計(jì)一個(gè)糧食霉變檢測(cè)系統(tǒng)?

OpenHarmony南向嵌入式:【XR806開發(fā)板指導(dǎo)文檔】

XR806芯片、XR806開源鴻蒙開發(fā)板簡(jiǎn)介
XR806芯片、XR806開源鴻蒙開發(fā)板簡(jiǎn)介
請(qǐng)問一下XR806開發(fā)板是如何與騰訊云平臺(tái)進(jìn)行對(duì)接的
如何利用XR806開發(fā)板對(duì)TCP通信進(jìn)行測(cè)試呢
如何對(duì)XR806開發(fā)板的環(huán)境進(jìn)行配置呢
在全志XR806上移植st7789屏幕驅(qū)動(dòng)
全志XR806開發(fā)板適配ST7789LCD屏幕測(cè)試
簡(jiǎn)述XR806開發(fā)板與STAR-MC1處理器
【XR806開發(fā)板試用】留言板功能開發(fā)
【XR806開發(fā)板試用】FreeRTOS創(chuàng)建任務(wù)測(cè)試

評(píng)論