WhyCan Forum

人过留名,雁过留声,感谢各位朋友不离不弃地支持。 QQ: 516333132, 微信: whycan_cn (哇酷网/挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2019-11-18 12:25:33

cris8259
会员
注册时间: 2019-09-25
累计积分: 166

lcd的i2c初始化

有些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初始化的代码在什么地方,通用吗,是否需要修改

离线

#2 2019-11-18 13:39:53

awfans
会员
注册时间: 2018-04-03
累计积分: 219

Re: lcd的i2c初始化

u-boot 里面操作 SPI/I2C 建议用 IO 口模拟, 一般在 board.c 里面直接写拉低/拉高 io 模拟即可。

离线

#3 2019-11-18 14:28:49

cris8259
会员
注册时间: 2019-09-25
累计积分: 166

Re: lcd的i2c初始化

awfans 说:

u-boot 里面操作 SPI/I2C 建议用 IO 口模拟, 一般在 board.c 里面直接写拉低/拉高 io 模拟即可。

board.c里面看到有i2c初始化部分,你的意思是直接在i2c初始化后加入i2c发送数据初始化lcd的代码? 原本用i2c发送数据初始化lcd的代码在什么地方

离线

#4 2019-11-18 14:37:58

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,491

Re: lcd的i2c初始化

OLED 吗?
如果只是显示一个静态画面, 那直接在 board.c 里面用模拟i2c写一帧就行了。

离线

#5 2019-11-18 14:58:42

cris8259
会员
注册时间: 2019-09-25
累计积分: 166

Re: lcd的i2c初始化

不是OLED,普通的IPS LCD,i2c不是为了写入lcd的显示画面,只是为了初始化lcd的驱动芯片

离线

#6 2019-11-18 15:02:52

cris8259
会员
注册时间: 2019-09-25
累计积分: 166

离线

#7 2019-11-18 15:12:19

达克罗德
会员
注册时间: 2018-04-10
累计积分: 645

Re: lcd的i2c初始化

晕哥 说:

OLED 吗?
如果只是显示一个静态画面, 那直接在 board.c 里面用模拟i2c写一帧就行了。

好主意,那种带framebuffer的LCD,可以这样快速刷个开机logo

离线

#8 2019-11-18 15:21:05

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,491

Re: lcd的i2c初始化

从这个文件里面找代码吧, 首先看能否控制高低电平:

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); //低

离线

#9 2019-11-18 15:33:45

cris8259
会员
注册时间: 2019-09-25
累计积分: 166

Re: lcd的i2c初始化

配置里有 LCD panel needs to be configured via i2c 这一项,我还以为已经实现了通过i2c往lcd写数据

离线

#10 2019-11-18 15:42:18

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,491

Re: lcd的i2c初始化

看名字, 或许是可以的, 你可以试一试。

离线

#11 2019-11-27 08:13:53

达克罗德
会员
注册时间: 2018-04-10
累计积分: 645

Re: lcd的i2c初始化

晕哥 说:

从这个文件里面找代码吧, 首先看能否控制高低电平:

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,但是失败(这个选项关不掉)

离线

页脚