BearPi Std 板从入门到放弃 - 引气入体篇(11)(SPI驱动 TFT LCD(ST7789))

2023-12-22 18:36

本文主要是介绍BearPi Std 板从入门到放弃 - 引气入体篇(11)(SPI驱动 TFT LCD(ST7789)),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

SPI 驱动 ST7789V2 进行字符显示, 并且使用中文库显示中文信息。主芯片: STM32L431RCT6LED : PC13 \ 推挽输出即可 \ 高电平点亮串口: Usart1 / LPUARTSPI(与LCD数据传输) : SPI2LCD_RESET(复位引脚):  PC7 \  推挽输出即可 LCD_POWER(背光灯电源引脚): PC6 \  推挽输出即可 LCD_WR_RS(片选引脚): PB15 \  推挽输出即可 

电路原理图

TFT LCD 电路原理图

在这里插入图片描述

知识点

TFT LCD (ST7789V2)

256K Color

TFT-LCD模块是一种液晶显示器,其每一个像素上都设置有一个薄膜晶体管(TFT),以实现对每个像素的独立控制。262K Color代表的是液晶显示器上每个像素的颜色变化数量,即能够显示262,144种颜色。这种色彩深度的实现,是通过调节液晶光栅的占空比,利用人眼的视觉暂留效应来改变每个色点亮度的方式完成的。
------------------------------------------------------------------------------------------------------------

计算上,对于262K颜色,由于采用的是18位色来计算,因此每个像素由18位二进制数来控制其颜色。从0到2的18次方减1,总共可以有262,144种不同的颜色组合。具体来看,如果每个像素的颜色用8位二进制数表示,我们就叫它8位图,它可以表达2的8次方即256种颜色;如果每个像素的颜色用16位二进制数表示,我们就叫它16位图,它可以表达2的16次方即65536种颜色。

source line

Source line(源极线)是指位于液晶面板底部的一条水平线路,每个像素都有一个对应的源极线。它的作用是将来自驱动器的信号传输到像素电极上,以控制像素的亮度和颜色。
720 source line = 240*RGB (H) # 其中H代表横向

gate line

Gate line(栅极线)是指位于液晶面板顶部的另一条水平线路,每行像素都有一个对应的栅极线。它的作用是通过控制液晶分子的方向来控制光的透过程度,从而实现图像显示。
320 gate line = 320(V) # 其中V代表纵向

240*RGB (H) *320(V) 分辨率

240*RGB (H) *320(V) 表示显示器的分辨率为240像素宽,每个像素由红、绿、蓝三个子像素组成(RGB),水平方向有240个这样的像素(H表示水平方向),垂直方向有320个这样的像素(V表示垂直方向)。

Display Colors

Display Colors (Color Mode) 是指显示器的颜色模式,它决定了屏幕上显示的颜色数量和颜色深度。
Full Color: 262K, RGB=(666) max., Idle Mode Off 表示全彩模式,每个像素由红、绿、蓝三个子像素组成,总共有262,000种不同的颜色组合。在这种模式下,每个像素可以独立控制其红、绿、蓝三个通道的亮度,因此可以显示更多的颜色。同时,全彩模式的空闲模式为关闭状态,即在没有信号输入时,显示器不会自动调整颜色。这种模式适用于需要显示大量不同颜色的场合,如电视、电脑显示器等。
Color Reduce: 8-color, RGB=(111), Idle Mode On 表示减色模式,每个像素由红、绿、蓝三个子像素组成,总共只有8种不同的颜色组合。在这种模式下,每个像素只能选择其中一种颜色进行显示,因此无法显示更多颜色。同时,减色模式的空闲模式为开启状态,即在没有信号输入时,显示器会自动调整颜色以节省能源。这种模式适用于对颜色要求不高的场合,如手机、平板电脑等。

Interface Mode

IM3、IM2、IM1、IM0是液晶显示屏控制器中常用的接口模式。这些接口模式是由硬件设计者根据需求选择的,可以通过IM0、IM1、IM2这3个引脚的上下拉电阻来灵活选择芯片的总线方式。

LCD_WR_RS (CX)

Write to Register or Display RAM

ST7789 设置列地址

LCD_WR_RS (D/CX):
0 -> Write Command
1 -> Write Data
在这里插入图片描述

ST7789 设置行地址

在这里插入图片描述

ST7789 设置该区域各像素点值

在这里插入图片描述### SPI

SPI (Serial Peripheral Interface)
 串行外设接口,是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。SPI主要采用四线制:SS(Slave Select):从设备使能信号,由主设备控制。;SCK (Serial Clock):时钟信号线,由主设备发出;MOSI (Master Output Slave Input): 主设备输出 / 从设备输入引脚;MISO(Master Input Slave Output):主设备输入 / 从设备输出引脚。
CPOL和CPHA是两个与串行通信相关的控制信号。

CPOL:表示时钟的极性(Clock Polarity)。当CPOL为高电平时,表示数据在时钟的上升沿被采样;当CPOL为低电平时,表示数据在时钟的下降沿被采样。
CPHA:表示数据的相位(Clock Phase)。当CPHA为0时,表示数据在第一个边沿(上升沿或下降沿)被采样;当CPHA为1时,表示数据在第二个边沿(下降沿或上升沿)被采样。
这两个控制信号通常用于串行通信中的数据传输速率和同步方式的控制。

下图是TFT的写采样示例, WRx是上升沿 与 第二边沿采样
在这里插入图片描述

步骤

创建项目工程

参考 BearPi Std 板从入门到放弃 - 引气入体篇(1)(由零创建工程到点亮LED)

初始化引脚

  1. 初始化 LCD_RESET、LCD_POWER、LCD_WR_RS
    在这里插入图片描述
  2. 初始化SPI2
    在这里插入图片描述
    默认SPI2 SCK引脚是PB10, 电路图上是PB13, 修改一下
    在这里插入图片描述

生成项目

编译执行

添加用户代码

参考 BearPi LCD 驱动 , 将整个LCD的目录加到项目工程

	int main(){...LCD_Init();LCD_Clear(WHITE); // 清屏为白色...}

这篇关于BearPi Std 板从入门到放弃 - 引气入体篇(11)(SPI驱动 TFT LCD(ST7789))的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/525024

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C语言指针入门 《C语言非常道》

C语言指针入门 《C语言非常道》 作为一个程序员,我接触 C 语言有十年了。有的朋友让我推荐 C 语言的参考书,我不敢乱推荐,尤其是国内作者写的书,往往七拼八凑,漏洞百出。 但是,李忠老师的《C语言非常道》值得一读。对了,李老师有个官网,网址是: 李忠老师官网 最棒的是,有配套的教学视频,可以试看。 试看点这里 接下来言归正传,讲解指针。以下内容很多都参考了李忠老师的《C语言非