IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32F103驱动4.3寸液晶屏 CubeMX配置 过程易错点 -> 正文阅读

[嵌入式]STM32F103驱动4.3寸液晶屏 CubeMX配置 过程易错点


液晶屏显示基础

?

液晶屏有内嵌MCU屏和RGB屏,RGB屏要求较高 需要单片机直接控制。

其中 正点原子的4.3寸屏幕使用的液晶驱动模块是NT35510.这个芯片有多种驱动方式,比如8080并口 SPI,其中8080因为是并口所以速度较快,因此如果引脚足够的话一般使用8080驱动液晶屏.

因为STM32中只有对应SPI、IIC、CAN的通讯接口,而没有8080的通讯接口

所以stm32使用8080协议通讯方式有两种

  1. 使用普通IO口模拟8080时序(速率较慢且繁琐)
  2. 使用FSMC的NOR FLASH 模式

(因为

1、NOR FLASH的时序与8080类似

2、液晶显示屏在某种意义上也是一种存储器,只不过它会把存储器内的数据以RGB三原色的形式显示出来)


一般来说都是选择FSMC中的NOR FLASH模式

?

FSMC信号名称 ??功能

CLK????????????? 时钟

A[25:0]?????????? 地址总线(可以找出一个当作8080的D/Cx 低电平命令 高电平数据)

D[15:0]?????????? 双向数据总线

NE[x]??????????? 片选线(也就是说可以控制4个SRAM)(当作8080的片选线CSx)

NOE???????????? 输出使能(当作RDX?? 也就是8080读使能)

NWE???????????? 写使能(当作WRX??? 写使能)

NWAIT?????????? NOR 闪存要求FSMC等待的信号

NADV??????????? 地址、数据线复用时用作锁存信号

地址转换


拓展存储器大小

  1. ?

STM32f103中的拓展存储器有四个块,其中每个块又能分为四个存储区(也就是一个块可以连接4个存储器)

实际在STM32芯片内部没有这些存储空间,只是提供了映像来访问外部的存储器

需要注意的是 外部存储器在STM32外部的地址与STM32内部的地址不同。

也就是说,当访问0x6000 0000的地址时,是访问块1的存储区1[NE0被拉低]的第一个字节(对应的地址线A[25:0]对应的值是0)

当访问0x6400 0000的地址时,是访问块1的存储区2[NE1被拉低]的第一个字节(对应的地址线A[25:0]对应的值也是0)

?

可以注意到
?当数据宽度为16为时,HADDR右移一位后与FSMC地址线A相连。

所以如果定义写地址和读地址,那么如果一个是0x6000 0000 那么下一个其实是0x6000 0002(其实也就类似于一次写入或者读出了2个字节)

操作外部存储器步骤

1、初始化外部存储器的对应区域(比如初始化块1存储区0)

  1. 定义一个变量的地址在0x6000 0000 到0x9FFF FFFF中,( 使用__attribute__((at(地址))) 或者直接强制转化为指针
  2. 写这个变量时,NWE和NE[x](这里的x需要看地址位置)会被拉低

也就是说当初始化完成后,只用直接赋值对应的变量或者读取对应的变量那么单片机就会按照对应的时序进行数据传输。

液晶屏点亮实验


CubeMX配置

?

其中的NE4和A10是通过原理图的引脚得知, Data为16是因为使用的是8080并口,16位双向数据IO。


根据系统时钟72Mhz得到一个HCLK为14ns(向上去整)然后根据液晶屏的8080时序图进行计算,并填入cubeMX中(这里的Bus turn around 无意义 因为地址线和数据线没有复用)

?

?

?

过程中发生的问题以及解决方案

  1. 屏幕花屏(复位后的图像相同)

设置初始化坐标,进行清屏操作

? ? 2、屏幕花屏(复位后的图像不同)

设置在初始化工作后设置延时(这个很重要)

? ?3、初始化成功,但是无法读取ID或者设置光标失败(就是有一些指令失败)


原因是忘记keil5忘记关闭优化了,关闭之后显示正常?????

???????

?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-02 15:01:40  更:2021-10-02 15:02:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:52:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码