当前位置: 首页 >  综合  > 正文

全球快讯:STM32系列之LCD驱动接口与驱动程序介绍

时间:2023-04-24 20:15:19     来源:硬件工程师的小世界

STM32F103系列是没有内置LCD控制器接口的,如果要驱动LCD,需要一颗LCD图形驱动IC。STM32和LCD驱动IC的接口在STM32端是FSMC,FSMC接口提供各种存储器驱动信号也提供了驱动LCD驱动IC的各种信号。

一、FSMC简介


(资料图片)

FSMC概览

如下图可以看到FSMC支持的存储器类型及提供的各种读写控制信号。

图1

2.FSMC 框图

图2

3.FSMC 内存地址空间分配

图3

二、LCD 接口

1.8080和6800接口

这两种接口类型是典型的LCD并行接口。接口信号分为:数据信号和控制信号。

数据信号支持8,9,16,18,24位等。

控制信号用来区分读、写及区分是向LCD寻址命令寄存器还是写LCD RAM数据。

控制信号定义如下:

图4

8080接口:

6800接口:

2.FSMC的LCD接口信号

图5

通过图5,可以看到FSMC提供了LCD驱动所需的全部信号。

片选有专门的硬件信号,也可以使用地址信号Ax,即空闲的地址信号任选一根使用。而LCD的RS信号也可以连接到一根地址线。

3.FSMC 和LCD 连接框图

8080类型接口

6800类型接口

4.驱动程序

以STM32F103VCT6为例,关于103VCT6的信息如下:

只能使用BANK1且Ax推荐使用16-23,STM32原理图接口连线如下:

如上图,RS接A16,CS接A17。

如图3,BANK1的基地址是0x60000000,

关于LCD驱动IC的访问模式有4种:

所有对LCD图形界面的操作都是基于这四个函数,所以实现4个函数很重要。

#define LCD_COMM_ADD ((vu16)0X60020000)

#define LCD_DATA_ADD *((vu16 *)0X60000000)

#define WriteCommand(cmd){LCD_COMM_ADD = cmd;}

#define WriteData(data){LCD_DATA_ADD = data;}

inline u8 ReadData(void)

{

return LCD_DATA_ADD;

}

inline u8 ReadCOMM(void)

{

return LCD_COMM_ADD;

}

以上代码中RS和标准接口定义是反的,是因为LCD驱动IC对RS的定义和标准就是反的。LCD驱动IC的SPEC:

另一个问题,硬件使用A16连接RS,为什么代码里体现是的0X60020000(A17)?为什么左移一位,原因在STM32中文手册有说明:

X 关闭

最新推荐

Copyright  © 2015-2022 华声纸业网版权所有  备案号:京ICP备2021034106号-36   联系邮箱:55 16 53 8 @qq.com