Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ART-Pi Smart
LCD
RGB565 显示图片异常
发布于 2022-05-06 11:45:04 浏览:852
订阅该版
[tocm] ### ART-Pi Smart 上使用 RGB565 模式显示,部分时候会出问题 #### 从节省内存空间的角度,我将 lcd 驱动修改为 RGB565 模式,目前测试发现显示图片的时候,部分地方图片像素显示异常: ![](https://s3.bmp.ovh/imgs/2022/05/06/bac666d49049277d.jpg) 正常的图片是这样的: ![](https://s3.bmp.ovh/imgs/2022/05/06/33f86f4218ff3443.jpg) #### 我使用一个 RGB 的图片显示看是正常的 ![](https://s3.bmp.ovh/imgs/2022/05/06/0a8f50da3e779fe8.jpg) 原始图片: ![](https://s3.bmp.ovh/imgs/2022/05/06/13d666bfcf226ff4.jpg) #### 针对这 lcd 驱动,我做的修改: ``` diff diff --git a/kernel/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c b/kernel/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c index c159e47..eca54a2 100644 --- a/kernel/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c +++ b/kernel/bsp/imx6ull-artpi-smart/drivers/drv_lcd.c @@ -6,7 +6,7 @@ * Change Logs: * Date Author Notes * 2021-01-11 Lyons first version - * 2021-06-24 RiceChen refactor + * 2021-06-24 RiceChen refactor * 重构 * * 2021-07-28 songchao add cmd */ @@ -14,8 +14,8 @@ #include
#ifdef BSP_USING_LCD - -#define LOG_TAG "drv.lcd" +#define LOG_LVL LOG_LVL_DBG +#define LOG_TAG "drv.lcd" #include
#include "fsl_iomuxc.h" @@ -176,7 +176,9 @@ int rt_hw_elcd_init(void) _lcd_obj.config = &_lcd_config; + /* 申请虚拟内存 */ _lcd_obj.fb_virt = rt_pages_alloc(rt_page_bits(LCD_BUF_SIZE)); + /* 获取物理地址 */ _lcd_obj.fb_phy = _lcd_obj.fb_virt + PV_OFFSET; LOG_D("fb address => 0x%08x\n", _lcd_obj.fb_phy); @@ -188,8 +190,9 @@ int rt_hw_elcd_init(void) _lcd_obj.info.width = LCD_WIDTH; _lcd_obj.info.height = LCD_HEIGHT; - _lcd_obj.info.pixel_format = RTGRAPHIC_PIXEL_FORMAT_RGB888; + _lcd_obj.info.pixel_format = RTGRAPHIC_PIXEL_FORMAT_RGB565; _lcd_obj.info.bits_per_pixel = LCD_BITS_PER_PIXEL; + /* 关联 frame buffer 首地址 */ _lcd_obj.info.framebuffer = (void *)_lcd_obj.fb_virt; _lcd_obj.parent.type = RT_Device_Class_Graphic; @@ -209,11 +212,11 @@ int rt_hw_elcd_init(void) ret = rt_device_register(&_lcd_obj.parent, _lcd_obj.config->name, RT_DEVICE_FLAG_RDWR); - /* LCD_BL */ + /* LCD_BL GPIO1_8*/ rt_pin_mode(IMX6ULL_LCD_BL_PIN, PIN_MODE_OUTPUT); rt_pin_write(IMX6ULL_LCD_BL_PIN, PIN_HIGH); - rt_memset((rt_uint8_t *)_lcd_obj.fb_virt, 0xff, LCD_BUF_SIZE); + rt_memset((rt_uint8_t *)_lcd_obj.fb_virt, 0x00, LCD_BUF_SIZE); return ret; } ``` 请问可能是什么原因呢?
查看更多
4
个回答
默认排序
按发布时间排序
iysheng
2022-05-06
这家伙很懒,什么也没写!
解决了,是控制器配置问题,具体的 diff 如: ```diff diff --git a/kernel/bsp/imx6ull-artpi-smart/libraries/sdk/devices/MCIMX6Y2/drivers/fsl_elcdif.c b/kernel/bsp/imx6ull-artpi-smart/libraries/sdk/devices/MCIMX6Y2/drivers/fsl_elcdif.c index f0a6f0a..bcca7b3 100644 --- a/kernel/bsp/imx6ull-artpi-smart/libraries/sdk/devices/MCIMX6Y2/drivers/fsl_elcdif.c +++ b/kernel/bsp/imx6ull-artpi-smart/libraries/sdk/devices/MCIMX6Y2/drivers/fsl_elcdif.c @@ -66,7 +66,7 @@ elcdif_pixel_format_reg_t s_pixelFormatReg[] = { LCDIF_CTRL1_BYTE_PACKING_FORMAT(0x0FU)}, /* kELCDIF_PixelFormatRGB565 */ {/* Register CTRL. */ - LCDIF_CTRL_WORD_LENGTH(0U) | LCDIF_CTRL_DATA_FORMAT_16_BIT(1U), + LCDIF_CTRL_WORD_LENGTH(0U) | LCDIF_CTRL_DATA_FORMAT_16_BIT(0U), /* Register CTRL1. */ LCDIF_CTRL1_BYTE_PACKING_FORMAT(0x0FU)}, /* kELCDIF_PixelFormatRGB666 */ ``` 根据 imx6ull 手册描述, RGB 565 时,需要设置: ![2022-05-06_16-39.png](https://oss-club.rt-thread.org/uploads/20220506/89da3cc8f5fb2afdcfd3550c043aebc6.png.webp) **BIT3 DATA_FORMAT_16_BIT 需要设置为 0**,**但是使用 [dbg_mm 小工具](https://club.rt-thread.org/ask/article/2ab0433d97511154.html)查看确是 1**: ![2022-05-06_16-30.png](https://oss-club.rt-thread.org/uploads/20220506/166e8ad67683ae3fe699a4957a0f8b7f.png) 后续跟进排查发现在 ``kernel/bsp/imx6ull-artpi-smart/libraries/sdk/devices/MCIMX6Y2/drivers/fsl_elcdif.c`` 文件中定义错了。修改之后就正常了: ![1031580196.jpg](https://oss-club.rt-thread.org/uploads/20220506/9ab1d4b49aada064221ccb8798971b8c.jpg.webp) 谢谢大家积极帮助我解决问题。😊
出出啊
2022-05-06
恃人不如自恃,人之为己者不如己之自为也
lvgl? 原始图片是 jpg 格式? 图片文件之后怎么处理显示的?
crystal266
2022-05-06
嵌入式
参考这个文章试一下,art-pi smart 的,使用 sdl demo 开发 gui [【ART-Pi Smart】使用 VS Code 开发 GUI 应用](https://club.rt-thread.org/ask/article/ea69b90a0e576dfa.html)
VFINE
2022-05-06
这家伙很懒,什么也没写!
1. 做张彩条测试,三色太简陋了 2. bgr2rgb
撰写答案
登录
注册新账号
关注者
0
被浏览
852
关于作者
iysheng
这家伙很懒,什么也没写!
提问
10
回答
15
被采纳
4
关注TA
发私信
相关问题
1
RT-Thread Setings没有BSP_USING_LCD选项?
2
晶联讯19264液晶屏字库,可以读取字母、字符和数字,但是汉字读取显示错误
3
rtt studio裸机例程在调取头文件时编译会报错
4
使用littlevgl2rtt软件包实例运行不成功,emwin正常
5
qemu的LCD可以显示1920*720的分辨率?
6
移植潘多拉板子的lcd驱动到芯片上
7
缺少常用的LCD驱动软件包
8
h750XBH6 LCD rt_malloc 分配内存失败
9
rtthread fsmc驱动LCD代码无错误,且背光显示,但是无现象
10
stm32h743 lcd 驱动出现hardfault 问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
Rt-thread中OTA下载后,bootloader不搬程序
2
ulog 日志 LOG_HEX 输出时间改为本地日期时间
3
在RT-Thread Studio中构建前执行python命令
4
研究一了一段时间RTT,直接标准版上手太难,想用nano,但又舍不得组件
5
CherryUSB开发笔记(一):FSDEV USB IP核的 HID Remote WakeUp (USB HID 远程唤醒) 2025-01-18 V1.1
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
xusiwei1236
5
个答案
2
次被采纳
踩姑娘的小蘑菇
1
个答案
2
次被采纳
用户名由3_15位
7
个答案
1
次被采纳
bernard
4
个答案
1
次被采纳
张世争
1
个答案
1
次被采纳
本月文章贡献
聚散无由
2
篇文章
15
次点赞
catcatbing
2
篇文章
5
次点赞
Wade
2
篇文章
2
次点赞
Ghost_Girls
1
篇文章
6
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部