99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

淺談全志R128點(diǎn)屏SPI LCD顏色的相關(guān)配置

冬至子 ? 來源:丨budboool ? 作者:丨budboool ? 2023-12-06 16:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

SPI LCD 顏色相關(guān)問題

首先,得先確定顯示屏使用的是SPI接口,還是DBI接口,不同的接口,輸入數(shù)據(jù)的解析方式是不一樣的。

DBI接口的全稱是 Display Bus Serial Interface ,在顯示屏數(shù)據(jù)手冊(cè)中,一般會(huì)說這是SPI接口,所以有人會(huì)誤認(rèn)為SPI屏可以使用 normal spi 去直接驅(qū)動(dòng)。

閱讀lcd_dbi_if部分的介紹可以知道,在3線模式時(shí),發(fā)送命令前有1位A0用于指示當(dāng)前發(fā)送的是數(shù)據(jù),還是命令。

而命令后面接著的數(shù)據(jù)就沒有這個(gè)A0位了,代表SPI需要在9位和8位之間來回切換,而在讀數(shù)據(jù)時(shí),更是需要延時(shí) dummy clock 才能讀數(shù)據(jù),normal spi 都很難,甚至無法實(shí)現(xiàn)。所以 normal spi 只能模擬4 線的DBI的寫操作。

對(duì)于R128這類支持DBI接口的CPU,可以選擇不去了解SPI。如果需要用到SPI去驅(qū)動(dòng)顯示屏,必須把顯示屏設(shè)置成小端。

RGB565和RGB666

SPI顯示屏一般支持RGB444,RGB565和RGB666,RGB444使用的比較少,所以只討論RGB565和RGB666.

RGB565代表一個(gè)點(diǎn)的顏色由2字節(jié)組成,也就是R(紅色)用5位表示,G(綠色)用6位表示,B(藍(lán)色)用5位表示,如下圖所示:

image-20231016100553340

RGB666一個(gè)點(diǎn)的顏色由3字節(jié)組成,每個(gè)字節(jié)代表一個(gè)顏色,其中每個(gè)字節(jié)的低2位會(huì)無視,如下圖所示:

image-20231016100620890

SPI 接口

因?yàn)镾PI接口的通訊效率不高,所以建議使用RGB565的顯示,以 jlt35031c 顯示屏為例,他的顯示驅(qū)動(dòng)芯片ST7789v,設(shè)置顯示格式的方式是往 3a 寄存器寫入0x55(RGB565)或者 0x66(RGB666),在 R128SDK 中,已經(jīng)把 jlt35031c 的通訊格式寫死為 0x55lcd_pixel_fmt配置選項(xiàng)無效:

sunxi_lcd_cmd_write(sel, 0x3a);
sunxi_lcd_para_write(sel, 0x55);

在例程中,輸入的數(shù)據(jù)是 0xff,0x00,0xff,0x00,對(duì)于SPI接口,是按字節(jié)發(fā)送。實(shí)際上,例程只需要每次發(fā)送2字節(jié)即可,因?yàn)榍昂蟀l(fā)送的都是相同的ff 00,所以沒有看出問題。

根據(jù)對(duì) 565 的數(shù)據(jù)解析,我們拆分 ff 00 就可以得到紅色分量是 0b11111,也就是 31,綠色是0b111000,也就是 56,,藍(lán)色是 0.我們等效轉(zhuǎn)換成 RGB888,有:

R = 31/31*255 = 255
G = 56/63*255 = 226

在調(diào)色板輸入對(duì)應(yīng)顏色,就可以得到黃色

image-20231016100913213

因?yàn)?DBI 通訊效率較高,所以可以使用 RGB565 或者 RGB666,使用 DBI 接口,也就是 lcd_if 設(shè)置為1時(shí),驅(qū)動(dòng)會(huì)根據(jù) lcd_pixel_fmt 配置寄存器,以 SDK 中的 kld2844b.c 為例,這顯示屏的顯示驅(qū)動(dòng)也是 ST7789,但是不同的屏幕,廠家封裝時(shí)已經(jīng)限制了通訊方式,所以即使是能使用 DBI 接口的驅(qū)動(dòng)芯片的屏幕,或許也用不了DBI。

sunxi_lcd_cmd_write(sel, 0x3A); /* Interface Pixel Format */
/* 55----RGB565;66---RGB666 */
if (info[sel].lcd_pixel_fmt == LCDFB_FORMAT_RGB_565 ||
    info[sel].lcd_pixel_fmt == LCDFB_FORMAT_BGR_565) {
    sunxi_lcd_para_write(sel, 0x55);
    if (info[sel].lcd_pixel_fmt == LCDFB_FORMAT_RGB_565)
        rotate &= 0xf7;
    else
        rotate |= 0x08;
} else if (info[sel].lcd_pixel_fmt < LCDFB_FORMAT_RGB_888) {
    sunxi_lcd_para_write(sel, 0x66);
    if (info[sel].lcd_pixel_fmt == LCDFB_FORMAT_BGRA_8888 ||
        info[sel].lcd_pixel_fmt == LCDFB_FORMAT_BGRX_8888 ||
        info[sel].lcd_pixel_fmt == LCDFB_FORMAT_ABGR_8888 ||
        info[sel].lcd_pixel_fmt == LCDFB_FORMAT_XBGR_8888) {
        rotate |= 0x08;
    }
} else {
    sunxi_lcd_para_write(sel, 0x66);
}

對(duì)于 DBI 格式,不再是以字節(jié)的形式去解析,而是以字的方式去解析,為了統(tǒng)一,軟件已經(jīng)規(guī)定了,RGB565 格式時(shí),字大小是2字節(jié),也就是16位,而 RGB666 格式時(shí),字大小是4字節(jié),也就是32位。

對(duì)于 RGB565 格式,同樣是設(shè)置為 0xff,0x00。因?yàn)槠聊皇谴蠖?,而芯片存?chǔ)方式是小端,所以芯片的 DBI 模塊,會(huì)自動(dòng)把數(shù)據(jù)從新排列,也就是實(shí)際上 DBI 發(fā)送數(shù)據(jù)時(shí),會(huì)先發(fā)送0x00,再發(fā)送0xff,也就是紅色分量為0,綠色分量為 0b000111,也就是7,藍(lán)色分量是 0x11111,也就是31,我們同樣轉(zhuǎn)換成RGB888

G = 7/63*255 = 28
B= 31/31*255 = 255

在調(diào)色板上輸入,可以得到藍(lán)色。

image-20231016101233907

如果是 RGB666,雖然占用的是3個(gè)字節(jié),但是沒有CPU是3字節(jié)對(duì)齊的,所以需要一次性輸入4字節(jié),然后 DBI 硬件模塊,會(huì)自動(dòng)舍棄1個(gè)字節(jié),軟件同意舍棄了最后一個(gè)字節(jié)。

依舊以例程為例,例程輸入了 0xff,0x00,0xff,0x00,為了方便說明,標(biāo)準(zhǔn)為 0xff(1),0x00(1),0xff(2),0x00(2),其中 0x00(2)會(huì)被舍棄掉,然后發(fā)送順序是0xff(2),0x00(1),0xff(1),也就是 0xff(2) 是紅色分量,0xff(1) 是藍(lán)色分量,混合可以得到紫色。

image-20231016101308346

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

    關(guān)注

    31

    文章

    5432

    瀏覽量

    124048
  • RGB
    RGB
    +關(guān)注

    關(guān)注

    4

    文章

    807

    瀏覽量

    59789
  • LCD屏
    +關(guān)注

    關(guān)注

    0

    文章

    126

    瀏覽量

    15981
  • SPI接口
    +關(guān)注

    關(guān)注

    0

    文章

    263

    瀏覽量

    35429
  • 驅(qū)動(dòng)芯片
    +關(guān)注

    關(guān)注

    13

    文章

    1403

    瀏覽量

    56285
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    R128 BLE最高吞吐量測(cè)試正確配置測(cè)試方法

    R128使用前我們需要了解BLE的最高吞吐量,以方便評(píng)估相關(guān)功能的開發(fā)。
    的頭像 發(fā)表于 10-27 17:17 ?1826次閱讀
    <b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>R128</b> BLE最高吞吐量測(cè)試正確<b class='flag-5'>配置</b>測(cè)試方法

    R128應(yīng)用開發(fā)案例—適配SPI驅(qū)動(dòng)ST7789V2.4寸LCD

    R128 平臺(tái)提供了 SPI DBI 的 SPI TFT 接口,具有如下特點(diǎn)
    的頭像 發(fā)表于 11-02 16:44 ?1556次閱讀
    <b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>R128</b>應(yīng)用開發(fā)案例—適配<b class='flag-5'>SPI</b>驅(qū)動(dòng)ST7789V2.4寸<b class='flag-5'>LCD</b>

    R128內(nèi)存泄漏調(diào)試案例分享

    硬件:R128 軟件:FreeRTOS + rtplayer\_test(Cedarx)+ AudioSystem
    的頭像 發(fā)表于 11-20 17:27 ?1377次閱讀
    <b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>R128</b>內(nèi)存泄漏調(diào)試案例分享

    R128點(diǎn)踩坑筆記

    本文所整理的R128點(diǎn)踩坑筆記均是在參考以下應(yīng)用開發(fā)案例進(jìn)行屏幕適配時(shí)遇到的實(shí)際開發(fā)問題,涵蓋了屏幕花屏、屏幕白屏、LVGL顯示顏色錯(cuò)誤等常見問題的解決方法。
    的頭像 發(fā)表于 12-03 10:17 ?1845次閱讀
    <b class='flag-5'>R128</b><b class='flag-5'>點(diǎn)</b><b class='flag-5'>屏</b>踩坑筆記

    縱享絲滑!R128+LVGL驅(qū)動(dòng)多尺寸RGB LCD屏幕流暢運(yùn)行

    新晉點(diǎn)神器,R128!各種屏幕都能點(diǎn)!高刷、大、寬色域......通常來講,顯示器的配置越高
    發(fā)表于 12-22 09:52

    R128硬件設(shè)計(jì)指南①

    。添加按鍵時(shí)保證按鍵按下后,ADC網(wǎng)絡(luò)電壓范圍為 0~1.08V,最小間隔大于 200mV。 LCD電路接口R128 支持一路 RGB接口和一路 SPI
    發(fā)表于 01-04 09:23

    R128 SDK架構(gòu)與目錄結(jié)構(gòu)

    R128 S2 是提供的一款 M33(ARM)+C906(RISCV-64)+HIFI5(Xtensa) 三核異構(gòu) SoC,同時(shí)芯片內(nèi)部 SIP 有 1M SRAM、8M LSPSRAM、8M
    發(fā)表于 01-05 10:05

    R128 Devkit開發(fā)板原理圖模塊介紹及使用說明

    :CH341SER.EXE 購(gòu)買鏈接 百問科技淘寶店 - R128 DevKit 原理圖模塊介紹R128 模組R128 模組使用 SMT
    發(fā)表于 01-17 09:45

    使用R128將LVGL運(yùn)行在SPI TFT GUI上

    LVGL 與 SPI TFT GUI 本次使用的是 Dshan_Display Module,如下圖: 引腳配置如下: R128 Devkit TFT 模塊 PA12 CS PA13 SCK
    發(fā)表于 10-23 13:56

    R128應(yīng)用開發(fā)案例——SPI 驅(qū)動(dòng) TFT LCD

    SPI 驅(qū)動(dòng) TFT LCD R128 平臺(tái)提供了 SPI DBI 的 SPI TFT 接口
    發(fā)表于 10-23 14:29

    R128平臺(tái)SPI與DBI點(diǎn)性能大對(duì)比

    SPI 與 DBI 性能對(duì)比 R128 平臺(tái)的 SPI 接口參數(shù)如下 全雙工同步串行接口 Master/Slave模式可配置 支持最大96MHz時(shí)鐘頻率 支持
    發(fā)表于 11-13 15:58

    R128點(diǎn)SPI LCD顏色相關(guān)問題

    SPI LCD 顏色相關(guān)問題 首先,得先確定顯示使用的是SPI接口,還是DBI接口,不同的接口,輸入數(shù)據(jù)的解析方式是不一樣的。 DBI接口
    發(fā)表于 12-06 09:50

    R128使用RGB LCD移植方法教程

    r128-devkit-100ask-rgb 方案,倉(cāng)庫(kù)地址: Gitee: https://gitee.com/weidongshan/100ask_r128_demos/tree/master/other/RGB_LCD
    發(fā)表于 12-18 17:03

    R128適配ST7789v LCD

    R128 平臺(tái)提供了 SPI DBI 的 SPI TFT 接口,具有如下特點(diǎn)
    的頭像 發(fā)表于 10-23 11:26 ?1487次閱讀
    <b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>R128</b>適配ST7789v <b class='flag-5'>LCD</b>

    R128啟用USB ADB以及無線ADB配置方法

    首先在FreeRTOS的環(huán)境下,選擇r128\_c906\_pro
    的頭像 發(fā)表于 11-01 11:43 ?1651次閱讀
    <b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>R128</b>啟用USB ADB以及無線ADB<b class='flag-5'>配置</b>方法