RM新时代网站-首页

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

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

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

使用FSMC接口來驅(qū)動8080接口LCD屏的問題

STM32單片機(jī) ? 來源:STM32單片機(jī) ? 作者:STM32單片機(jī) ? 2021-06-29 09:59 ? 次閱讀

前言

在一些圖形界面應(yīng)用中,系統(tǒng)架構(gòu)會時??紤]使用 FSMC接口來驅(qū)動 8080接口的 LCD屏。在 MCU渲染完成,將framebuffer發(fā)送到 LCD時,有可能會遇到存儲大小端的問題。STM32MCU都采用 ARMCortex內(nèi)核,內(nèi)存使用小端格式。而 intel 8080接口的 LCD在傳輸 RGB數(shù)據(jù)時,使用的是大端格式。MCU在傳輸 RGB數(shù)據(jù)時,字節(jié)序有可能不匹配。在圖形界面應(yīng)用中,像素格式一般會使用 RGB888或 RGB565。而在使用 FSMC接口驅(qū)動 8bit位寬的 LCD時,很可能會使用 RGB565格式。本文中會介紹兩種方法來處理8bit8080接口 RGB565格式圖像數(shù)據(jù)字節(jié)序問題。

圖像數(shù)據(jù)字節(jié)序

8bit8080 LCD在接收 RGB565數(shù)據(jù)時,會將第一個字節(jié)解析為{R4-R0,G5-G3}, 第二個字節(jié)解析為{G2-G0,B4-B0},并按這個順序接收所有數(shù)據(jù),如下圖:

a210c732-d86f-11eb-9e57-12bb97331649.png

而在 MCU內(nèi)存中,數(shù)據(jù)按小端格式存放,RGB565數(shù)據(jù)存放的字節(jié)序如下:

a26017c4-d86f-11eb-9e57-12bb97331649.png

如果不做調(diào)整直接將 RGB數(shù)據(jù)發(fā)給 LCD,MCU會先發(fā)送 Byte0,再發(fā)送 Byte 1,這樣 LCD顯示的內(nèi)容就會錯亂。對比上面兩張圖可以看出,只需將內(nèi)存中 Byte0與 Byte1字節(jié)位置對調(diào)(Byteswap),就能滿足 LCD接口的字節(jié)序要求。可以直接使用 CPU進(jìn)行 Byteswap,但這會消耗過多 CPU算力,同時也會占用更多內(nèi)存。這里我們將使用硬件進(jìn)行 Byteswap.

DMA2D 進(jìn)行Byteswap

DMA2D是 ST為圖形應(yīng)用專門設(shè)計(jì)并優(yōu)化的2D加速引擎,擁有豐富的功能。其字節(jié)序重排功能包含了Red blueswap以及 Byteswap特性。Red blueswap特性在 L4和 L4+系列 MCU都支持,而 Byteswap僅在L4+系列有支持。在 L4+系列上,通過配置 DMA2D_OPFCCR寄存器的 SB位,即可使能 Byteswap功能,在 DMA2D的outputFIFO中完成字節(jié)序調(diào)整,如下圖:

a26c2b5e-d86f-11eb-9e57-12bb97331649.png

因此在圖形界面應(yīng)用中,需要 Byteswap時,可以考慮用 DMA2D來傳輸 RGB數(shù)據(jù)給 LCD。

GPDMA 進(jìn)行Byteswap

在新推出的 U5系列芯片上,集成了 GPDMA模塊。這是新的通用DMA模塊,能在傳輸數(shù)據(jù)的同時,還有豐富的數(shù)據(jù)處理能力。在初始化GPDMA時,通過配置源和目的數(shù)據(jù)位寬為 DMA_SRC_DATAWIDTH_WORD,在數(shù)據(jù)處理中配置 DataExchange為 DMA_EXCHANGE_DEST_BYTE,如下面代碼,也能實(shí)現(xiàn)Byteswap功能。

a2754d74-d86f-11eb-9e57-12bb97331649.png

這樣,在圖形應(yīng)用中,既能使用 DMA2D加速渲染過程,也能使用 GPDMA的數(shù)據(jù)處理能力。通過 GPDMA直接向FSMC接口輸出 Byteswap后的 RGB565格式的圖形數(shù)據(jù)給LCD。

小結(jié)

在驅(qū)動 8位 8080接口 LCD時,需要注意圖像數(shù)據(jù)字節(jié)序問題。使用 RGB565格式時,可以使用 DMA2D或 GPDMA來傳輸圖像數(shù)據(jù),同時對圖像數(shù)據(jù)做 Byteswap調(diào)整,滿足LCD的字節(jié)序要求。

責(zé)任編輯:haq

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

    關(guān)注

    34

    文章

    4424

    瀏覽量

    167400
  • 驅(qū)動
    +關(guān)注

    關(guān)注

    12

    文章

    1838

    瀏覽量

    85262

原文標(biāo)題:工程師筆記 | 驅(qū)動 8 位 8080 接口 LCD 時的字節(jié)序問題

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    BTB擴(kuò)展接口LCD、Camera、UART、I2C等|詳解篇

    今天我們學(xué)習(xí)的是BTB擴(kuò)展接口LCD、Camera、UART、I2C詳解,特別分享Air201硬件BTB擴(kuò)展接口相關(guān)內(nèi)容。
    的頭像 發(fā)表于 11-30 09:39 ?286次閱讀
    BTB擴(kuò)展<b class='flag-5'>接口</b>:<b class='flag-5'>LCD</b>、Camera、UART、I2C等|詳解篇

    飛凌嵌入式-ELFBOARD-RGB LCD接口的PCB設(shè)計(jì)要點(diǎn)

    :VGA、DVI、HDMI、DP、USB-C、Type-C等,內(nèi)接顯示接口(直接接到顯示的)有:MIPI、LVDS、eDP和LCD RGB接口
    發(fā)表于 11-12 11:51

    飛凌嵌入式-ELBOARD-RGB LCD顯示接口的PCB設(shè)計(jì)要點(diǎn)

    :VGA、DVI、HDMI、DP、USB-C、Type-C等,內(nèi)接顯示接口(直接接到顯示的)有:MIPI、LVDS、eDP和LCD RGB接口
    發(fā)表于 11-12 11:49

    lvds接口需要驅(qū)動

    廣泛應(yīng)用于高速數(shù)據(jù)傳輸?shù)?b class='flag-5'>接口標(biāo)準(zhǔn),特別是在大顯示、通信設(shè)備和工業(yè)控制等領(lǐng)域。它采用低電壓差分信號傳輸數(shù)據(jù),具有低功耗、低誤碼率、低串?dāng)_和低輻射等優(yōu)點(diǎn)。LVDS接口通過一對差分信號線
    的頭像 發(fā)表于 10-06 15:06 ?839次閱讀
    lvds<b class='flag-5'>接口</b>需要<b class='flag-5'>驅(qū)動</b>嗎

    dsi接口,支持觸摸控制嗎

    DSI(Digital Serial Interface)接口是一種數(shù)字串行通信接口,主要用于LCD(液晶顯示器)等顯示設(shè)備的驅(qū)動。DSI接口
    的頭像 發(fā)表于 08-20 11:44 ?525次閱讀

    瑞薩e2studio----SPI驅(qū)動TFT-LCD

    在嵌入式領(lǐng)域,TFT-LCD是最常用的顯示解決方案之一,因?yàn)樗鼈兲峁┝素S富的顏色和高分辨率的圖像顯示能力。RA4M2作為瑞薩的微控制器系列,具備了強(qiáng)大的處理能力和多種通信接口,非常適合于驅(qū)動
    的頭像 發(fā)表于 08-07 17:46 ?1552次閱讀
    瑞薩e2studio----SPI<b class='flag-5'>驅(qū)動</b>TFT-<b class='flag-5'>LCD</b><b class='flag-5'>屏</b>

    ESP32-S3的LCD接口使用外部PSRAM做數(shù)據(jù)緩存,DMA送數(shù)最高能到多少頻率?

    外部PSRAM使用80M時鐘(能否上120M,是否穩(wěn)定?),4bit數(shù)據(jù),LCD接口使用I8080模式,16bit位寬,最高時鐘能到20M嗎? 謝謝!
    發(fā)表于 06-17 08:11

    ESP32-S3的LCD接口可以用DMA鏈表觸發(fā)發(fā)送數(shù)據(jù)嗎?

    因?yàn)槭怯脕?b class='flag-5'>驅(qū)動LED顯示,用原來的I2S那樣并行,通過鏈接自己組織數(shù)據(jù)列表,還是比較方便的,現(xiàn)在S3的I2S好像已經(jīng)不能并行發(fā)數(shù)據(jù)了,只能用LCD接口了,所以想知道
    發(fā)表于 06-17 07:25

    請問ESP32-S3如何驅(qū)動QSPI接口LCD?

    目前項(xiàng)目用ESP32-S3驅(qū)動QSPI接口LCD,驅(qū)動IC為GC9B71(規(guī)格書參考附件)。試著在ESP-IDF的范例spi_
    發(fā)表于 06-07 06:51

    stm32的fsmc總線上同時掛載LCD和SRAM和單獨(dú)設(shè)置一個FSMC總線設(shè)備的有哪些區(qū)別?

    我想問一下stm32的fsmc總線上同時掛載LCD和SRAM和單獨(dú)設(shè)置一個FSMC總線設(shè)備的有那些區(qū)別(我只做個單個設(shè)備的掛載)那位大神和廠家能講一下嗎,有實(shí)例最好,我就是怕不會出現(xiàn)
    發(fā)表于 05-31 07:31

    如何提高SPI接口LCD的刷新頻率?

    怎么樣提高SPI接口LCD的刷新頻率
    發(fā)表于 03-28 06:24

    具有PWM和SMBus控制接口LCD背光WLED驅(qū)動器TPS61195數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《具有PWM和SMBus控制接口LCD背光WLED驅(qū)動器TPS61195數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 03-13 09:14 ?0次下載
    具有PWM和SMBus控制<b class='flag-5'>接口</b>的<b class='flag-5'>LCD</b>背光WLED<b class='flag-5'>驅(qū)動</b>器TPS61195數(shù)據(jù)表

    STM32F407VET6高性能基礎(chǔ)系列、帶DSP和FPU的Arm Cortex-M4內(nèi)核

    LCD并行接口,8080/6800模式
    的頭像 發(fā)表于 02-29 10:48 ?1402次閱讀
    STM32F407VET6高性能基礎(chǔ)系列、帶DSP和FPU的Arm Cortex-M4內(nèi)核

    【ElfBoard】硬件顯示接口第1期

    ,屏幕就掃描一行。掃描480行后,又從第一行掃描開始。(這個規(guī)律由顯示驅(qū)動IC所決定的)。 HV模式:需要LCD_CLK時鐘信號,行同步信號LCD_HSYNC和場同步信號
    發(fā)表于 02-19 13:50

    如何在i.MXRT1170上快速點(diǎn)亮一款全新LCD?

    我們知道 LCD 接口有很多:DPI-RGB、MIPI DSI、DBI/MCU(I8080)、LVDS、SPI 等等,接口不同,對應(yīng)的軟
    的頭像 發(fā)表于 01-05 15:49 ?1218次閱讀
    如何在i.MXRT1170上快速點(diǎn)亮一款全新<b class='flag-5'>LCD</b><b class='flag-5'>屏</b>?
    RM新时代网站-首页