嵌入式linux驱动之路11:裸机开发之多点电容触摸屏,背光调节

触摸屏

电容触摸屏是需要一个驱动 IC的,驱动 IC 一般会提供一个 I2C 接口给主控制器,主控制器可以通过 I2C 接口来读取驱动 IC里面的触摸坐标数据。比如ATK-7016 的电容触摸屏部分有 4 个 IO 用于连接主控制器:SCL、SDA、RST 和 INT,SCL 和 SDA 是 I2C 引脚,RST 是复位引脚,INT 是中断引脚。一般通过 INT 引脚来通知主控制器有触摸点按下,然后在 INT 中断服务函数中读取触摸数据。也可以不使用中断功能,采用轮询的方式不断查询是否有触摸点按下,和所有的 I2C 器件一样,FT5426 也是通过读写寄存器来完成初始化和触摸坐标数据读取的,所以主要工作就是读写FT5426 的寄存器。
配置步骤如下:
1.先定义了 FT5426触摸屏 的设备地址、寄存器地址和一些触摸点状态宏,然后在定义了一个结构体 ft5426_dev_struc,此结构体用来保存触摸信息。
2.初始化触摸屏( FT5426)复用IO,设置电器属性,初始化触摸屏中断 IO (中断模式设置,输入设置)和复位 IO(输出设置)
3.初始化 I2C,配置工作模式,实质写寄存器
4.初始化 FT5426,往对应寄存器里写值,读取ID寄存器
5.中断IO对应的中断处理函数,最后清除中断标志位
6. 向 FT5426 写入数据, 从 FT5426 读取一个字节的数据核心配置 配置 I2C xfer 结构体。
7.读取当前所有触摸点的坐标,核心从寄存器 FT5426_TOUCH1_XH 开始,连续读取 30 个寄存器的值。

背光调节

RGB LCD 都有一个背光控制引脚,给这个背光控制引脚输入高电平就会点亮背光,输入低电平就会关闭背光。假如我们不断的打开和关闭背光,当速度足够快的时候就不会感觉到背光关闭这个过程了。这个正好可以使用 PWM 来完成。我们给 LCD 的背光引脚输入一个 PWM 信号,这样就可以通过调整占空比的方式来调整LCD 背光亮度了。
I.MX6U一共有 8 路 PWM 信号,每个 PWM 包含一个 16 位的计数器和一个 4 x 16 的数据 FIFO。可以通过配置相应的寄存器来设置 PWM 信号的频率和占空比,PWM 的 16 位计数器是个向上计数器,此计数器会从 0X0000 开始计数,直到计数值等于寄存器 PWMx_PWMPR(x=1~8) ,然后计数器就会重新从 0X0000 开始计数,如此往复。所以寄存器 PWMx_PWMPR 可以设置 PWM 的频率。在一个周期内,PWM 从 0X0000 开始计数的时候,PWM 引脚先输出高电平(默认情况下,可以通过配置输出低电平)。采样 FIFO 中保存的采样值会在每个时钟和计数器值进行比较,当采样值和计数器相等的话 PWM 引脚就会改为输出低电平(默认情况下,同样可以通过配置输出高电平)。计数器会持续计数,直到和周期寄存器 PWMx_PWMPR(x=1~8) 的值相等.在开启 PWM 之前最好设置好 PWMx_PWMPR 和 PWMx_PWMSAR 这两个寄存器,也就是设置好 PWM 的频率和占空比。
当我们向 PWMx_PWMSAR 寄存器写入采样值的时候,如果 FIFO 没满的话其值会被存储到 FIFO 中。如果 FIFO 满的时候写入采样值就会导致寄存器 PWMx_PWMSR 的位 FWE(bit6)置1,表示 FIFO 写错误,FIFO 里面的值也并不会改变。FIFO 可以在任何时候写入,但是只有在PWM 使能的情况下读取。寄存器 PWMx_SR 的位 FIFOAV(bit2:0)记录着当前 FIFO 中有多少个数据。从采样寄存器 PWMx_PWMSAR 读取一次数据,FIFO 里面的数据就会减一,每产生一个周期的 PWM 信号,FIFO 里面的数据就会减一,相当于被用掉了。PWM 有个 FIFO 空中断,当FIFO 为空的时候就会触发此中断,可以在此中断处理函数中向 FIFO 写入数据。
PWM1 的输出引脚为GPIO1_IO8,配置步骤如下:
1、配置引脚 GPIO1_IO8
配置 GPIO1_IO08 的复用功能,将其复用为 PWM1_OUT 信号线。
2、初始化 PWM1
初始化 PWM1,初始化寄存器,配置所需的 PWM 信号的频率(往对应寄存器里写值)和默认占空比(读取周期寄存器,根据占空比确定要写入的采样寄存器的值)。
3、设置中断
因为 FIFO 中的采样值每个周期都会少一个,所以需要不断的向 FIFO 中写入采样值,防止其为空。我们可以使能 FIFO 空中断,这样当 FIFO 为空的时候就会触发相应的中断,然后在中断处理函数中当 FIFO 空中断发生以后需要向采样寄存器PWM1_PWMSAR 写入采样数据,也就是占空比值,最后要清除相应的中断标志位。
4、使能 PWM1
配置好 PWM1 以后就可以开启了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值