学习目标:
将ST7789(1.69寸圆角屏SPI)驱动移植+lvgl移植+按键当作输入设备
学习内容:
- 驱动移植
- lvgl移植
- 按键移植
- 软件使用
正片开始:
先说说这块屏幕的介绍呗
ST7789屏幕是一种高性能的液晶显示屏,它具有高清晰度、高亮度、低功耗等优点。它采用了SPI接口通信,可以实现快速数据传输。该屏幕广泛应用于智能手表、智能家居、智能穿戴设备等产品中,是一种非常受欢迎的显示屏。
一个字 我选择他的原因:小!
话说回来?小有什么用???
俗话说得好,小而精美,短小精悍可以就能这么理解。最主要是人家不仅小还清晰,价格还那么实惠,干嘛不选择人家呢0.o 0.o 0.o
好了好了先看看屏幕的样子:
就是这个样子 有木有很像你手上的手表屏幕呢?HHH~~~
可是当时看到这个屏幕的时候 我引发了两个思考:
一:md 线这么少 这不能触摸 只能看 小没用 还缺少了触摸功能...不如以前用的正点原子提供的大屏还有触摸芯片
二:圆角好看是好看 嘿嘿~~~ 哦?不对?像素点(0,0)在哪里? 是个考究的问题 不是方方正正的 为啥被称作240*280呢0.0 我直接懵逼
ok 先解决第一个问题 :找到了另一块有触摸芯片的屏幕
类似于这个 但是这个屏幕麻烦点就在于 需要勾吧转接板 FPC转排针的 家里没焊接工具 那就只能忍忍洛
ok 再解决第二个问题,当然我后来是驱动成功了,所以我测试了一下(0,0)在哪里 这个点直接被吃了 相当于最外的轮廓是240*280 圆角是被吃了 可以理解被(偷工减料)了0.0,类似于用偷工减料换取的艺术 这样形容很优雅
这样我们就开始入手他 用什么驱动?看引脚就知道SPI通信嘛? SPI你会吗?好好好 你会 但我目前不是很会 我只是想用这个屏幕 则----某宝商家要源码呀!
心路历程os:要到源码后的我 并不是很开心,因为他用的是软件spi! 男人追求的是速度!速度!你用个软件spi怎么能行,则完全没用过spi的我励志 要开始把软件spi移植成硬件spi!
屏幕驱动的移植:
初始化屏幕的.h:
无脑替换:
#include "main.h"#include "spi.h"
#include "gpio.h"
看不惯标准库的函数,无脑替换成HAL库的:
#define LCD_RES_Clr() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,0)//RES
#define LCD_RES_Set() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,1)#define LCD_DC_Clr() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,0)//DC
#define LCD_DC_Set() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,1)#define LCD_CS_Clr() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,0)//CS
#define LCD_CS_Set() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,1)#define LCD_BLK_Clr() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,0)//BLK
#define LCD_BLK_Set() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,1)
<