首页 / 行业
STM32入门学习笔记之TFTLCD显示实验3
2023-02-16 11:05:00
(3)SRAM/NOR 闪存写时序寄存器:FSMC_BWTRx(x=1~4)
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | ACCMOD | DATLAT | CLKDIV | BUSTURN | |||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
DATAST | ADDHLD | ADDSET |
Bit 29~Bit 28:访问模式(这2位只在FSMC_BCRx寄存器的EXTMOD位为1时起作用)
00:访问模式A 01:访问模式B 10:访问模式C 11:访问模式D
Bit 27~Bit 24:数据保持时间
0000:第一个数据的保持时间为2个CLK时钟周期 …… 1111:第一个数据的保持时间为17个CLK时钟周期(默认)
Bit 23~Bit 20:时钟分频比
0000:保留 0001:1个CLK周期=2个HCLK周期 0010:1个CLK周期=3个HCLK周期 …… 1111:1个CLK周期=16个HCLK周期(默认)
Bit 19~Bit 16:总线恢复时间
0000:总线恢复时间=1个HCLK时钟周期 …… 1111:总线恢复时间=16个HCLK时钟周期(默认)
Bit 15~Bit 8:数据保持时间
00000000:保留 00000001:DATAST保持时间=2个HCLK时钟周期 00000010:DATAST保持时间=3个HCLK时钟周期 …… 11111111:DATAST保持时间=256个HCLK时钟周期(默认)
Bit 7~Bit 4:地址保持时间
0000:ADDHLD保持时间=1个HCLK时钟周期 …… 1111:ADDHLD保持时间=16个HCLK时钟周期(默认)
Bit 3~Bit 0:地址建立时间
0000:ADDSET建立时间=1个HCLK时钟周期 …… 1111:ADDSET建立时间=16个HCLK时钟周期(默认)
10.4 实验例程
现有一块驱动芯片为5510的LCD驱动芯片,厂家提供初始化例程,使用STM32的FSMC功能驱动屏幕显示字符串,连接关系如下表所示。
片选CS:FSMC_NE4
写控制WR:FSMC_NWE
读控制RD:FSMC_NOE
数据命令控制RS:FSMC_A6
背光:PB0
16位并行数据:FSMC_D15~FSMC_D0
(1)创建lcd.h,并输入以下代码。
#ifndef _LCD_H_#define _LCD_H_#include "sys.h"//LCD地址结构体typedef struct{ vu16 LCD_REG ; vu16 LCD_RAM ;}LCD_TypeDef ;#define LCD_BASE ( ( u32 )( 0x6C000000|0x000007FE ))#define LCD ( ( LCD_TypeDef* ) LCD_BASE )//LCD重要参数集typedef struct { u16 width ; //LCD宽度 u16 height ; //LCD高度 u8 dir ; //横屏竖屏控制 u16 wramcmd ; //开始写gram指令 u16 setxcmd ; //设置x坐标指令 u16 setycmd ; //设置y坐标指令 }_lcd_dev ;extern _lcd_dev lcddev ; //管理LCD重要参数//LCD的画笔颜色和背景色extern u16 POINT_COLOR ; //画笔颜色extern u16 BACK_COLOR ; //背景颜色#define LCD_LED PBout(0) //LCD背光//画笔颜色#define WHITE 0xFFFF#define BLACK 0x0000 #define BLUE 0x001F #define BRED 0XF81F#define GRED 0XFFE0#define GBLUE 0X07FF#define RED 0xF800#define MAGENTA 0xF81F#define GREEN 0x07E0#define CYAN 0x7FFF#define YELLOW 0xFFE0#define BROWN 0XBC40 //棕色#define BRRED 0XFC07 //棕红色#define GRAY 0X8430 //灰色void LCD_Init( void ) ; //初始化void LCD_Clear( u16 Color ) ; //清屏void LCD_Fast_DrawPoint( u16 x, u16 y, u16 color ) ; //快速画点void LCD_ShowString( u16 x, u16 y, u8 *p ) ; //显示一个字符串#endif
注1 :关于LCD_BASE地址的定义部分,其中0x6C000000代表FSMC的SRAM块4的开始地址,0x000007FE则代表A10的偏移地址,7FE H换算成2进制就是01111111 1110,由于FSMC在16位数据总线状态下,地址需要右移一个字节,所以映射到A10A0上的地址数据就是011 1111 1111,A0恰好就是0,如果此时16位地址加1,对应的8位地址就是加2,也就是7FE+2=800,映射到A10A0上的地址就是100 0000 0000,即A10变为了1,这就实现了通过A10来控制RS的效果。我们定义的结构体也可以发现,LCD_REG对应的就是0x6C000000+0x000007FE,而LCD_RAM对应的就变成了0x6C000000+0x000007FE+0x00000002。
注2 :结构体_lcd_dev则定义了一些LCD参数,比如高度,宽度,设置命令,可以通过改变宏定义的方式来改变控制器的输出。
注3 :颜色数据。
目前的颜色数据都有RGB888,RGB666和RGB565格式,代表了R,G和B的分辨率,其中RGB888代表红,绿,蓝都是8位,可以表示16777216种颜色,但是受制于TFTLCD的数据总线宽度只有16位,所以只能够采用RGB565模式,这种模式代表红色和蓝色都是5位分辨率,绿色6位分辨率,这种模式中可以最多表示65536种颜色。文件中宏定义的颜色数据就是根据RGB888格式转换而来,一般都是放弃低2位和低1位,例如RGB888模式中某种颜色为11011110 11011110 11011111,那么转换为RGB565模式就变成了11011 110111 11011,换成16进制就是1101 1110 1111 1011=DEFB H。
最新内容
手机 |
相关内容
光耦仿真器简介和优势
光耦仿真器简介和优势,仿真器,参数,接收器,设计方案,耦合,器件,光耦仿真器是一种用于模拟光耦合器件的工具,它可以帮助工程师在设计清华大学研发光电融合芯片,算力超商
清华大学研发光电融合芯片,算力超商用芯片三千余倍,芯片,研发,商用,测试,计算,科学研究,近日,清华大学发布了一项重要科研成果,他们成直播回顾 | 宽禁带半导体材料及功
直播回顾 | 宽禁带半导体材料及功率半导体器件测试,测试,性能测试,常见,参数,可靠性,器件,宽禁带半导体材料及功率半导体器件是现代氮化镓(GaN)功率器件技术解析
氮化镓(GaN)功率器件技术解析,技术解析,器件,能力,传输,用于,高频,氮化镓(GaN)功率器件是一种新兴的EPF6016AQC208-3半导体功率器件技清华研制出首个全模拟光电智能计算
清华研制出首个全模拟光电智能计算芯片ACCEL,芯片,智能计算,模拟,清华,混合,研发,清华大学最近成功研制出了一款全模拟光电智能计算Transphorm推出TOLL封装FET,将氮化
Transphorm推出TOLL封装FET,将氮化镓定位为支持高功率能耗人工智能应用的最佳器件,支持,定位,推出,高功率,封装,器件,加利福尼亚州戈什么是调试器,调试器的组成、特点、
什么是调试器,调试器的组成、特点、原理、分类、常见故障及预防措施,调试器,分类,执行,调试,开发人员,设置,BA4558F-E2调试器是一种Transphorm 最新技术白皮书:常闭耗
Transphorm 最新技术白皮书:常闭耗尽型 (D-Mode)与增强型 (E-Mode) 氮化镓晶体管的优势对比,超过,企业,解决方案,采用,平台,产品,氮