RV1106点亮1.44寸SPI接口tftlcd

         最近入手了一块微雪的幸狐RV1106微型Linux开发板,具体型号为Luckfox Pico Max,这是一款集成ARM Cortex-A7/RISC-V MCU/NPU/ISP等处理器。

        根据微雪官网的wiki入门指导测试了一下,功能一切正常,感觉很nice,这款板子真的是麻雀虽小五脏俱全呀。

        正好手头上有一块SPI接口的1.44寸tftlcd,分辨率是128*128的,驱动器IC是ST7735。微雪官方的指导文档里有一个控制器IC为ST7789的1.3寸LCD,所以我想应该可以参考这部分将我的1.44寸LCD驱动起来。

        开发板及LCD如下图:

        引脚连接如下:        

LCD     RV1106
VCC ---  39(VSYS)
GND ---  38(GND)
LED ---  17(GPIO2_B0_D)
CLK ---  14(GPIO1_C1_D)
SDI ---  15(GPIO1_C2_D)
RS  ---  11(GPIO2_B1_D)
RST ---  16(GPIO1_C3_D)
CS  ---  12(GPIO1_C0_D)        

        参考微雪的参考文档修改了设备树、配置文件开启了相关驱动支持。如下:

设备树:rv1106g-luckfox-pico-pro-max.dts

/ {model = "Luckfox Pico Max";compatible = "rockchip,rv1103g-38x38-ipc-v10", "rockchip,rv1106";/*LCD_BL*/gpio2pb0:gpio2pb0 {compatible = "regulator-fixed";pinctrl-names = "default";pinctrl-0 = <&gpio2_pb0>;regulator-name = "gpio2_pb0";regulator-always-on;};/*LCD_DC*/gpio2pb1:gpio2pb1 {compatible = "regulator-fixed";pinctrl-names = "default";pinctrl-0 = <&gpio2_pb1>;regulator-name = "gpio2_pb1";regulator-always-on;};/*LCD_RES*/gpio1pc3:gpio1pc3 {compatible = "regulator-fixed";pinctrl-names = "default";pinctrl-0 = <&gpio1_pc3>;regulator-name = "gpio1_pc3";regulator-always-on;};
};/**********GPIO**********/
&pinctrl {/*LCD_BL*/gpio2-pb0 {gpio2_pb0:gpio2-pb0 {rockchip,pins =	<2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;};};/*LCD_DC*/gpio2-pb1 {gpio2_pb1:gpio2-pb1 {rockchip,pins =	<2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;};};/*LCD_RES*/gpio1-pc3 {gpio1_pc3:gpio1-pc3 {rockchip,pins = <1 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;};};
};&spi0 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&spi0m0_cs0 &spi0m0_pins>;			st7735r@0{						status = "okay";compatible = "sitronix,st7735r"; reg = <0>;			spi-max-frequency = <48000000>;			fps = <30>;buswidth = <8>;debug = <0x7>;led-gpios = <&gpio2 RK_PB0 GPIO_ACTIVE_LOW>;//BLdc = <&gpio2 RK_PB1 GPIO_ACTIVE_HIGH>;		//DCreset = <&gpio1 RK_PC3 GPIO_ACTIVE_LOW>;	//RES};
};&pinctrl {spi0 {/omit-if-no-ref/spi0m0_pins: spi0m0-pins {rockchip,pins =/* spi0_clk_m0 */<1 RK_PC1 4 &pcfg_pull_none>,/* spie_miso_m0 */// <1 RK_PC3 6 &pcfg_pull_none>,/* spi_mosi_m0 */<1 RK_PC2 6 &pcfg_pull_none>;};};
};

配置文件:luckfox_rv1106_linux_defconfig

在末尾添加如下


CONFIG_FB_TFT_ST7735R=y
CONFIG_SPI_MASTER=y
CONFIG_FB=y

           重新编译kernel后下载至开发板中,启动开发板后/dev里生成了fb0设备,如下:

这说明设备已经添加成功了。

        通过cat /dev/urandom > /dev/fb0测试一下花屏功能,发现屏幕没有任何反应,仔细检查发现屏幕背光并没有点亮,万用表测量背光控制引脚电平为0v。这里我怀疑就是背光的问题,所以将LCD的背光控制引脚直接连接至3.3V引脚上,屏幕出现了花屏。又通过cat /dev/zero  > /dev/fb0测试一下清屏功能也是正常,这就说明触摸屏的驱动应该是没有问题了,现在需要解决的是背光引脚控制电平的问题了。

        想到之前使用其他linux板子驱动RGB触摸屏时都有一个backlight背光驱动的,我想应该也可以参考那个修改一下设备树来实现背光引脚的驱动。所以在kernel代码里全局搜索backlight,发现了好多相关的设备树配置方式,所以参考它们修改了一下rv1106g-luckfox-pico-pro-max.dts,如下:

/ {model = "Luckfox Pico Max";compatible = "rockchip,rv1103g-38x38-ipc-v10", "rockchip,rv1106";/*LCD_BL*/// gpio2pb0:gpio2pb0 {// 	compatible = "regulator-fixed";// 	pinctrl-names = "default";// 	pinctrl-0 = <&gpio2_pb0>;// 	regulator-name = "gpio2_pb0";// 	regulator-always-on;// };backlight:backlight{		compatible = "gpio-backlight";pinctrl-names = "default";pinctrl-0 = <&gpio2_pb0>;gpios = <&gpio2 RK_PB0 GPIO_ACTIVE_HIGH>;default-on;};/*LCD_DC*/gpio2pb1:gpio2pb1 {compatible = "regulator-fixed";pinctrl-names = "default";pinctrl-0 = <&gpio2_pb1>;regulator-name = "gpio2_pb1";regulator-always-on;};/*LCD_RES*/gpio1pc3:gpio1pc3 {compatible = "regulator-fixed";pinctrl-names = "default";pinctrl-0 = <&gpio1_pc3>;regulator-name = "gpio1_pc3";regulator-always-on;};
};/**********GPIO**********/
&pinctrl {/*LCD_BL*/gpio2-pb0 {gpio2_pb0:gpio2-pb0 {rockchip,pins =	<2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;};};/*LCD_DC*/gpio2-pb1 {gpio2_pb1:gpio2-pb1 {rockchip,pins =	<2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;};};/*LCD_RES*/gpio1-pc3 {gpio1_pc3:gpio1-pc3 {rockchip,pins = <1 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;};};
};&spi0 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&spi0m0_cs0 &spi0m0_pins>;		st7735r@0{						status = "okay";compatible = "sitronix,st7735r"; reg = <0>;			spi-max-frequency = <48000000>;			fps = <30>;buswidth = <8>;debug = <0x7>;led-gpios ; // = <&gpio2 RK_PB0 GPIO_ACTIVE_HIGH>;//BLdc = <&gpio2 RK_PB1 GPIO_ACTIVE_HIGH>;		//DCreset = <&gpio1 RK_PC3 GPIO_ACTIVE_LOW>;	//RESbacklight = &backlight;};
};&pinctrl {spi0 {/omit-if-no-ref/spi0m0_pins: spi0m0-pins {rockchip,pins =/* spi0_clk_m0 */<1 RK_PC1 4 &pcfg_pull_none>,/* spie_miso_m0 */// <1 RK_PC3 6 &pcfg_pull_none>,/* spi_mosi_m0 */<1 RK_PC2 6 &pcfg_pull_none>;};};
};

        再次重新编译kernel后下载至开发板后测试,发现还是和之前一样的情况,但是/sys/class/里已经又backlight文件了,说明backlight驱动是添加成功了,那问题应该是出现引脚控制上了,全局搜索gpio-backlight,发现这个在gpio_backlight.c文件里出现了,但是这个文件并没有被编译。

        好了,出现这个问题的原因应该是找到,那就启用这个gpio_backlight的功能吧,在配置文件luckfox_rv1106_linux_defconfig末尾处添加


CONFIG_BACKLIGHT_GPIO=y

        再次编译kernel后下载进开发板,发现LCD可以正常点亮,测试花屏和清屏功能都正常。到此我手上的1.44寸LCD驱动是调试完成了。可以通过如下命令控制背光打开和关闭。

# 关闭
echo 0 > /sys/class/backlight/backlight/brightness
# 打开
echo 1 > /sys/class/backlight/backlight/brightness

        测试视频

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/681345.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows端口复用

1. 概述 使用 HTTP.sys 中的 Net.tcp Port Sharing 服务&#xff0c;配合 WinRM 实现端口复用。 优点&#xff1a; HTTP.sys 为 windows 原生机制&#xff0c; WinRM 为 windows 自带功能&#xff0c;动作较小&#xff0c;不易触发主 动防御。 需要管理员权限。 2. 原理 (…

C语言:环形链表

1.例子1&#xff1a;环形链表 142. 环形链表 II - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;我们先定义两个变量slow和fast&#xff0c;slow每次走一步&#xff0c;fast每次走两步&#xff0c;如果链表是环形链表&#xff0c;那么必定存在fast不会走到链表的最后…

QT功能 实现静态内容国际化实验

文章目录 第一步&#xff1a;新建一个QT工程第二步&#xff1a;添加控件第三步&#xff1a;在pro文件中添加内容第四步&#xff1a;更新文件第五步&#xff1a;打开QT的Linguist第六步&#xff1a;添加翻译内容第七步&#xff1a;回到QT Creator中添加文件第八步&#xff1a;给…

因表别名引用错误导致查询SQL执行时间长未出结果

问题描述&#xff1a; 项目组人员反馈在执行一条提取数据SQL时执行很慢&#xff0c;每次执行一段时间就报超时&#xff0c;要求帮忙提取下。 解决过程&#xff1a; 项目组人员发来SQL后&#xff0c;看了下SQL&#xff0c;没什么问题&#xff0c;就在客户端上执行了下&#xff0…

Python专题:三、数字和运算(2)

目录 一、数学运算 二、赋值运算 一、数学运算 1、运算符号 加法 减法- 乘法* 除法/ 计算机中浮点数表示有精度限制&#xff0c;Python有限&#xff0c;所以近似取数 2、除法取整// Python2中 整数/整数 值为整数 Python3中 整数/整数 整数or浮点数 //计算除法对结果取…

css backdrop-filter 实现背景滤镜

官方给出的定义是&#xff1a;backdrop-filter属性允许您将图形效果&#xff08;如模糊或颜色偏移&#xff09;应用于元素后面的区域。因为它适用于元素后面的所有内容&#xff0c;所以要查看元素或其背景的效果&#xff0c;需要透明或部分透明。 大致分为以下10种&#xff1a…

【网络编程】Tomcat | 目录结构 | HTTP服务器

文章目录 Tomcat一、Tomcat的目录结构 Tomcat Tomcat是一个HTTP服务器 使用HTTP进行通信&#xff0c;涉及到HTTP客户端&#xff08;浏览器、Postman、爬虫等待&#xff09;和HTTP服务器。 根据现成的HTTP服务器进行二次开发。 已经将怎么处理HTTP请求、如何构造HTTP响应都封…

网络工程师必备:静态路由实验指南

大家好&#xff0c;这里是G-LAB IT实验室。今天带大家学习一下华为静态路由实验配置 01、实验拓扑 02、实验需求 1.R1环回口11,1,1.1模拟PC1 2.R2建立2个环回口模拟Server server-1: 22,1,1.1 server-2: 44.1.1.1 3.要求使用静态路由实现全网互通 PC1去往server-1从R3走…

【Java EE】网络原理——UDP

目录 1.应用层 2.传输层 2.1端口号 2.1.1端口号的范围划分 2.1.2一个端口号可以被多个进程绑定吗&#xff1f; 2.1.3一个进程可以绑定多个端口号吗&#xff1f; 3.UDP协议 3.1UDP的格式 3.1.1 UDP的源端口号 3.1.2 UDP的目的端口号 3.1.3 UDP长度 3.1.4UDP校验和 3…

故障——蓝桥杯十三届2022国赛大学B组真题

问题分析 这道题纯数学&#xff0c;考察贝叶斯公式 AC_Code #include <bits/stdc.h> using namespace std; typedef pair<int,double> PI; bool cmp(PI a,PI b){if(a.second!b.second)return a.second>b.second;return a.first<b.first; } int main() {i…

上班不想用脑子写代码了怎么办?那就试试Baidu Comate啊宝贝

本文目录 前言1、视频编程实战1.1、熟悉代码库中的代码1.2、参考现有代码编写新代码 2、下载使用教程3、使用体验3.1、AutoWork 产品测评3.2、解决有关ajax请求后重定向问题3.3、询问编程相关知识3.3.1、cookie和session的区别与联系3.3.2、数据库中主键外键的相关知识 4、问题…

《大疆二次开发》EMQX和MQTT部署

EMQX 服务器 基础知识 概念 EMQX (Erlang/Enterprise/Elastic MQTT Broker) &#xff1b;EMQ/EMQX就是MQTT Broker的一种实现&#xff1b;一款开源的大规模分布式 MQTT 消息服务器&#xff0c;功能丰富&#xff0c;专为物联网和实时通信应用而设计&#xff1b;支持多种协议&…