0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

移植st7789屏幕驅(qū)動(dòng)教程

全志在線 ? 來(lái)源:全志在線開(kāi)發(fā)者論壇 ? 2023-10-21 16:35 ? 次閱讀

移植st7789屏幕驅(qū)動(dòng)

真的不要太簡(jiǎn)單~

ST7789是一款高度集成的彩色TFT液晶顯示屏控制器芯片,通常用于驅(qū)動(dòng)小到中等尺寸的液晶屏。例如淘寶上常見(jiàn)的1.4寸、1.47寸、1.69寸屏幕等等。

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

為什么RES引腳直接接的VCC,因?yàn)椴恢谰唧w是哪一塊出了問(wèn)題。RES引腳接到推挽輸出的IO引腳后,屏幕也能點(diǎn)亮,但是亮度莫名其妙很低。手上幾個(gè)屏都測(cè)試了一下,都這樣。

1st7789驅(qū)動(dòng)

移植

現(xiàn)在就開(kāi)始吧,首先新建st7789.c和st7789.h文件。然后創(chuàng)建用于初始化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},

這個(gè)序列表使用的是這樣的數(shù)據(jù)結(jié)構(gòu):

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

在創(chuàng)建列表后編寫(xiě)初始化函數(shù),這里把gpio和spi的初始化也都放在里面了。

然后就是編寫(xiě)一下寫(xiě)命令和寫(xiě)數(shù)據(jù)的函數(shù),寫(xiě)命令時(shí)需要設(shè)置一下DC引腳,然后寫(xiě)完立即將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);
}

編寫(xiě)屏幕翻轉(zhuǎn)配置函數(shù):

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);

最后再寫(xiě)一下寫(xiě)屏函數(shù)即可,這里為了快速刷屏,設(shè)置了比較大的緩存區(qū)。目前還不會(huì)使用XR806的DMA,學(xué)會(huì)了可以減少緩存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刷屏函數(shù)

添加

還需要添加一個(gè)刷屏函數(shù)作為測(cè)試,現(xiàn)在補(bǔ)一下。


由于1.69寸屏幕不需要設(shè)置屏幕窗口偏移量,就直接按滿屏來(lái)刷了。

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

然后在main.c里調(diào)用屏幕初始化和刷屏函數(shù)就可以啦。

3刷屏效果

展示

經(jīng)過(guò)測(cè)試,手上的1.47寸屏幕和1.69寸st7789屏幕都可以正常驅(qū)動(dòng)。就是偏移值和屏幕分辨率設(shè)置需要再優(yōu)化一下代碼。

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

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    114

    文章

    16821

    瀏覽量

    182135
  • 液晶屏
    +關(guān)注

    關(guān)注

    18

    文章

    723

    瀏覽量

    43527
  • 屏幕
    +關(guān)注

    關(guān)注

    7

    文章

    1206

    瀏覽量

    56252
  • 移植
    +關(guān)注

    關(guān)注

    1

    文章

    391

    瀏覽量

    28500
  • TFT
    TFT
    +關(guān)注

    關(guān)注

    10

    文章

    387

    瀏覽量

    111979

原文標(biāo)題:移植手表屏驅(qū)動(dòng)步驟方法詳解

文章出處:【微信號(hào):gh_79acfa3aa3e3,微信公眾號(hào):全志在線】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    st7789軟件包不能添加是怎么回事?

    1、在UI界面上可以看到st7789,但在packages中沒(méi)有。 2、沒(méi)有看到對(duì)應(yīng)的下載信息。 3、在對(duì)應(yīng)github中可以正常下載。 4、RTT版本為5.1.0. 5、類似的ili9341的添加是正常的。
    發(fā)表于 03-20 07:51

    如何使用STM32CubeMX配置STM32L431RCT6的硬件SPI外設(shè)與ST7789通信

    本篇詳細(xì)的記錄了如何使用STM32CubeMX配置STM32L431RCT6的硬件SPI外設(shè)與ST7789通信,驅(qū)動(dòng)16bit TFT-LCD 屏幕。0. 前言學(xué)習(xí) SPI 外設(shè)驅(qū)動(dòng)L
    發(fā)表于 11-30 06:36

    STM32 SPI如何驅(qū)動(dòng)ST7789 LCD ISP TFT液晶屏幕

    STM32 SPI如何驅(qū)動(dòng)ST7789 LCD ISP TFT液晶屏幕?
    發(fā)表于 12-17 06:39

    請(qǐng)問(wèn)如何用D1s把st7789 i80點(diǎn)亮?

    如何用D1s把st7789 i80點(diǎn)亮?
    發(fā)表于 12-28 07:21

    實(shí)現(xiàn)ST7789圖像顯示的方法

    ESP32-CAM之ST7789圖像顯示最近筆者在學(xué)習(xí)使用安信可的ESP32-CAM開(kāi)發(fā)板,該開(kāi)發(fā)板自帶一個(gè)OV2640攝像頭。官方提供的例程可以將攝像頭視頻通過(guò)WIFI傳輸?shù)骄W(wǎng)頁(yè)顯示,而筆者手里
    發(fā)表于 02-18 07:09

    請(qǐng)問(wèn)CH579可以使用LVGL庫(kù)嗎?可以通過(guò)SPI驅(qū)動(dòng)ST7789屏嗎?

    請(qǐng)問(wèn)CH579可以使用LVGL庫(kù)嗎?可以通過(guò)SPI驅(qū)動(dòng)ST7789屏嗎? CH579可以驅(qū)動(dòng)ST7789屏嗎?
    發(fā)表于 08-10 07:01

    求助,請(qǐng)問(wèn)CH579硬件SPI可以驅(qū)動(dòng)ST7789屏嗎?

    請(qǐng)問(wèn)CH579硬件SPI可以驅(qū)動(dòng)ST7789屏嗎?
    發(fā)表于 09-06 06:12

    在全志XR806上移植st7789屏幕驅(qū)動(dòng)

    驅(qū)動(dòng) ST7789是一款高度集成的彩色TFT液晶顯示屏控制器芯片,通常用于驅(qū)動(dòng)小到中等尺寸的液晶屏。例如淘寶上常見(jiàn)的1.4寸、1.47寸、1.69寸屏幕等等。 現(xiàn)在就開(kāi)始吧,首先新建
    發(fā)表于 11-10 10:21

    STM32單片機(jī)基礎(chǔ)17——使用硬件SPI驅(qū)動(dòng)TFT-LCD(ST7789

    本篇詳細(xì)的記錄了如何使用STM32CubeMX配置STM32L431RCT6的硬件SPI外設(shè)與ST7789通信,驅(qū)動(dòng)16bit TFT-LCD 屏幕。0. 前言學(xué)習(xí) SPI 外設(shè)驅(qū)動(dòng)L
    發(fā)表于 11-21 17:21 ?64次下載
    STM32單片機(jī)基礎(chǔ)17——使用硬件SPI<b class='flag-5'>驅(qū)動(dòng)</b>TFT-LCD(<b class='flag-5'>ST7789</b>)

    【STM32Cube_17】使用硬件SPI驅(qū)動(dòng)TFT-LCD(ST7789

    本篇詳細(xì)的記錄了如何使用STM32CubeMX配置STM32L431RCT6的硬件SPI外設(shè)與ST7789通信,驅(qū)動(dòng)16bit TFT-LCD 屏幕
    發(fā)表于 12-05 19:36 ?93次下載
    【STM32Cube_17】使用硬件SPI<b class='flag-5'>驅(qū)動(dòng)</b>TFT-LCD(<b class='flag-5'>ST7789</b>)

    STM32:FSMC驅(qū)動(dòng)TFTLCD(ST7789)

    最近項(xiàng)目使用STM32F407驅(qū)動(dòng)tft彩屏,屏幕的內(nèi)部驅(qū)動(dòng)芯片為ST7789V,這個(gè)IC網(wǎng)上資料不多。廢話不說(shuō),直接上完整驅(qū)動(dòng)代碼。1.代
    發(fā)表于 12-27 18:58 ?147次下載
    STM32:FSMC<b class='flag-5'>驅(qū)動(dòng)</b>TFTLCD(<b class='flag-5'>ST7789</b>)

    使用Visuino程序?qū)SD1331 OLED和ST7789顯示器連接到Arduino

    電子發(fā)燒友網(wǎng)站提供《使用Visuino程序?qū)SD1331 OLED和ST7789顯示器連接到Arduino.zip》資料免費(fèi)下載
    發(fā)表于 11-02 15:02 ?1次下載
    使用Visuino程序?qū)SD1331 OLED和<b class='flag-5'>ST7789</b>顯示器連接到Arduino

    讓我們?yōu)锳rduino和ST7789顯示器設(shè)計(jì)一個(gè)盾牌

    電子發(fā)燒友網(wǎng)站提供《讓我們?yōu)锳rduino和ST7789顯示器設(shè)計(jì)一個(gè)盾牌.zip》資料免費(fèi)下載
    發(fā)表于 06-27 14:30 ?5次下載
    讓我們?yōu)锳rduino和<b class='flag-5'>ST7789</b>顯示器設(shè)計(jì)一個(gè)盾牌

    ST7789屏幕初始化的步驟

    st7789屏幕構(gòu)建系統(tǒng)和配置 驅(qū)屏就是初始化 DC轉(zhuǎn)換和cs
    的頭像 發(fā)表于 10-16 09:27 ?7342次閱讀

    【XR806開(kāi)發(fā)板試用】移植st7789屏幕驅(qū)動(dòng)

    如果提示 Username for : 請(qǐng)輸入 全志在線開(kāi)發(fā)者論壇 的用戶名和密碼。(注:需要全志在線開(kāi)發(fā)者論壇LV2等級(jí)以上用戶才有權(quán)限拉取 SDK,隨便注冊(cè)個(gè)賬戶,灌灌水就到了)
    的頭像 發(fā)表于 10-16 11:01 ?1073次閱讀
    【XR806開(kāi)發(fā)板試用】<b class='flag-5'>移植</b><b class='flag-5'>st7789</b><b class='flag-5'>屏幕</b><b class='flag-5'>驅(qū)動(dòng)</b>

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品