STM32系列之LCD驱动接口与驱动程序介绍

电子说

1.2w人已加入

描述

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中文手册有说明:

控制器

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分