ST7789V笔记--颜色反显
/** * Bsp_Lcd_ControllerInit — ST7789V 控制器寄存器初始化 ** * 初始化序列来源: ST7789V 数据手册 V1.3, 第 9 章 Application * * 目标面板: KD024C-4 (240×320 常黑 IPS) * 接口方式: SMC 16 位 8080 并行, RGB565 像素格式 * * 流程: * 1. Sleep Out (0x11) → 退出休眠, 启动内部 DC/DC 电源 * 2. MADCTL (0x36) → 扫描方向 BGR 模式 (匹配 emWin BGR 输出) * 3. Frame Rate (0xB2) → 前后廊时序 * 4. Gate Control (0xB7) → VGH/VGL 栅极驱动电压 * 5. VCOM (0xBB) → VCOM 偏置电压, 消除 Flicker * 6. Power Control → 电源管理 (0xC0/C2/C3/C4/C6/D0) * 7. Gamma Curve → 正/负极性 Gamma 校正 (0xE0/0xE1, 14 字节) * 8. COLMOD (0x3A) → 16-bit/pixel RGB565 * 9. CASET/RASET (0x2A/2B) → 默认列/行窗口范围 (0~239 / 0~319) * 10. INVON (0x21) → 【已禁用】KD024C-4 为常黑面板, 无需 INVON 反色 * 11. Display ON (0x29) → 开启显示, GRAM 内容输出到面板 * * 颜色通道对齐策略 (重要): * - emWin 上层配置为 BGR565 格式 → R/B 已在软件层交换 * - MADCTL BGR bit 1 (0x08) → 硬件按 BGR 顺序解读 16-bit 数据 * - 结果: emWin 的 GUI_RED → 驱动收到 0x001F → 硬件 BGR 解读 → RED * - 所有像素写入路径 (Fill/ShowString/FullColor) 无需再做软件层 RGBtoBGR * * 注意: CASET/RASET/RAMWR (0x2A/0x2B/0x2C) 与 ILI9341 相同, * Bsp_Lcd_SetWindow 无需修改。 **/ static void Bsp_Lcd_ControllerInit(void) { #if 1 /* * 1. Sleep Out (0x11) * 退出休眠模式, 启动内部 DC/DC 升压和振荡器。 * 需等待 ≥ 120ms (见 Bsp_Lcd_HwReset 末尾延时)。 * */ LCD_WRITE_CMD(0x11); /* Sleep Out */ /* * 2. MADCTL — Memory Data Access Control (0x36) * * 0x08 0b0000_1000 * Bit[7] MY 0: 行地址从上到下 * Bit[6] MX 0: 列地址从左到右 * Bit[5] MV 0: 行列不交换 (竖屏 240×320) * Bit[4] ML 0: 垂直刷新从上到下 * Bit[3] BGR 1: 数据顺序为 BGR (匹配 emWin 驱动层颜色格式) * Bit[2] MH 0: 水平刷新从左到右 * Bit[1:0] 0: 保留 * * 颜色说明: emWin 内部配置为 BGR565 格式, GUI_RED 经 emWin * 转换后传入驱动层的 RGB565 值为 0x001F。ST7789V 的 BGR bit1 * 告知硬件输入数据是 BGR 顺序, 0x001F 被解读为: B0, G0, R31 → RED。 * 若 BGR0 (RGB 模式), 0x001F 会被硬件解读为 R0, G0, B31 → BLUE。 * */ LCD_WRITE_CMD(0x36); LCD_WRITE_DAT(0x08); /* MY0 MX0 MV0 ML0 BGR1 MH0 */ /* * 3. PORCTRL — Porch Setting (0xB2) * 配置 TFT 驱动时序中的前廊/后廊参数, * 确保 240×320 分辨率帧同步正确。 * * P[7:0] 0x0C (后廊行数 12) * P[15:8] 0x0C (前廊行数 12) * P[19:16] 0x0 (后廊像素数 0) * P[27:20] 0x33 (前廊像素数 51) * P[31:28] 0x3 (前廊像素高 nibble 3) * */ LCD_WRITE_CMD(0xB2); LCD_WRITE_DAT(0x0C); LCD_WRITE_DAT(0x0C); LCD_WRITE_DAT(0x00); LCD_WRITE_DAT(0x33); LCD_WRITE_DAT(0x33); /* * 4. GCTRL — Gate Control (0xB7) * 设置栅极驱动电压 VGH 和 VGL。 * VGH[5:0] 0x15 21 → ≈ 13.26V (TFT 导通) * VGL[2:0] 0x05 5 → ≈ -10.43V (TFT 截止) * */ LCD_WRITE_CMD(0xB7); LCD_WRITE_DAT(0x35); /* VGH21, VGL5 */ /* * 5. VCOMS — VCOM Setting (0xBB) * VCOM 偏置电压, 消除列反转时的 Flicker 闪烁。 * VCOM[6:0] 0x35 53 → VCOM ≈ 0.725V * */ LCD_WRITE_CMD(0xBB); LCD_WRITE_DAT(0x35); /* VCOM 53 → ~0.725V */ /* * 6. LCMCTRL — LCM Control (0xC0) * 内部偏置与升压模式控制。 * XMY[1:0] 00 (列反转) * XBGR 1 (增强显示质量) * 最终值 0x2C * */ LCD_WRITE_CMD(0xC0); LCD_WRITE_DAT(0x2C); /* * 7. VDVVRHEN — VDV and VRH Command Enable (0xC2) * CMDSEL 1 → 允许后续写入 VRHS/VDVS 寄存器。 * */ LCD_WRITE_CMD(0xC2); LCD_WRITE_DAT(0x01); /* 使能 VDV/VRH 命令 */ /* * 8. VRHS — VRH Set (0xC3) * VAP[5:0] 0x12 (GRAMP 高电平参考电压) * VAP 越高 → 画面越亮。当前值 0x12 平衡亮度和功耗。 * */ LCD_WRITE_CMD(0xC3); LCD_WRITE_DAT(0x12); /* VRH 0x12 */ /* * 9. VDVS — VDV Set (0xC4) * VDV[5:0] 0x20 (VDV 电压, 影响 Gamma 基准) * */ LCD_WRITE_CMD(0xC4); LCD_WRITE_DAT(0x20); /* VDV 0x20 */ /* * 10. FRCTRL2 — Frame Rate Control (0xC6) * NLA[4:0] 0x0F 15 * 帧率 fosc / ((RTNA×240) × (NLA1LINE)) * 在 240×320 分辨率下 ≈ 60Hz * */ LCD_WRITE_CMD(0xC6); LCD_WRITE_DAT(0x0F); /* NLA 15, 帧率 ~60Hz */ /* * 11. PWCTRL1 — Power Control 1 (0xD0) * AVDD_CLP 0xA4 (AVDD 电压钳位) * AVCL_CLP 0xA2 (AVCL 电压钳位) * 控制内部升压电路的整体电源参数。 * */ LCD_WRITE_CMD(0xD0); LCD_WRITE_DAT(0xA4); /* AVDD 钳位 */ LCD_WRITE_DAT(0xA2); /* AVCL 钳位 */ /* * 12. PVGAMCTRL — Positive Gamma Curve (0xE0) * 14 字节正极性 Gamma 校正曲线 (VP63~VP0)。 * 精细调节灰阶过渡, 优化高亮度区域色彩还原。 * * 数据表参考值 (V1.3 §9.2), 轻微调整以适配 * KD024C-4 常黑 IPS 面板的偏色特性。 * */ LCD_WRITE_CMD(0xE0); LCD_WRITE_DAT(0xD0); /* VP63 */ LCD_WRITE_DAT(0x00); /* VP62 */ LCD_WRITE_DAT(0x02); /* VP61 */ LCD_WRITE_DAT(0x07); /* VP59 */ LCD_WRITE_DAT(0x0A); /* VP57 */ LCD_WRITE_DAT(0x28); /* VP50 */ LCD_WRITE_DAT(0x32); /* VP43 */ LCD_WRITE_DAT(0x44); /* VP36 */ LCD_WRITE_DAT(0x42); /* VP29 */ LCD_WRITE_DAT(0x06); /* VP23 */ LCD_WRITE_DAT(0x0E); /* VP17 */ LCD_WRITE_DAT(0x12); /* VP11 */ LCD_WRITE_DAT(0x14); /* VP5 */ LCD_WRITE_DAT(0x17); /* VP0 */ /* * 13. NVGAMCTRL — Negative Gamma Curve (0xE1) * 14 字节负极性 Gamma 校正曲线 (VN63~VN0)。 * 与正极性配合, 保证灰阶居中不偏色。 * * 数据表参考值 (V1.3 §9.2), 微调适配面板。 * */ LCD_WRITE_CMD(0xE1); LCD_WRITE_DAT(0xD0); /* VN63 */ LCD_WRITE_DAT(0x00); /* VN62 */ LCD_WRITE_DAT(0x02); /* VN61 */ LCD_WRITE_DAT(0x07); /* VN59 */ LCD_WRITE_DAT(0x0A); /* VN57 */ LCD_WRITE_DAT(0x28); /* VN50 */ LCD_WRITE_DAT(0x31); /* VN43 */ LCD_WRITE_DAT(0x54); /* VN36 */ LCD_WRITE_DAT(0x47); /* VN29 */ LCD_WRITE_DAT(0x0E); /* VN23 */ LCD_WRITE_DAT(0x1C); /* VN17 */ LCD_WRITE_DAT(0x17); /* VN11 */ LCD_WRITE_DAT(0x1B); /* VN5 */ LCD_WRITE_DAT(0x1E); /* VN0 */ /* * 14. COLMOD — Interface Pixel Format (0x3A) * DBI[2:0] 101 → MCU 接口 16-bit/pixel * DPI[2:0] 101 → RGB 接口 16-bit/pixel * 即 RGB565 格式 (R5G6B5 16 位) * */ LCD_WRITE_CMD(0x3A); LCD_WRITE_DAT(0x55); /* DBI5(16bit), DPI5(16bit) */ /* * 15. CASET — Column Address Set (0x2A) * 设置列地址窗口: XS[15:0]0x0000, XE[15:0]0x00EF * 即 0~239 共 240 列 (覆盖整屏) * */ LCD_WRITE_CMD(0x2A); LCD_WRITE_DAT(0x00); /* XS[15:8] 0 */ LCD_WRITE_DAT(0x00); /* XS[7:0] 0 */ LCD_WRITE_DAT(0x00); /* XE[15:8] 0 */ LCD_WRITE_DAT(0xEF); /* XE[7:0] 239 */ /* * 16. RASET — Row Address Set (0x2B) * 设置行地址窗口: YS[15:0]0x0000, YE[15:0]0x013F * 即 0~319 共 320 行 (覆盖整屏) * */ LCD_WRITE_CMD(0x2B); LCD_WRITE_DAT(0x00); /* YS[15:8] 0 */ LCD_WRITE_DAT(0x00); /* YS[7:0] 0 */ LCD_WRITE_DAT(0x01); /* YE[15:8] 1 */ LCD_WRITE_DAT(0x3F); /* YE[7:0] 319 (0x013F) */ /* * 17. INVON — Display Inversion ON (0x21) — 【已禁用】 * KD024C-4 为常黑 (normally-black) IPS 面板, * 不需要列反转反色。若启用 INVON, 所有像素颜色 * 会被逐位取反, 导致: * GUI_RED (emWin BGR0x001F) → 写入 GRAM → INVON 反转为 * 0xFFE0 → 屏幕上显示黄色, 而非红色。 * * 仅当面板为常白 (normally-white) 时才启用 INVON * 来获得正确的黑底显示, 本面板无需此命令。 * */ /* LCD_WRITE_CMD(0x21); */ /* INVON: 常黑面板禁用 */ /* * 18. DISPON — Display ON (0x29) * 打开显示输出, GRAM 内容开始刷新到面板。 * 此时屏幕显示 GRAM 中的随机数据 (未清屏), * 调用方需自行执行一次清屏操作。 * */ LCD_WRITE_CMD(0x29); /* Display ON */ #endif /* 1 */ }现象使用emwin的颜色宏实际显示出来的颜色对不上原因1.emwin本身会将RGB转成BGR最终调用数据发送指令发送出BGR格式的数据MADCTL — Memory Data Access Control (0x36)** 0x08 0b0000_1000* Bit[7] MY 0: 行地址从上到下* Bit[6] MX 0: 列地址从左到右* Bit[5] MV 0: 行列不交换 (竖屏 240×320)* Bit[4] ML 0: 垂直刷新从上到下* Bit[3] BGR 1: 数据顺序为 BGR (匹配 emWin 驱动层颜色格式)* Bit[2] MH 0: 水平刷新从左到右* Bit[1:0] 0: 保留*2.ST7789V 的 INVON 是给常白面板 (normally-white)用的用来反色。KD024C-4 这块屏是常黑面板 (normally-black)不反色就能正确显示。开了 INVON 等于所有颜色取反RGB 彩色全部乱套解决办法1. LCD_WRITE_CMD(0x36);LCD_WRITE_DAT(0x08); /* MY0 MX0 MV0 ML0 BGR1 MH0 */2. /* * 17. INVON — Display Inversion ON (0x21) — 【已禁用】* KD024C-4 为常黑 (normally-black) IPS 面板,* 不需要列反转反色。若启用 INVON, 所有像素颜色* 会被逐位取反, 导致:* GUI_RED (emWin BGR0x001F) → 写入 GRAM → INVON 反转为* 0xFFE0 → 屏幕上显示黄色, 而非红色。** 仅当面板为常白 (normally-white) 时才启用 INVON* 来获得正确的黑底显示, 本面板无需此命令。* *//* LCD_WRITE_CMD(0x21); */ /* INVON: 常黑面板禁用 */总结BGR格式要对应设置好要根据自己的LCD规格书看看是否需要设置反显

相关新闻

为什么Codex支持deepseek的key了

为什么Codex支持deepseek的key了

这个变化其实主要发生在 DeepSeek 那边,不是 OpenAI 单独给 Codex 加了 DeepSeek 支持。简单说: Codex 一直支持自定义模型提供商——它通过 config.toml 里的 [model_providers] 配置,可以指向任何"协议兼容"的 API 端点。但 Cod…

2026/8/1 14:34:10 阅读更多 →
C++模板进阶:从基础到实战,掌握泛型编程核心

C++模板进阶:从基础到实战,掌握泛型编程核心

1. 项目概述&#xff1a;为什么C模板值得你投入精力去“拿下”&#xff1f;如果你已经写过一些C代码&#xff0c;用过std::vector<int>或者std::sort&#xff0c;那你其实已经和模板打过交道了。但很多时候&#xff0c;我们只是停留在“会用”的层面&#xff0c;一旦需要…

2026/8/1 14:33:10 阅读更多 →
DeepSeek-V4-Flash-0731-正式版真来了_全面测评与国内外顶尖模型对比

DeepSeek-V4-Flash-0731-正式版真来了_全面测评与国内外顶尖模型对比

DeepSeek-V4-Flash 0731 正式版真来了&#xff1f;一篇看懂这次升级值不值得追时间&#xff1a;2026-07-31 结论先行&#xff1a;这次不是“换代式大跃迁”&#xff0c;但确实是 DeepSeek-V4-Flash 从 preview 走向正式可用的重要节点。它最值得看的&#xff0c;不是模型名字&a…

2026/8/1 14:33:10 阅读更多 →

最新新闻

一次消谐器的常规用法!

一次消谐器的常规用法!

一次消谐器是 6~35kV 中性点不接地配电系统中&#xff0c;串联于电压互感器&#xff08;PT&#xff09;一次绕组中性点与大地之间的谐振抑制设备&#xff0c;专门治理铁芯饱和引发的铁磁谐振故障&#xff0c;广泛应用于变电站、工矿配电及新能源电站等场景。 系统运行中&#x…

2026/8/1 15:25:54 阅读更多 →
模数转换器ADC:从原理到实战,全面解析核心架构与设计要点

模数转换器ADC:从原理到实战,全面解析核心架构与设计要点

1. 从“模拟”到“数字”的桥梁&#xff1a;为什么我们需要ADC&#xff1f; 在电子系统里&#xff0c;我们生活在一个“模拟”与“数字”交织的世界。你听到的声音、感受到的温度、测量到的电压&#xff0c;这些信号在自然界中都是连续变化的&#xff0c;它们有无穷多个可能的值…

2026/8/1 15:25:54 阅读更多 →
Python热门开源框架全景解析:从Web开发到AI部署的12个核心工具

Python热门开源框架全景解析:从Web开发到AI部署的12个核心工具

1. 项目概述&#xff1a;为什么我们需要关注Python开源框架&#xff1f;如果你正在用Python做开发&#xff0c;或者正准备踏入这个领域&#xff0c;那么“框架”这个词你一定不陌生。它就像盖房子时用的脚手架和预制件&#xff0c;能让你省去从零开始打地基、砌砖墙的繁琐&…

2026/8/1 15:25:54 阅读更多 →
Cocos Creator 3D物理交互:碰撞检测与触发器实战指南

Cocos Creator 3D物理交互:碰撞检测与触发器实战指南

1. 项目概述&#xff1a;为什么3D物理交互是游戏体验的基石 在Cocos Creator里折腾3D项目&#xff0c;尤其是涉及到角色移动、物体交互、战斗判定这些核心玩法时&#xff0c;物理引擎的碰撞检测和触发器绝对是绕不开的坎。很多开发者&#xff0c;特别是从2D项目转过来的朋友&am…

2026/8/1 15:25:54 阅读更多 →
织金洞发起AIGC视频创意挑战赛!

织金洞发起AIGC视频创意挑战赛!

织金洞发起AIGC视频创意挑战赛&#xff01;一次创作&#xff0c;双重奖励&#xff0c;AniShort额外再加码&#xff0c;你的创意&#xff0c;值得被加倍看见&#xff01;

2026/8/1 15:25:54 阅读更多 →
蜜柑计划:一个动漫爱好者的追番神器,5分钟带你从安装到精通

蜜柑计划:一个动漫爱好者的追番神器,5分钟带你从安装到精通

蜜柑计划&#xff1a;一个动漫爱好者的追番神器&#xff0c;5分钟带你从安装到精通 【免费下载链接】mikan_flutter 蜜柑计划&#xff08; https://mikanani.me &#xff09;&#xff0c;&#x1f6a7; 持续开发中... 项目地址: https://gitcode.com/gh_mirrors/mi/mikan_flu…

2026/8/1 15:24:54 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档&#xff0c;可以直接使用&#xff01;系统支持图片、视频、摄像头等多种方式检测裂缝&#xff0c;功能强大实用。 1数据集6000张 8各类别

2026/8/1 13:02:46 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像&#xff01; pubg绝地求生目标检测数据集 1分类&#xff1a;e_body&#xff0c;14905个标签&#xff0c;txt格式 共计14244张图&#xff0c;99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别&#xff1a; allies enemy tag图片总量&#xff1a;7247张训练集&#xff1a;5139张验证集&#xff1a;1425张测试集&#xff1a;683张标注状态&#xff1a;全部已标注&#xff0c;即拿即用数据格式&#xff1a;支持YOLO格式及其他格式&#…

2026/8/1 10:33:33 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →