之前使用了 fbtft 成功驱动了lcd st7735r,现在尝试下驱动 ili9341,

配置

跟之前用 fbtft 驱动 st7735r 一样,先用 make menuconfig 配置内核,添加 fbtft 。然后修改设备树,同样是在设备树spi5下添加:

ili9341@0{
compatible = "adafruit,yx240qv29", "ilitek,ili9341";
reg = <0>;
spi-max-frequency = <32000000>;
buswidth=<8>;
dc-gpios = <&gpiof 3 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpiod 13 GPIO_ACTIVE_HIGH>;
rotation = <270>;
bgr;
};

编译,更新板子上的内核跟设备树,启动,屏由白变黑,说明驱动应该是没问题的,看下启动信息中跟fb有关的部分:

root@stm32mp1:~# dmesg | grep "fb"
[ 2.091619] fbtft_of_value: buswidth = 8
[ 2.416500] graphics fb0: fb_ili9341 frame buffer, 240x320, 150 KiB video memory, 16 KiB buffer memory, fps=20, spi0.0 at 32 MHz

可以看到LCD的相关信息。

简单测试

配置一下,开机的时候显示Linux Logo:

显示随机数:

系统自带工具

在测试过程中,无意中发现系统中自带了 framebuffer 测试工具:

  • 使用 fb-test 测试

结果如下:

这个工具可以用来测试LCD驱动正不正常

  • 使用fb-rect

    运行该命令后,LCD上一直都在显示不同尺寸不同颜色的方块:

  • 使用fb-perf

    运行结果如下:

littlevgl

littlevgl是一个开源的嵌入式GUI库,详细信息查看官网:https://littlevgl.com/

littlevgl 官方已经有支持Linux,工程地址为:https://github.com/littlevgl/lv_linux_frame_buffer

首先下载下来:

git clone --recursive https://github.com/littlevgl/lv_linux_frame_buffer.git

下载下来后,先修改lv_conf.h,以下3个参数需要跟所用LCD一样:

在文件lv_drv_conf.h中,确认程序中所用设备是否为所用设备对应的fb设备,如下图,程序中默认是用 fb0,如果不是 fb0,需要做相应修改:

然后直接输入 make,编译,编译的部分信息如下:

编译完成后把编译出来的可执行文件 demo 拷贝到 STM32MP157c 的板子上,并运行结果如下:

玩转STM32MP157- 使用fbtft驱动 lcd ili9341的更多相关文章

  1. 玩转STM32MP157- 使用fbtft驱动 lcd st7735r

    什么是fbtft fbtft 在 github 中的介绍是" Linux Framebuffer drivers for small TFT LCD display modules,翻译过来 ...

  2. 用普通IO驱动LCD的控制方法-松瀚汇编源程序

    /*************************************** 本例程为IO直接驱动LCD的方法 以下是松瀚MCU汇编源程序 **************************** ...

  3. 痞子衡嵌入式:记录i.MXRT1060驱动LCD屏显示横向渐变色有亮点问题解决全过程(提问篇)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1060上LCD横向渐变色显示出亮点问题的分析解决经验. 痞子衡前段时间在支持一个i.MXRT1060客户项目时遇到了LCD ...

  4. STM32驱动LCD原理

    TFTLCD即薄膜晶体管液晶显示器.它与无源TN-LCD.STN-LCD的简单矩阵不同,它在液晶显示屏的每一个像素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性 ...

  5. STM32驱动LCD实战

    前段时间写了<STM32驱动LCD原理>和<STM32的FSMC外设简介>两篇文章,本文将对STM32驱动LCD进行实战应用.LCD是深圳市拓普微科技开发有限公司的LMT028 ...

  6. 基于V7的emWin多屏显示方案模板,同时驱动LCD和OLED例程

    说明: 1.多屏驱动跟多图层驱动是类似的,可以使用函数GUI_SelectLayer做切换选择. 2.为了避免OLED闪烁问题,创建一个128*64bit的显存空间,然后使用emWin的GUI_TIM ...

  7. FPGA驱动LCD显示红绿蓝彩条

    实验目的:先简单熟悉LCD灯的驱动和时序图的代码实现.设计功能是让LCD显示红绿蓝三种颜色,即三个彩带.本次实验比较容易实现,主要是对LCD驱动时序图的理解和时序参数的配置. 实验条件:1.LCD原理 ...

  8. 创龙DSP6748开发板驱动LCD屏

    1. DSP6748内部有2个LCD控制器,Raster Controller 光栅控制器和the LCD Interface Display Driver (LIDD) controller 控制器 ...

  9. MSP430常见问题之LCD 显示驱动类

    Q1:晶体一般都是接32768,然后使用液晶很正常.我打算将晶体接6M的替换32768,那么液晶还能正常显示吗A1:看你所用的LCM 模块时序极限是多少HZ,然后看6M情况下,MSP430去驱动LCM ...

随机推荐

  1. Django(18)聚合函数

    前言 orm模型中的聚合函数跟MySQL中的聚合函数作用是一致的,也有像Sum.Avg.Count.Max.Min,接下来我们逐个介绍 聚合函数 所有的聚合函数都是放在django.db.models ...

  2. PostgreSQL实现字符串拼接

      在日常工作中会遇到将多行的值拼接为一个值展现,如果使用过Oracle数据库,可以使用list_agg的聚合函数来实现.那么PostgreSQL也有这样的功能,函数为string_agg.具体用法如 ...

  3. 26.Set

    1.Set集合 1.1Set集合概述和特点[应用] 可以去除重复 存取顺序不一致 没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取,删除Set集合里面的元素 1.2Set集合的使 ...

  4. [Linux]常用命令、组合命令以及输入输出重定向

    [Linux]常用命令.组合命令以及输入输出重定向 2020-03-10阅读 1580   原创文章 文章目录 0.切换目录 1.复制文件和目录`cp` 1.1.复制文件 1.2.复制目录 1.3.扩 ...

  5. Docker Swarm(三)Service(服务)分配策略

    Service的分配原則 預設分散至多個nodes上 使用率較低的node優先配置 使用者可自行定義此分配模式 Service分配的3種方式 Service Constraints (服务约束) 参考 ...

  6. suse11sp3、suse12 安装 zabbix-agent

    1.添加repo源 suse11SP3zypper addrepo http://download.opensuse.org/repositories/server:/monitoring/SLE_1 ...

  7. shell基础之更改IP

    要求: 显示所有网卡及其对应的IP地址,并可更改IP相关内容使其生效. 1 #!/bin/bash 2 #获取本机网卡和IP 3 while : 4 do 5 network=$(ifconfig | ...

  8. 7.json&pickle及软件目录结构规范

    json(可以序列化简单数据类型,用于不同语言之间的数据交换传输)import jsonjson.dumps() 写入json.loads() 读取json.dump(info,f) == f.wri ...

  9. shell字符截取

    shell字符截取 截取文本中以vm开头的单词 grep -o vm.* text | cut -d' '  -f1 截取活动主机

  10. SystemVerilog MCDF比较器

    checker肩负了模拟设计行为和功能检查任务. 功能: 缓存从各个monitor手机到的数据. ton过比较器检查实际收集到的DUT输出端口数据是否同reference module(参考模型)产生 ...