有些lcd在使用前需要通过i2c初始化才能显示,在uboot中找到相关设置,
ARM architecture -> [//*]LCD panel needs to be configured via i2c
(PD0)LCD panel i2c intereface SDA pin
(PD12) LCD panel i2c interface SCL pin
写入LCD初始化的代码在什么地方,通用吗,是否需要修改
离线
u-boot 里面操作 SPI/I2C 建议用 IO 口模拟, 一般在 board.c 里面直接写拉低/拉高 io 模拟即可。
离线
u-boot 里面操作 SPI/I2C 建议用 IO 口模拟, 一般在 board.c 里面直接写拉低/拉高 io 模拟即可。
board.c里面看到有i2c初始化部分,你的意思是直接在i2c初始化后加入i2c发送数据初始化lcd的代码? 原本用i2c发送数据初始化lcd的代码在什么地方
离线
不是OLED,普通的IPS LCD,i2c不是为了写入lcd的显示画面,只是为了初始化lcd的驱动芯片
离线
离线
OLED 吗?
如果只是显示一个静态画面, 那直接在 board.c 里面用模拟i2c写一帧就行了。
好主意,那种带framebuffer的LCD,可以这样快速刷个开机logo
离线
从这个文件里面找代码吧, 首先看能否控制高低电平:
https://github.com/u-boot/u-boot/blob/master/board/sunxi/board.c
//soft_i2c_gpio_sda = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_PANEL_I2C_SDA);
soft_i2c_gpio_sda = sunxi_name_to_gpio("PB3");
//获取GPIO口
gpio_request(soft_i2c_gpio_sda, "soft-i2c-sda");
sunxi_gpio_set_cfgpin(soft_i2c_gpio_sda, SUN4I_GPH_SDC1);
sunxi_gpio_set_pull(soft_i2c_gpio_sda, SUNXI_GPIO_PULL_UP);
sunxi_gpio_set_drv(soft_i2c_gpio_sda, 2);
gpio_direction_output(soft_i2c_gpio_sda, 1); //高
gpio_direction_output(soft_i2c_gpio_sda, 0); //低
离线
配置里有 LCD panel needs to be configured via i2c 这一项,我还以为已经实现了通过i2c往lcd写数据
离线
从这个文件里面找代码吧, 首先看能否控制高低电平:
https://github.com/u-boot/u-boot/blob/master/board/sunxi/board.c
//soft_i2c_gpio_sda = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_PANEL_I2C_SDA); soft_i2c_gpio_sda = sunxi_name_to_gpio("PB3"); //获取GPIO口 gpio_request(soft_i2c_gpio_sda, "soft-i2c-sda"); sunxi_gpio_set_cfgpin(soft_i2c_gpio_sda, SUN4I_GPH_SDC1); sunxi_gpio_set_pull(soft_i2c_gpio_sda, SUNXI_GPIO_PULL_UP); sunxi_gpio_set_drv(soft_i2c_gpio_sda, 2); gpio_direction_output(soft_i2c_gpio_sda, 1); //高 gpio_direction_output(soft_i2c_gpio_sda, 0); //低
我试了下发现背光都没打开:
pin = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_BL_PWM); //CONFIG_VIDEO_LCD_BL_PWM = “PE6"
把这个pin打出来发现是-22,怎么办?看里面代码似乎是去找dts了,而dts对GPIO都没有定义。
我想CONFIG_DM_GPIO=n来禁用driver model来使用GPIO,但是失败(这个选项关不掉)
离线