新闻详情

新闻详情

首页 / 资讯中心 / 详情

i.MX6ULL LCD 驱动开发实战:从引脚到时钟的完整配置

发布时间:2026/9/28 21:02:53来源:尧图网络
i.MX6ULL LCD 驱动开发实战:从引脚到时钟的完整配置
一、前言最近在调试 i.MX6ULL 的 RGB LCD 驱动从最基础的引脚复用开始一步步配到时钟和 eLCDIF 寄存器。整个过程踩了不少坑也把 IOMUXC 和 CCM 的机制搞清楚了。这篇文章把整个流程整理出来希望能帮到同样在调试 LCD 的朋友。二、整体流程LCD 驱动初始化分四大步第 1 步引脚复用 电气特性IOMUXC✅第 2 步PCLK 时钟配置CCM✅第 3 步eLCDIF 寄存器配置⬜第 4 步刷屏 / 图形库⬜本文重点讲前两步。三、第一步引脚复用 电气特性3.1 要配哪些引脚RGB888 接口的引脚是固定的类别引脚数量数据线LCD_DATA00 ~ LCD_DATA2324控制线LCD_CLK / LCD_ENABLE / LCD_HSYNC / LCD_VSYNC4背光GPIO1_IO081合计29 个引脚。3.2 怎么从原理图找到 Pad 名看开发板原理图左边一列是芯片 Pad 名右边框是板级网络名Pad 名芯片网络名板子用途LCD_DATA00LCD1_DATA00数据 bit0.........LCD_DATA23LCD1_DATA23数据 bit23LCD_CLKLCD1_CLK像素时钟LCD_ENABLELCD1_ENABLE数据使能 DELCD_HSYNCLCD1_HSYNC水平同步LCD_VSYNCLCD1_VSYNC垂直同步GPIO1_IO08LCD_BL背光3.3 在头文件里找宏在fsl_iomuxc.h里搜 Pad 名找到对应功能的宏。宏名结构IOMUXC_Pad名_功能名比如IOMUXC_LCD_DATA00_LCDIF_DATA00 // Pad LCD_DATA00 复用为 LCDIF_DATA00 IOMUXC_GPIO1_IO08_GPIO1_IO08 // Pad GPIO1_IO08 复用为 GPIO宏展开后是5 个值#define IOMUXC_LCD_DATA00_LCDIF_DATA00 0x020E0118U, 0x0U, 0x00000000U, 0x0U, 0x020E03A4U顺序值含义10x020E0118SW_MUX_CTL 地址20x0UMUX_MODEALT 编号30x00000000输入选择寄存器40x0U输入 daisy50x020E03A4SW_PAD_CTL 地址3.4 引脚复用SW_MUX_CTL寄存器位域位名称含义4SION软件输入使能3:0MUX_MODE复用模式ALT 编号代码IOMUXC_SetPinMux(IOMUXC_LCD_DATA00_LCDIF_DATA00, 0);宏里的0x0U MUX_MODE 0 ALT0第二个参数0 SION 位不是 ALT注意第二个参数传 0 是 SION 位ALT 藏在宏里。3.5 电气特性SW_PAD_CTL寄存器位域位名称含义7:6SPEED速度5:3DSE驱动强度12PKE保持器使能13PUE上下拉/保持器选择15:14PUS上下拉选择0SRE压摆率0xB9 的含义0xB9 1011 1001b位名称值含义7:6SPEED10中等速度100MHz5:3DSE111最大驱动R0/70SRE1快速压摆率代码IOMUXC_SetPinConfig(IOMUXC_LCD_DATA00_LCDIF_DATA00, 0xB9);3.6 背光 GPIO 配置背光是独立 GPIO除了 IOMUXC 还要配 GPIO 模块// 1. 引脚复用配成 GPIOALT5 IOMUXC_SetPinMux(IOMUXC_GPIO1_IO08_GPIO1_IO08, 0); // 2. 电气特性 IOMUXC_SetPinConfig(IOMUXC_GPIO1_IO08_GPIO1_IO08, 0xB9); // 3. 方向输出1输出0输入 GPIO1-GDIR | (1 8); // 4. 电平高背光亮 GPIO1-DR | (1 8);GDIR 和 DR 是 GPIO 模块的寄存器寄存器偏移GPIO1 地址作用DR0x000x0209C000数据电平GDIR0x040x0209C004方向0输入1输出四、第二步PCLK 时钟配置4.1 时钟路径24MHz 晶振 ↓ PLL5 (PLL_VIDEO) → 744MHz ↓ VIDEO_DIV → 744MHz ↓ LCDIF1_PRE_CLK_SEL → 选 PLL5 ↓ LCDIF1_PRED → ÷4 186MHz ↓ LCDIF1_PODF → ÷6 31MHz ↓ PCLK4.2 PCLK 目标频率怎么算PCLK 刷新率 × (HFP HSPW HBP width) × (VFP VSPW VBP height)代入 800×48060Hz 的参数PCLK 60 × (40 48 88 800) × (13 3 32 480) 60 × 976 × 528 ≈ 30.9 MHz ≈ 31MHz4.3 PLL5 配置PLL 公式PLL 输出 参考时钟 × (DIV_SELECT NUM/DENOM)目标 744MHz744MHz 24MHz × 31所以 DIV_SELECT 31NUM 0DENOM 1。代码// 关闭小数分频 CCM_ANALOG-PLL_VIDEO_NUM 0; CCM_ANALOG-PLL_VIDEO_DENOM 1; // 选择 24MHz 参考时钟 unsigned int r CCM_ANALOG-PLL_VIDEO; r ~(3 19); r | (2 19); // DIV_SELECT 31 r ~(0x7F 0); r | (31 0); CCM_ANALOG-PLL_VIDEO r; // 使能 PLL CCM_ANALOG-PLL_VIDEO | (1 13);4.4 VIDEO_DIVCCM_ANALOG-MISC2 ~(3 30); // VIDEO_DIV 0分频 14.5 LCDIF 时钟树cr CCM-CSCDR2; r | (2 15); // LCDIF1_PRE_CLK_SEL 2选 PLL5 r ~(7 12); r | (3 12); // LCDIF1_PRED 3÷4 r ~(7 9); // LCDIF1_CLK_SEL 0选 PRED 后 CCM-CSCDR2 r; CCM-CBCMR ~(7 23); CCM-CBCMR | (5 23); // LCDIF1_PODF 5÷64.6 完整计算24MHz × 31 744MHz PLL5 744MHz / 1 744MHz VIDEO_DIV 744MHz / 4 186MHz PRED 186MHz / 6 31MHz PODF最终 PCLK 31MHz ✅五、踩过的坑坑 1HSYNC/VSYNC 宏名拼写错误IOMUXC_LCD_HSYNS_LCDIF_HSYNC // ❌ 多了一个 S IOMUXC_LCD_HSYNC_LCDIF_HSYNC // ✅ 正确坑 2以为第二个参数是 ALTIOMUXC_SetPinMux(IOMUXC_LCD_DATA00_LCDIF_DATA00, 0);这里的0是SION 位不是 ALT。ALT 藏在宏里。坑 3GDIR 的 0/1 记反i.MX6ULL 手册明确写0 INPUT输入1 OUTPUT输出坑 4PLL 锁定等待被注释//while ((CCM_ANALOG-PLL_VIDEO (1 31)) 0);建议恢复否则 PLL 没稳定就继续配置可能出错。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

STM32 ADC读数为0的五大硬性条件排查指南 2026/9/28 21:55:42

STM32 ADC读数为0的五大硬性条件排查指南

1. 为什么ADC读数永远是0?这不是玄学,是五个可验证的硬性条件没满足STM32的ADC采样值恒为0,是嵌入式开发中高频出现、却最容易被误判为“芯片坏了”或“代码写错了”的典型问题。我带过二十多个STM32项目,从F0到H7全系列&#xff…

阅读更多 →
agent-native应用开发指南:架构、实践与避坑 2026/9/28 21:55:41

agent-native应用开发指南:架构、实践与避坑

1. 什么是agent-native?先放下概念,直接说变化如果你过去一年经常刷技术社区,肯定见过这个词在AI圈里反复出现。我做AI应用开发这些年,遇到过不少概念先行的词,但agent-native算是一个真正从工程实践里长出来的方向。简…

阅读更多 →
Substrate区块链框架:模块化开发与Wasm热升级实战指南 2026/9/28 21:55:33

Substrate区块链框架:模块化开发与Wasm热升级实战指南

1. 什么是 Substrate?它不是“基板”,而是区块链的乐高积木Substrate 这个词在中文里常被直译为“基板”或“底物”,听起来像半导体材料或者生物实验里的培养基——但放在区块链语境下,它压根儿不是物理概念,而是一套高…

阅读更多 →
Windows USB串口静默掉线的三大检测与恢复方案 2026/9/28 21:55:33

Windows USB串口静默掉线的三大检测与恢复方案

1. 这不是串口问题,是Windows USB子系统在“装死”你有没有遇到过这样的场景:一台工业现场的C#上位机,接了3个USB转串口设备(CH340、CP2102、FTDI各一个),运行一整天都好好的,结果凌晨2:17分&am…

阅读更多 →
AI批量重写存量代码:GitHub三周128个PR的工程实践拆解 2026/9/28 21:53:55

AI批量重写存量代码:GitHub三周128个PR的工程实践拆解

1. 一个反直觉的工程选择:让 AI 修改自己的源码先说一个可能和多数人直觉相悖的事实:GitHub 这个承载了全球数亿个代码仓库的平台,其自身的代码库也面临着所有老系统都会遇到的麻烦——技术债堆叠、依赖版本过于陈旧、核心服务之间的耦合越来…

阅读更多 →
辉芒微FT62F28X烧录与调试避坑指南 2026/9/28 21:53:49

辉芒微FT62F28X烧录与调试避坑指南

1. 项目概述:为什么辉芒微FT62F28X的烧录与调试值得专门拆解FMD IDE、辉芒微、FT62F28X、烧录、调试——这五个词组合在一起,不是泛泛而谈的“单片机开发入门”,而是指向一个非常具体、非常真实、也相当容易踩坑的工程现场:一款国…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉