HAL库+stm32cubeIDE+4.3寸LCD显示器

开发板:野火霸天虎V2

IDE:stm32CUBEIDE

烧录工具:openOCD

显示器基本参数

  • 像素
  • 分辨率:
  • 色彩深度:灰度值分布
  • 显示器尺寸
  • 点距

所使用液晶控制器

带了液晶控制器芯片

所以刷新率会慢一点(没有DMA)

液晶面板控制信号

信号名称 说明
R[7:0] 红色数据
G[7:0] 绿色数据
B[7:0] 蓝色数据
CLK 像素同步时钟信号
HSYNC 水平同步信号
VSYNC 垂直同步信号
DE 数据使能信号
  • RGB信号线

    • 代表了RGB的数据
  • CLK
    • 像素同步信号,每个时钟需要刷新
  • HSYNC
    • 屏幕刷新,按行刷;一行刷新的结尾
  • VSYNC
    • 一帧图像的结尾标志

液晶时序控制

HBP:表示从水平同步信号开始到一行的有效数据开始之间的 CLK 的个数

HFP:表示一行的有效数据结束到下一个水平同步信号开始之间的 CLK 的个数

VBP :表示在一帧图像开始时,垂直同步信号以后的无效的行数

VFP:表示在一帧图像结束后,垂直同步信号以前的无效的行数

VSW :表示垂直同步信号的宽度,单位为行

HSW:表示水平同步信号的宽度,单位为同步时钟CLK的个数

在这些时间参数控制的区域,数据使能信号线“DE”都为低电平,RGB 数据线的信号无效,当“DE”为高电平时,表示的数据有效,传输的数据会直接影响液晶屏的显示区域。

触摸屏

触摸面板引出的信号线引入到GT917S 芯片,该芯片会对触摸信号进行采集并简化信号输出给外部控制器。

触摸面板的下方就是液晶面板,该液晶控制器使用的是8080接口

液晶屏的信号线及 8080 时序

NT35510 控制器根据自身的 IM[3:0] 信号线电平决定它与MCU 的通讯方式,它本身支持 SPI 及 8080 通讯方式

由图可知,写命令时序由片选信号 CSX 拉低开始,对数据/命令选择信号线 D/CX 也置低电平表示写入的是命令地址 (可理解为命令编码,如软件复位命令:0x01),以写信号WRX为低,读信号 RDX 为高表示数据传输方向为写入,同时,在数据线 D[23:0](或 D[15:0]) 输出命令地址,在 第二个传输阶段传送的是命令的参数,所以 D/CX 要置高电平,表示写入的是命令数据,命令数 据是某些指令带有的参数,如复位指令编码为 0x01,它后面可以带一个参数,该参数表示多少 秒后复位 (实际的复位命令不含参数,此处只是为了讲解指令编码与参数的区别)。 当需要把像素数据写入GRAM时,过程很类似,把片选信号CSX拉低后,再把数据/命令选择信 号线 D/CX 置为高电平,这时由 D[23:0] 传输的数据则会被 NT35510 保存至它的GRAM中。

stm32-FSMC解读

注意看下FSMC的框图,发下NOR和SRAM放一起,说明程序里这俩变量其实是结构是一样的(为啥单独拎出来讲一下,因为野火给的HAL库代码有点坑,首先是变量的定义和生成的有出入-都能用,就是无法理解,其次是忘了开写使能)

地址映射

野火所使用的LCD的MCU借口是NOR Falsh,所以要选用存储区域1,我们按照教程选了第3区域

第一个存储区域的地址

解释:存储器要是8位的话,最大支持的外设地址为0~2^26-1个地址,也就是64MB的地址,所以容量就是512Mb

如果是16位的话,最高位不用,也还是支持512Mb(至于原因,存储器是按照字节,也就是8位来寻址的,16位是要读两次)

信号建立时间

信号时序

只针对8080时序

仅仅是FSMC的地址信号线 A[25:0] 与 8080 的数据/命令选择线 D/CX 有区别。而对于 D/CX 线,它为高电平的时候表示数值,为低电 平的时候表示命令,如果能使用 FSMC 的 A 地址线根据不同的情况产生对应的电平,那么就完 全可以使用 FSMC来产生 8080 接口需要的时序了

由于 FSMC会自动产生地址信号,当使用 FSMC向 0x6xxx xxx1、0x6xxx xxx3、0x6xxx xxx5⋯这 些奇数地址写入数据时,地址最低位的值均为1,所以它会控制地址线A0(D/CX)输出高电平,那 么这时通过数据线传输的信号会被理解为数值;若向 0x6xxx xxx0 、0x6xxx xxx2、0x6xxx xxx4⋯ 这些偶数地址写入数据时,地址最低位的值均为 0,所以它会控制地址线 A0(D/CX) 输出低电平, 因此这时通过数据线传输的信号会被理解为命令,见表 27‑6。

对应代码的话,就是要有一个写指令命令和读指令命令。当然,前提是我们要设置A[25:0]只有一位生效,原因,这样,才会符合D/CX的高低电平

代码移植

使用野火配套的代码就把它的GPIO口(会使用到软件复位)和FSMC口配置一下

解释:NE3-bank3,类型NOR Flas,地址只要1位,数据位16位,我们是异步传输,不需要用到时钟或者总线

开启写方向使能,不需要进行扩展模式使用(就是写入和读取用同一个)

接下来生成代码

在液晶显示的驱动包里,把GPIO_Config和FSMC_Config注释掉,就可以用了


接下来生成代码

在液晶显示的驱动包里,把GPIO_Config和FSMC_Config注释掉,就可以用了里面定义的俩全局变量也注释掉

HAL库+stm32cubeIDE+4.3寸LCD显示器驱动移植相关推荐

  1. ESP8266-Arduino编程实例-1.44寸LCD(ST7735)驱动

    1.44寸LCD(ST7735)驱动 1.LCD介绍 液晶显示器 (LCD) 是一种平板显示器或其他电子调制光学设备,它利用液晶与偏振器的光调制特性.液晶不直接发光,而是使用背光或反射器来产生彩色或单 ...

  2. 单片机 STM32F103C8T6 cubeMX HAL库 从环境到开发 正点原子工程移植 freeRTOS

    文章目录 0 准备材料 1 闪烁PC13的小灯 2 正点原子工程移植 注意点以及细节 3 freeRTOS 3.1 LED KEY 串口1 的一个实验 0 准备材料 1.需要正点原子的HAL介绍书籍可 ...

  3. STM32F4系列W5500;(HAL库版本、W5500官网最新驱动)

    //注意按照原理图修改一下引脚 //注意按照原理图修改一下引脚 /*定义SPI作为W5500的硬件接口*/ //#define WIZ_SPIx SPI3 /* 定义W5500所用的SPI接口 */ ...

  4. STM32V107VCT6,基于HAL库的用IO口模拟I2C的0.96寸OLED驱动

    前言 作为一个初学者,当然希望有比较好的范例可以学习,但在CSDN和众多家的单片机学习网站,没发现现成的I2C模拟接口的HAL库的0.96寸的OLED驱动,经过努力,把这个代码调试出来,为此,基于技术 ...

  5. STM32标准库、HAL库特点与应用

    新手在入门STM32的时候,一般大多数都会选用标准库和HAL库,而极少部分人会通过直接配置寄存器进行开发. 对于刚入门的朋友可能没法直观了解这些不同开发发方式彼此之间的区别,本文试图以一种非常直白的方 ...

  6. GD32F4上使用HAL库实现USB虚拟串口通讯

    一直使用STM32F4搭配HAL库做项目,最近需要将软件移植至国产的GD32F4上,但兆易仅提供了标准库,并未像ST那样提供HAL库,但二者USB库又互不兼容.最后,为了原软件不做大的修改,故决定使用 ...

  7. LCD显示器参数详解

    LCD显示器     液晶显示器(LCD)英文全称为Liquid Crystal Display,它一种是采用了液晶控制透光度技术来实现色彩的显示器.和CRT显示器相比,LCD的优点是很明显的.由于通 ...

  8. STM32-GPIO学习-跑马灯实验和按键实验-寄存器版本和HAL库版本

    一.stm32跑马灯实验 a.GPIO general purpose input output 通用输入输出端口,可以做输入也可做输出,GPIO端口可通过程序配置成输入或输出. STM32FXXXI ...

  9. STM32标准库与HAL库中的Mode和Pull设置

    目录 概述 HAL库 标准库 再看HAL库 概述 最近做SDK的BSP驱动.之前使用STM32CubeMX进行开发,设计GPIO的初始化接口包括了mode.pull两个参数. 现在对接另一款国产芯片, ...

最新文章

  1. 面对疫情,在家办公的程序员如何突围
  2. c语言求阶乘和的流程图_C/C++编程笔记:C语言 rand() 随机函数,深入解析程序随机数!...
  3. python【力扣LeetCode算法题库】206-反转链表
  4. 设计模式——UML图
  5. python实现程序重启_如何让python程序重新启动到某一行?
  6. 自己动手写游戏:飞机大战
  7. rate limiter - system design
  8. 操作数组的常用方式二-----排序、查找
  9. 网站SEO优化--Flash站优化方法
  10. 怎么在中国杀死SAP
  11. 发动机关键零部件3D视觉引导自动上料和装配系统
  12. 安卓系统加速_真就这么简单让你的安卓手机变流畅?
  13. 用遗传算法解决无线传感器轮值问题(Duty Cycle)
  14. 测试wince wifi漫游的方法(参考)
  15. 10部关于数学的顶级纪录片
  16. Windows下利用WSA实现无缝运行安卓应用(最详细)
  17. 关于扩展IP地址空间的几个方案的探讨
  18. 怎么进入BAT的研发部门?
  19. 快速寻找勾股数算法的实现和优化
  20. 腾讯云安装配置数据库MySQL并且使用SQLyog连接

热门文章

  1. android 播放器评测,Android全能播放器 酷我听听新版本评测
  2. oauth2使用password模式获取access_token
  3. Wu反走样算法绘制圆(C++/MFC实现)
  4. 中国大学MOOC-陈越、何钦铭-数据结构-2022秋期末考试
  5. 【回溯法】简单装载问题与复杂装载问题
  6. tcpdump命令无法使用
  7. Vue的router配置
  8. 小学教师个人简历模板范文--带内容
  9. Istio组件以及架构
  10. 预测模型 | 8. 一致性指数 (Concordance Index, C-index) ci值 cox