硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5164|回复: 10
收起左侧

[LTDC] STM32H7的8位色CLUT,Lookup Table颜色表生成方法

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106754
QQ
发表于 2020-2-28 10:25:54 | 显示全部楼层 |阅读模式
使用8位色的优势是使用H7的内部SRAM即可驱动大分辨率显示屏,而且很多控制类的应用,8位色足够用。

通过0到255的索引值实现24bit颜色的互转,即1个索引值对应一个24bit颜色值,然后将这256个颜色值存储到LTDC的LUT寄存器里面。

  1. uint32_t LCD_Index2Color_233(uint32_t Index)
  2. {
  3.         uint32_t r, g, b;
  4.         r = (Index & 7) * 255 / 7;
  5.         g = ((Index >> 3) & 7) * 255 / 7;
  6.         b = ((Index >> 6) & 3) * 85;
  7.         return b + (g << 8) + (((uint32_t)r) << 16);
  8. }

  9. uint32_t LCD_Color2Index_233(uint32_t Color)
  10. {
  11.         int r, g, b;
  12.         
  13.         b = Color & 255;
  14.         g = (Color >> 8 ) & 255;
  15.         r = Color >> 16;
  16.         b = (r * 7 + 127) / 255;
  17.         g = (g * 7 + 127) / 255;
  18.         r = (b + 42) / 85;
  19.         return b + (g << 3) + (r << 6);
  20. }
复制代码



比如存储到图层1:

  1. for (i = 0; i < 256; i++)
  2. {
  3.       LUT = LCD_Index2Color_233(i);
  4. }

  5. HAL_LTDC_ConfigCLUT(&hltdc_F, LUT, 256, LTDC_LAYER_1);
  6. HAL_LTDC_EnableCLUT(&hltdc_F, LTDC_LAYER_1);
复制代码
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106754
QQ
 楼主| 发表于 2020-2-28 10:27:04 | 显示全部楼层
互转函数来自UCGUI3.98源码。

GUICC_233:

QQ截图20200228102817.png
回复

使用道具 举报

0

主题

36

回帖

36

积分

新手上路

积分
36
发表于 2020-2-29 14:14:18 | 显示全部楼层
RGB332不太好,可以用8bit BMP的LUT,所有8bit BMP文件里都有这个LUT
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106754
QQ
 楼主| 发表于 2020-2-29 14:34:16 | 显示全部楼层
小志 发表于 2020-2-29 14:14
RGB332不太好,可以用8bit BMP的LUT,所有8bit BMP文件里都有这个LUT

好办法。

不过8位色方案很多,很多8bit格式都可以选择,用户选择适合自己的即可。不知道BMP用的是那种。
1.png

2.png
回复

使用道具 举报

0

主题

36

回帖

36

积分

新手上路

积分
36
发表于 2020-2-29 18:12:22 | 显示全部楼层
eric2013 发表于 2020-2-29 14:34
好办法。

不过8位色方案很多,很多8bit格式都可以选择,用户选择适合自己的即可。不知道BMP用的是那种 ...

这个不太清楚,但肯定不是你表格中前面几种,8bit太少,RGB再去分得到的图片颜色过渡不太平滑,BMP 8bit应该是从色彩空间中抽取得到256个点,更具代表性,可能是表格里后面的某一种
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106754
QQ
 楼主| 发表于 2020-2-29 20:42:05 | 显示全部楼层
小志 发表于 2020-2-29 18:12
这个不太清楚,但肯定不是你表格中前面几种,8bit太少,RGB再去分得到的图片颜色过渡不太平滑,BMP 8bit ...

这个没关系,这个是emWin标配的,我们平时用emWin做8位色显示屏就是这几种配置。
到了具体的颜色时,我们还可以微调。


回复

使用道具 举报

11

主题

26

回帖

59

积分

初级会员

积分
59
发表于 2021-5-13 10:00:06 | 显示全部楼层
如果用threadx gui的话,我把所有用到的图标,图片,组成一张大的图片,然后转成索引格式的8位bmp图像,再给裁开,然后把gui studio里的颜色全部换成bmp的索引,lut表也换成bmp索引,是不是就可以了,这样我可以不用外扩RAM了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106754
QQ
 楼主| 发表于 2021-5-13 15:20:39 | 显示全部楼层
solarjjl 发表于 2021-5-13 10:00
如果用threadx gui的话,我把所有用到的图标,图片,组成一张大的图片,然后转成索引格式的8位bmp图像,再 ...

对,可以配置LTDC为8位色模式
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2022-1-5 11:54:54 来自手机 | 显示全部楼层
楼主能否加个微信(微信号:baochikaixin123)请教一下L8的使用方法,网上资料太少了,有点痛苦
回复

使用道具 举报

8

主题

39

回帖

63

积分

初级会员

积分
63
发表于 2023-6-8 14:20:40 | 显示全部楼层
请教下,有使用L8格式的工程demo吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106754
QQ
 楼主| 发表于 2023-6-8 16:29:32 | 显示全部楼层
sunshine666 发表于 2023-6-8 14:20
请教下,有使用L8格式的工程demo吗?

这个没有做例子。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 10:04 , Processed in 0.330783 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表