0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用FSMC接口来驱动8080接口LCD屏的问题

STM32单片机 来源:STM32单片机 作者:STM32单片机 2021-06-29 09:59 次阅读

前言

在一些图形界面应用中,系统架构会时常考虑使用 FSMC接口来驱动 8080接口的 LCD屏。在 MCU渲染完成,将framebuffer发送到 LCD时,有可能会遇到存儲大小端的问题。STM32MCU都采用 ARMCortex内核,内存使用小端格式。而 intel 8080接口的 LCD在传输 RGB数据时,使用的是大端格式。MCU在传输 RGB数据时,字节序有可能不匹配。在图形界面应用中,像素格式一般会使用 RGB888或 RGB565。而在使用 FSMC接口驱动 8bit位宽的 LCD时,很可能会使用 RGB565格式。本文中会介绍两种方法来处理8bit8080接口 RGB565格式图像数据字节序问题。

图像数据字节序

8bit8080 LCD在接收 RGB565数据时,会将第一个字节解析为{R4-R0,G5-G3}, 第二个字节解析为{G2-G0,B4-B0},并按这个顺序接收所有数据,如下图:

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

而在 MCU内存中,数据按小端格式存放,RGB565数据存放的字节序如下:

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

如果不做调整直接将 RGB数据发给 LCD,MCU会先发送 Byte0,再发送 Byte 1,这样 LCD显示的内容就会错乱。对比上面两张图可以看出,只需将内存中 Byte0与 Byte1字节位置对调(Byteswap),就能满足 LCD接口的字节序要求。可以直接使用 CPU进行 Byteswap,但这会消耗过多 CPU算力,同时也会占用更多内存。这里我们将使用硬件进行 Byteswap.

DMA2D 进行Byteswap

DMA2D是 ST为图形应用专门设计并优化的2D加速引擎,拥有丰富的功能。其字节序重排功能包含了Red blueswap以及 Byteswap特性。Red blueswap特性在 L4和 L4+系列 MCU都支持,而 Byteswap仅在L4+系列有支持。在 L4+系列上,通过配置 DMA2D_OPFCCR寄存器的 SB位,即可使能 Byteswap功能,在 DMA2D的outputFIFO中完成字节序调整,如下图:

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

因此在图形界面应用中,需要 Byteswap时,可以考虑用 DMA2D来传输 RGB数据给 LCD。

GPDMA 进行Byteswap

在新推出的 U5系列芯片上,集成了 GPDMA模块。这是新的通用DMA模块,能在传输数据的同时,还有丰富的数据处理能力。在初始化GPDMA时,通过配置源和目的数据位宽为 DMA_SRC_DATAWIDTH_WORD,在数据处理中配置 DataExchange为 DMA_EXCHANGE_DEST_BYTE,如下面代码,也能实现Byteswap功能。

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

这样,在图形应用中,既能使用 DMA2D加速渲染过程,也能使用 GPDMA的数据处理能力。通过 GPDMA直接向FSMC接口输出 Byteswap后的 RGB565格式的图形数据给LCD。

小结

在驱动 8位 8080接口 LCD时,需要注意图像数据字节序问题。使用 RGB565格式时,可以使用 DMA2D或 GPDMA来传输图像数据,同时对图像数据做 Byteswap调整,满足LCD的字节序要求。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • lcd
    lcd
    +关注

    关注

    34

    文章

    4424

    浏览量

    167410
  • 驱动
    +关注

    关注

    12

    文章

    1838

    浏览量

    85263

原文标题:工程师笔记 | 驱动 8 位 8080 接口 LCD 时的字节序问题

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    BTB扩展接口LCD、Camera、UART、I2C等|详解篇

    今天我们学习的是BTB扩展接口LCD、Camera、UART、I2C详解,特别分享Air201硬件BTB扩展接口相关内容。
    的头像 发表于 11-30 09:39 293次阅读
    BTB扩展<b class='flag-5'>接口</b>:<b class='flag-5'>LCD</b>、Camera、UART、I2C等|详解篇

    飞凌嵌入式-ELFBOARD-RGB LCD接口的PCB设计要点

    :VGA、DVI、HDMI、DP、USB-C、Type-C等,内接显示接口(直接接到显示的)有:MIPI、LVDS、eDP和LCD RGB接口
    发表于 11-12 11:51

    飞凌嵌入式-ELBOARD-RGB LCD显示接口的PCB设计要点

    :VGA、DVI、HDMI、DP、USB-C、Type-C等,内接显示接口(直接接到显示的)有:MIPI、LVDS、eDP和LCD RGB接口
    发表于 11-12 11:49

    lvds接口需要驱动

    广泛应用于高速数据传输的接口标准,特别是在大显示、通信设备和工业控制等领域。它采用低电压差分信号传输数据,具有低功耗、低误码率、低串扰和低辐射等优点。LVDS接口通过一对差分信号线
    的头像 发表于 10-06 15:06 841次阅读
    lvds<b class='flag-5'>接口</b>需要<b class='flag-5'>驱动</b>吗

    dsi接口,支持触摸控制吗

    DSI(Digital Serial Interface)接口是一种数字串行通信接口,主要用于LCD(液晶显示器)等显示设备的驱动。DSI接口
    的头像 发表于 08-20 11:44 526次阅读

    瑞萨e2studio----SPI驱动TFT-LCD

    在嵌入式领域,TFT-LCD是最常用的显示解决方案之一,因为它们提供了丰富的颜色和高分辨率的图像显示能力。RA4M2作为瑞萨的微控制器系列,具备了强大的处理能力和多种通信接口,非常适合于驱动
    的头像 发表于 08-07 17:46 1553次阅读
    瑞萨e2studio----SPI<b class='flag-5'>驱动</b>TFT-<b class='flag-5'>LCD</b><b class='flag-5'>屏</b>

    ESP32-S3的LCD接口使用外部PSRAM做数据缓存,DMA送数最高能到多少频率?

    外部PSRAM使用80M时钟(能否上120M,是否稳定?),4bit数据,LCD接口使用I8080模式,16bit位宽,最高时钟能到20M吗? 谢谢!
    发表于 06-17 08:11

    ESP32-S3的LCD接口可以用DMA链表触发发送数据吗?

    因为是用来驱动LED显示,用原来的I2S那样并行,通过链接自己组织数据列表,还是比较方便的,现在S3的I2S好像已经不能并行发数据了,只能用LCD接口了,所以想知道
    发表于 06-17 07:25

    请问ESP32-S3如何驱动QSPI接口LCD?

    目前项目用ESP32-S3驱动QSPI接口LCD驱动IC为GC9B71(规格书参考附件)。试着在ESP-IDF的范例spi_
    发表于 06-07 06:51

    stm32的fsmc总线上同时挂载LCD和SRAM和单独设置一个FSMC总线设备的有哪些区别?

    我想问一下stm32的fsmc总线上同时挂载LCD和SRAM和单独设置一个FSMC总线设备的有那些区别(我只做个单个设备的挂载)那位大神和厂家能讲一下吗,有实例最好,我就是怕不会出现
    发表于 05-31 07:31

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

    怎么样提高SPI接口LCD的刷新频率
    发表于 03-28 06:24

    具有PWM和SMBus控制接口LCD背光WLED驱动器TPS61195数据表

    电子发烧友网站提供《具有PWM和SMBus控制接口LCD背光WLED驱动器TPS61195数据表.pdf》资料免费下载
    发表于 03-13 09:14 0次下载
    具有PWM和SMBus控制<b class='flag-5'>接口</b>的<b class='flag-5'>LCD</b>背光WLED<b class='flag-5'>驱动</b>器TPS61195数据表

    STM32F407VET6高性能基础系列、带DSP和FPU的Arm Cortex-M4内核

    LCD并行接口8080/6800模式
    的头像 发表于 02-29 10:48 1402次阅读
    STM32F407VET6高性能基础系列、带DSP和FPU的Arm Cortex-M4内核

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

    ,屏幕就扫描一行。扫描480行后,又从第一行扫描开始。(这个规律由显示驱动IC所决定的)。 HV模式:需要LCD_CLK时钟信号,行同步信号LCD_HSYNC和场同步信号
    发表于 02-19 13:50

    如何在i.MXRT1170上快速点亮一款全新LCD

    我们知道 LCD 接口有很多:DPI-RGB、MIPI DSI、DBI/MCU(I8080)、LVDS、SPI 等等,接口不同,对应的软
    的头像 发表于 01-05 15:49 1219次阅读
    如何在i.MXRT1170上快速点亮一款全新<b class='flag-5'>LCD</b><b class='flag-5'>屏</b>?