小谈液晶LED显示及FSMC
来源:互联网 发布:明朝朝鲜知乎 编辑:程序博客网 时间:2024/05/22 08:26
小谈液晶LED显示及FSMC time:2014-3-25
只要是数字信号处理电路,就必须有时钟信号。它以明显过或是非明显的方式存在着,或是以婉约或非婉约的方式体现着。
在液晶面板中,像素时钟是一个非常重要的时钟,像素时钟是我平率与液晶面板的工作模式有关。当液晶频率越高时,它的像素频率也基本越高。在一行内,像素时钟的个数与液晶平面内一行所拥有的像素点相等。例如:800*480的液晶面板,一行有800个像素,则一行中(对应有效视屏区间)像素时钟也是1024个。
无论对TTL面板还是对于LVDS面板,像素时钟信号都有以下两个方面:
1.指挥RGB总线按顺序传输。
2.确保数据传输的正确性,无论是驱动板电路,还是驱动板电路
(图1)
(本图来源于数据手册)
以JD70MD-AT070TN92为例:
DCLK是像素时钟信号,
VS是帧同步信号
HS是行同步信号
DE是使能信号(仅使能时采样数据)
(图2)
典型时序图如图2:
分析图2,在使用液晶与tft控制器时,需要配置以下时序参数:
1.像素时钟配置上升沿或是下降时触发采样RGB总线
2.配置基本时钟信号,分频倍频
扫描一帧所需的时间:((VSPW+1)+(VBPD+1)+( LINEVAL+1)+(VFPD+1))个行时间。
扫描一行所所需的时间:((HSPW+1)+(HSPD+1)+(HFPD+1)+ (HOZVAL+1))个VCLK时间。
而一个VCLK时间由LCD寄存器VIDCON0内的CLKVAL决定: PCLK/(CLKVAL+1)
因此扫描一帧所需的时间:T=[(VSPW+1)+(VBPD+1)+(LINEVAL+1)+(VFPD+1)]*[(HSPW+1)+(HSPD+1)+(HFPD+1)+ (HOZVAL+1)]* PCLK/ (CLKVAL+1)
STM32的FSMC选择
MCU与TFT控制芯片相关的连线如下:
C S:用于片选
RS:用选择数据或是指令
D0~D15:数据信号
A0~A25:26根地址线
RD/WD:读写信号
*WAIT#:控制器反馈信号(告知MCU,tft是否繁忙)
为了使开发人员方便开发,ST在芯片设计上做足了功夫,但芯片手册又写得十分模糊,无形之中给开发人员增加了不少难度。我找了不少资料作了不少功课自认为能把FSMC部分说的清楚。
FSMC——FLEXIBLE SRAM MOMERY CONTROLLER,即灵活的静态储存器控制器,首先解释这个名词。什么叫静态存储器,内存分为两种:
1、DRAM 动态存储器
2、SRAM 静态存储器
SRAM,是一种昂贵的存储器,其速度极快紧跟CPU的存储速度,快于DRAM,快于磁盘。
一般我们PC机用的内存就是DRAM,其价格相对于SRAM廉价很多,存储速度也慢很多。这里用SRAM用于缓存视屏存储数据,其一秒可能刷新数百次,必须足够快的速度以满足需求。
FSMC共256M,这里我们只需要熟悉BANK1,也就是0x6000 0000~0x6fff ffff,bank1中也分NE1~4,其基分别 为、:0x6000 0000 \0x6400 0000
0x6800 0000
0x6C00 0000
这里NE的选择,可以在FSMC的配置代码中选择。
如
/* Enable FSMC Bank1_SRAM Bank */
//FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM3, ENABLE);
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);
FSMC的好处就是你一旦设置好之后,WR(写)、RD(读)、DB0-DB15这些控制线和数据线,
都是FSMC自动控制的。打个比方,当你在程序中写到:
*(volatile unsigned short int *)(0x60000000)=val;
那么FSMC就会自动执行一个写的操作,其对应的主控芯片的WE、RD这些脚,就会呈现出写的时序出来(即WE=0,RD=1),数据val的值也
会通过DB0-15自动呈现出来(即FSMC-D0:FSMC-D15=val )。地址0x60000000会被呈现在数据线上
注:信号分两种
1、数据信号
2、指令信号
当RS置低电平时候为传输数据,的那个RS为高电平时传输指令
连接好相应的接线之后,要是我们想传输指令,假设A16接RS信号,那么我们要将地址改成0x60020000.如下:
*(volatile unsigned short int *)(0x60020000)=val;
那么我们要解决就是为什么A16对应0x60020000。
A16对应第17 条地址线,那么2*2^16,也就是2*(2^4)^4 = 0x20000,
假如使用NE4接到为LCD的片选CS上,那么就对应基地址 0x6C000000,
如果RS接到地址线的 A0上,那么当 RS为0时对应的地址就是 LCD_REG = 0x6C000000,(其实你用0x6CFFFFF0是一样的,因为只用到一根地址线).
RS为1时对应的地址就是 LCD_RAM =0x6C000001,(0x6CFFFFF1一样对应 LCD_RAM,因为它一样对应 RS=1).
如果 RS接到 其他地址线上,情况是类似的。
比如接到 An上,那么
LCD_REG= 0x6C000000,
LCD_RAM= 0x6C000000 | (1<<n)
注意这个地址不是唯一的,只要这个地址能寻址到 BANK1 的 NE4上而且使 RS=0,那么就是 LCD_REG,使 RS=1,就是LCD_RAM.
- 小谈液晶LED显示及FSMC
- STM32 ----小谈FSMC RS选
- STM32 ----小谈FSMC RS选择
- STM32 ----小谈FSMC RS选择
- STM32 ----小谈FSMC RS选择
- STM32之FSMC的液晶使用
- 小谈点阵液晶和测量曲线
- 三星led液晶拼接屏
- stm32 FSMC-TFTLCD显示
- 液晶汉字显示编码及字模形成程序的使用
- STM32 FSMC LCD 液晶的驱动—ILI9320
- STM32 FSMC LCD 液晶的驱动—ILI9320
- 液晶 CRT显示原理
- 仿液晶数字显示
- 1602液晶静态显示
- 1602液晶滚动显示
- 1602液晶动态显示
- 1602液晶静态显示
- 基于c++的builder模式初探。
- writetofile(保存自定义目录下不成功)
- SQL中left join, right join有什么区别?
- Wishbone总线快速了解
- 个人搜索记录
- 小谈液晶LED显示及FSMC
- 【数据结构】哈希表
- NSUndoManager的一点学习记录
- 虚拟机基准测试工具
- hdu1231 最大连续子序列
- Oracle 创建用户、修改用户信息、为用户分配权限、为用户分配表空间配额、删除用户
- NPOI导出excel,插入图片
- 科学地生活追求
- 算法学习二----求子数组的最大和