Exynos4412——LCD之backligth

优快云仅用于增加百度收录权重,排版未优化,日常不维护。请访问:www.hceng.cn 查看、评论。
本博文对应地址: https://hceng.cn/2017/11/22/Exynos4412——LCD之backligth/
Exynos4412的背光驱动,采用友善之臂的“一线触摸”。

1.背景

关于一线触摸友善之臂官方说明:LCD-S702/zh

  • 在大部分的ARM主控板中,我们发现,直接使用CPU自带的ADC转换器并不能很好的支持大尺寸(7寸以上)的四线电阻触摸屏,市面上一般采用更加专业的USB或串口触摸屏扩展模块来解决。为了节省ARM主控芯片的有限资源以及减少外扩,我们专门开发了只使用一个普通GPIO就可以实现专业触摸效果的替代方案,并把它集成到我们的LCD模块驱动板中,我们称之为“一线触摸(1-Wire)”。它的基本原理是,使用一个低成本的MCU连接一个专业的触控芯片(在此我们使用的是ADS7843或兼容芯片),采集并处理四线电阻模拟信号,并把滤波(未校准)后的稳定原始数据通过GPIO送给ARM主控,经我们长期反复测试,即使在19寸这样大的电阻触摸屏上,也可以实现非常精准的触摸效果,不会出现漂移抖动的现象。
  • 另外,当今12寸以内的LCD显示屏,大都采用了LED背光,我们顺便也把背光调节部分也交给MCU来处理,并设置了统一的调节数值区间,最后通过“一线触摸”的GPIO传给ARM主控,这样在ARM端就可以非常方便的来设置背光了。
  • 与此同时,我们还为我们设计开发的每一款带“一线触摸”的LCD模块设置了编号存储在MCU中,这样通过一线通讯读取到的编号,就可以知道这个LCD模块的具体类型了,也就可以在bootloader和内核中自动匹配相应的LCD驱动参数,以此来实现无需修改任何配置,即插即用带”一线触摸”的LCD模块。
  • 在电容触摸LCD模块中,我们则去掉了电阻触控芯片,而保留了背光调节和存储LCD类型编号这2个功能,因此电容触摸通讯依然是标准的I2C接口。
  • 需要注意的是,我们实现的“一线触摸”的通讯,和通常所说的单总线接口是不同的。在ARM主控端内部,我们实际采用了一路pwm timer(不是pwm管脚哦)来实现固定的通讯频率(9600Hz),详细请查看驱动源代码。

也就是说友善之臂为了改善大尺寸四线电阻触摸屏的性能,外加了一个低成本的MCU去控制专业的触控芯片,将滤波后的稳定数据通过GPIO传回到ARM上。这是和触摸屏相关的,本次不深究,而且我的板子LCD是电容屏,以上的改进几乎不关我的事。
但,他们把背光调节部分也交给了那个低成本MCU来处理,并通过“一线触摸”来控制,这就坑了。记得以前的都是ARM的一个PWM引脚就完成LCD的背光的控制,现在由于硬件上并不能直接PWM控制,不得不采用“一线触摸”。

2.原理图

  • Tiny4412SDK-1506-Schematic.pdf:
  • Tiny4412-1412-Schematic.pdf:

    Exynos4412的GPX1_2与LCD相连,作为“一线触摸”引脚,也就是背光控制引脚。

3.设备树文件

--- exynos4412-tiny4412.dts     2017-11-22 01:43:28.922397104 -0800
+++ linux-4.13.9/arch/arm/boot/dts/exynos4412-tiny4412.dts      2017-11-22 01:42:47.459525364 -0800
@@ -91,6 +91,18 @@
                        clock-frequency = <24000000>;
                };
        };
+
+       backlight@139D0000{
+               compatible = "tiny4412,backlight";
+               reg = <0x139D0000  0x14>;
+               tiny4412,backlight = <&gpx1 2 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "backlight_out","backlight_in";
+               pinctrl-0 = <&backlight_out>;
+               pinctrl-1 = <&backlight_in>;
+               interrupts = <0 40 0>;
+               clocks = <&clock CLK_PWM>;
+               clock-names = "timers";
+        };
 };

 &rtc {
@@ -151,4 +163,21 @@
 };


+&pinctrl_1 {
+        backlight_out: backlight_out{
+                samsung,pins = "gpx1-2";
+                samsung,pin-function = <1>;
+                samsung,pin-pud = <0>;
+                samsung,pin-drv = <0>;
+        };
+         backlight_in: backlight_in{
+                samsung,pins = "gpx1-2";
+      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值