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
    +关注

    关注

    36

    文章

    4578

    浏览量

    175828
  • 驱动
    +关注

    关注

    12

    文章

    1928

    浏览量

    88204

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    VK0192 点阵LCD液晶段码显示驱动芯片 3/4线串行接口/省电模式

     VK0192是一个点阵式存储映射的LCD驱动器,可支持最大 192点(24SEGx8COM)的LCD。单片机可通过3/4线串 行接口配置
    的头像 发表于 12-03 15:22 93次阅读
    VK0192 点阵<b class='flag-5'>LCD</b>液晶段码显示<b class='flag-5'>屏</b><b class='flag-5'>驱动</b>芯片 3/4线串行<b class='flag-5'>接口</b>/省电模式

    原厂 FZH1697 带键盘扫描接口LCD驱动控制专用电路

    )FZH1697是一种带键盘扫描接口LCD驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LCD
    发表于 11-07 09:43

    原厂 FZH1692P/Q 4*40 LCD 显示驱动控制专用电路,最多显示 160段

    段。 内部集 成有 MCU两线数字接口、数据锁存器、LCD驱动等电路。支持 1/3BIAS,1/2BIAS,LINE翻转, FRAME 翻转,支持 3V /5V的LCD
    发表于 11-05 09:40

    原厂 FZH1691 4×36 LCD 显示驱动控制专用电路

    ,FRAME 翻转,支持 3V/5V 的LCD 。所有设置均通过2线串行接口传输数据。主要应用于段码LCD显示产品
    发表于 11-04 09:36

    原厂 FZH1631 标准I2C接口通讯LCD控制/驱动芯片

    1、概 述 型号:FZH1631 厂商:深圳市方中禾科技有限公司(Premier Chip Limited) FZH1631是一款标准I2C接口通讯LCD控制/驱动芯片。该芯片提供1/4占空比和1
    发表于 11-04 09:22

    低功耗LCD驱动段码抗干扰驱动芯片VKL092Q

    ) 应用领域 ·面板手表·医疗仪器 超低功耗LCD液晶控制器及驱动系列: VKL060 2.5~5.5V 15seg4com 偏置电压1/2 1/3 I2C通讯接口 SSOP24 超低功耗/抗干扰
    发表于 11-03 17:29

    【瑞萨RA6E2】PMOD 接口 LCD 显示调色板

    瑞萨 R7FA6E2BB3CFM 有 2 个 SPI 接口,除此之外,还有 2 个 SCI 接口可以实现 SPI 功能,这次使用 SPI0 接口
    发表于 11-01 16:47

    为光,智耀瞬间-广芯LCD闪背光驱动芯片BCT3758

    为光,智耀瞬间-广芯LCD闪背光驱动芯片BCT3758
    的头像 发表于 10-17 13:33 281次阅读
    化<b class='flag-5'>屏</b>为光,智耀瞬间-广芯<b class='flag-5'>LCD</b><b class='flag-5'>屏</b>闪背光<b class='flag-5'>驱动</b>芯片BCT3758

    高抗噪LCD驱动低电流液晶驱动芯片VKL060

    )的LCD。单片机可通过I2C接口配置显示参数和读写显示数据,可配置4种功耗模式,也可通过关显示进入省电模式。其高抗干扰,超低功耗的特性适用于水电气表以及工控仪表类产品。Z198+06 特点: •工作电压
    发表于 10-15 17:32

    如何调用C的接口封装micropyton接口?

    microPython的库比较少,无法满足需求,请问调用C的接口封装micropyton接口如何操作?能否提供详细步骤? 你好,可以参考micropython官方的教程添加自定义的
    发表于 06-23 07:17

    STM32U5+8bit_8080 LCD 怎么配置touchgfx?

    我参与的项目使用STM32U575做为主空,使用fmc驱动8080接口的8bitLCD,配置touchgfx时不能配置为8bit,其他选型例如DMA2D也使用不了,我该怎么做?
    发表于 06-09 06:23

    低电流LCD驱动抗噪液晶驱动芯片VKL060

    )的LCD。单片机可通过I2C接口配置显示参数和读写显示数据,可配置4种功耗模式,也可通过关显示进入省电模式。其高抗干扰,超低功耗的特性适用于水电气表以及工控仪表类产品。Z166+45 特点: •工作电压
    发表于 05-12 17:07

    STM32U5+8bit_8080 LCD怎么配置touchgfx?

    我参与的项目使用STM32U575做为主空,使用fmc驱动8080接口的8bitLCD,配置touchgfx时不能配置为8bit,其他选型例如DMA2D也使用不了,我该怎么做?
    发表于 04-28 08:12

    STM32U5+8bit_8080 LCD怎么配置touchgfx?

    我参与的项目使用STM32U575做为主空,使用fmc驱动8080接口的8bitLCD,配置touchgfx时不能配置为8bit,其他选型例如DMA2D也使用不了,我该怎么做?
    发表于 04-27 07:11

    电容串行接口

    帝晶智慧电容串行接口
    的头像 发表于 03-11 17:21 1650次阅读