Zephyr触摸屏驱动实现教程

在 RTOS中有设备驱动模型这个概念,触摸屏也是智能硬件中常见的一个交互硬件,为了让大家可以结合实例进一步了解 RTOS中设备驱动的使用,我们推出了《触摸屏驱动实现教程》 。
本次课程由聆思科技资深解决方案专家覃晓庆讲解,通过本课程我们将会了解:
通过这节课,大家在掌握嵌入式触摸屏驱动原理的同时,如果你手头恰好有触摸屏以及支持 RTOS的开发板,可以尝试将屏幕在开发板上适配运行起来 。
实战中使用的是聆思命令行指令和实例,可以参考《聆思CSK6开发工具简介》进行一键部署 。进行本文的学习前可以先进行《设备树保姆级上手教程【下】》中编写LCD显示屏节点的实践 。
CSK6 显示套件信息
显示屏型号:
尺 寸:2.8寸
分辨率:320*240
触摸屏型号:
实现屏幕显示 相关文件
以下为配置相关的文件,文件的修改和使用可以参考视频解说
驱动调用/配置
我们以应用层调用接口写入颜色块数据到显示屏的实现过程为示例看驱动的调用流程 。
显示屏的驱动中实现了接口,并通过//.h封装调用接口供上层应用使用 。
注意:
在csk6 sdk的/目录中可看到sdk已完成了、等型号屏显设备驱动的适配,开发者只需要在应用开发中完成驱动的配置即可使用显示屏功能 。
实战创建
CSK6 SDK提供了的,在这个例程中,主程序对显示屏进行了初始化,并依次展示简单图形的绘制和图形的动态灰度调整功能 。
实战中使用的是聆思命令行指令,可以参考《聆思CSK6开发工具简介》进行一键部署
的获取方式:lisa zep
路径: → csk6 →→
进行 显示屏SPI引脚定义:
1、打开\\. 文件;
2、将& 的配置替换为以下内容后保存 。
&csk6011a_nano_pinctrl{pinctrl_spi0_sclk_default: spi0_sclk_default {pinctrls = <&pinmuxb 1 6>;};pinctrl_spi0_mosi_default: spi0_mosi_default {pinctrls = <&pinmuxb 10 6>;};pinctrl_spi0_miso_default: spi0_miso_default {pinctrls = <&pinmuxa 17 6>;};pinctrl_spi0_cs_default: spi0_cs_default {pinctrls = <&pinmuxb 0 6>;};};
验证配置:
进入目录,执行编译和烧录指令后可以看到如下界面,且右上角色块循环变化颜色
执行编译:lisa zep build -b
烧录指令:lisa zep flash
添加显示屏自定义驱动
在实际项目中我们可以把LCD屏的驱动放在应用项目中去维护,按以下几个步骤就可以实现 。(详细讲解请见相关视频)
1.添加自定义LCD 屏的设备树绑定文件: ,.yaml
2.在应用项目下增加自定义LCD 屏的驱动文件:
.c
.h
3.在应用项目下增加自定义LCD 屏的文件:
4.在.txt添加屏幕驱动的文件路径
list(
${_DIR}//
5.在应用项目下/.增加自定义LCD 屏的设备树配置 。
6.添加的文件结构如下所示
示例代码获取地址:项目 · 覃晓庆 /·
或通过支持简介获得对应代码支持
实现屏幕触摸 相关文件
以下为配置相关的文件,文件的修改和使用可以参考视频解说:
驱动调用/配置
在csk6 sdk的/目录中可看到sdk已完成了(.c) 、(.c)等型号触摸屏设备驱动的适配,开发者只需要在应用开发中完成驱动的配置即可使用触摸屏功能 。
下面是应用层通过触摸回调接口获取触摸点坐标的实现过程 。
创建
CSK6 SDK提供了Kscan的,在这个Kscan例程中,主程序对触摸屏初始化,注册触摸事件的回调,通过回调结果获取触摸点的坐标并输出日志 。
触摸屏IIC引脚定义
文件修改参考
&csk6011a_nano_pinctrl{pinctrl_i2c0_scl_default: i2c0_scl_default{pinctrls =