一、LCD驱动框架编写
二、LCD引脚配置
- 使用pinctrl配置LCD引脚
- 使用GPIO子系统控制背光
i.MX Pins Tool
下载并安装i.MX Pins Tool v6工具,打开配置文件。
该软件可以点击某个引脚,配置对应的功能,就可以生成设备树代码 。
如何配置LCD引脚的功能
- 需要知道哪些引脚需要配置(看原理图)
- 需要知道这些引脚应该配置成什么
B_LCD_DATAXXX:这24位的数据引脚肯定需要配置成LCD的功能
B_LCD_VSYNC:列同步信号
B_LCD_HSYNC:水平同步信号
B_LCD_PCLK:CLK信号
B_LCD_TP_INT:触摸相关暂时不配置
B_LCD_TP_RST:触摸相关暂时不配置
I2C2_SCL:触摸相关暂时不配置
I2C2_SDA:触摸相关暂时不配置
继续查看100ask的LCD底板原理图
B_LCD_RESET:接口没有接到屏幕上,电路上的电阻没接
B_LCD_DISP:没有接
B_LCD_PWD:lcd背光电路
配置软件
先全都选上,
引脚的上又行列两个坐标,比如一个引脚在K行,第17列,那么这个引脚就是K17(PIN NUM)。
K17还有一个名字(PIN NAME)
然后依次设置LCD对应的引脚,并结合原理图处理出错的引脚,同时把N17配置成GPIO功能。
生成的配置文件命名说明:
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&BOARD_InitPins>;
imx6ull-board {
BOARD_InitPins: BOARD_InitPinsGrp { /*!< Function assigned for the core: Cortex-A7[ca7] */
fsl,pins = <
MX6UL_PAD_GPIO1_IO08__GPIO1_IO08 0x000010B0
MX6UL_PAD_LCD_CLK__LCDIF_CLK 0x000010B0
MX6UL_PAD_LCD_DATA00__LCDIF_DATA00 0x000010B0
//.....
//MX6UL表示芯片,PAD表示引脚,LCD_CLK表示引脚名字,LCDIF_CLK表示功能,数值表示配置信息不同的配置值不一样
//pinctrl子系统会对这些值配置成对应的功能
>;
};
};
};
在arch/arm/boot/dts/imx6ul-pinfunc.h文件中有对应的配置:
/*
* The pin function ID is a tuple of
* <mux_reg conf_reg input_reg mux_mode input_val> 所有的引脚功能都有对应的参数
*/
#define MX6UL_PAD_BOOT_MODE0__GPIO5_IO10 0x0014 0x02a0 0x0000 5 0
#define MX6UL_PAD_BOOT_MODE1__GPIO5_IO11 0x0018 0x02a4 0x0000 5 0
#define MX6UL_PAD_SNVS_TAMPER0__GPIO5_IO00 0x001c 0x02a8 0x0000 5 0
#define MX6UL_PAD_SNVS_TAMPER1__GPIO5_IO01 0x0020 0x02ac 0x0000 5 0
#define MX6UL_PAD_SNVS_TAMPER2__GPIO5_IO02 0x0024 0x02b0 0x0000 5 0
#define MX6UL_PAD_SNVS_TAMPER3__GPIO5_IO03 0x0028 0x02b4 0x0000 5 0
#define MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04 0x002c 0x02b8 0x0000 5 0
#define MX6UL_PAD_SNVS_TAMPER5__GPIO5_IO05 0x0030 0x02bc 0x0000 5 0
#define MX6UL_PAD_SNVS_TAMPER6__GPIO5_IO06 0x0034 0x02c0 0x0000 5 0
#define MX6UL_PAD_SNVS_TAMPER7__GPIO5_IO07 0x0038 0x02c4 0x0000 5 0
#define MX6UL_PAD_SNVS_TAMPER8__GPIO5_IO08 0x003c 0x02c8 0x0000 5 0
#define MX6UL_PAD_SNVS_TAMPER9__GPIO5_IO09 0x0040 0x02cc 0x0000 5 0
#define MX6UL_PAD_JTAG_MOD__SJC_MOD 0x0044 0x02d0 0x0000 0 0
#define MX6UL_PAD_JTAG_MOD__GPT2_CLK 0x0044 0x02d0 0x05a0 1 0
#define MX6UL_PAD_JTAG_MOD__SPDIF_OUT 0x0044 0x02d0 0x0000 2 0
#define MX6UL_PAD_JTAG_MOD__ENET1_REF_CLK_25M 0x0044 0x02d0 0x0000 3 0
#define MX6UL_PAD_JTAG_MOD__CCM_PMIC_RDY 0x0044 0x02d0 0x04c0 4 0
#define MX6UL_PAD_JTAG_MOD__GPIO1_IO10 0x0044 0x02d0 0x0000 5 0
#define MX6UL_PAD_JTAG_MOD__SDMA_EXT_EVENT00 0x0044 0x02d0 0x0610 6 0
#define MX6UL_PAD_JTAG_TMS__SJC_TMS 0x0048 0x02d4 0x0000 0 0
#define MX6UL_PAD_JTAG_TMS__GPT2_CAPTURE1 0x0048 0x02d4 0x0598 1 0
#define MX6UL_PAD_JTAG_TMS__SAI2_MCLK 0x0048 0x02d4 0x05f0 2 0