目录
概述
本文主要是使用AT32F403A开发板,基于V2库实现xmc 使用16bit驱动LCD。
串口工具使用的Atlink-ez自带的串口功能.
工程建立、调试工具配置在前面章节有详细介绍。
硬件
硬件方面使用的是参考官方AT32F437 SURF板子而设计的一个AT32F403A开发板,板子上的芯片是AT32F403AVGT7的型号,开发板上面还板载了一个atlink-ez的仿真器,atlink-ez除了可以在线仿真和下载之外还有一个串口的功能,硬件上是通过跳线帽接到了MCU的串口1,pa9/10上面。
如下图是开发板pcb图,以及硬件资源。(左边上角的就是atlink-ez,用usb线接到pc即可):
如下为实物图:
本章是xmc驱动LCD,LCD的驱动芯片是ILI9488,尺寸为3.5寸,分辨率为320*480,触摸控制芯片为gt911并通过iic通信,相关原理图如下:
XMC
外部存储器控制器XMC模块,这个模块和STM32的FSMC是一样的。
XMC的详细入门资料可以看这个文档 :xmc入门资料
AT32F403A系列集成了外部存储器控制器XMC模块。它具有2个片选输出,支持复用信号的 NOR/PSRAM存储器和16位或8位NAND闪存存储器。
主要功能:
写入FIFO;
代码可以在复用信号的NOR/PSRAM片外存储器运行。
XMC也可以配置成与多数图形LCD控制器连接,它支持Intel 8080和Motorola 6800的模式。
软件
由于 LCD 屏的引脚和 XMC 接口有很大一部分的重合,因此 XMC 接口还可以用于驱动 LCD 屏,不同的地方就是LCD的命令和数据控制脚,LCD select data/command:数据/命令选择信号,用于指示数据总线上是数据还是命令。高电平表示数据和参数,低电平表示命令。而xmc没有。
地址线
这里我们是使用xmc驱动sram的方式,并且使用一个地址线接到LCD的命令和数据控制脚,本章的硬件设计是使用的XMC_A16。
地址设定
XMC的A16连接到LCD的D/C选择。 由于此处使用的是bank1,操作基地址为0x60000000。 那么向LCD发送命令时,XMC写入地址应选择0x60000000;发送数据/ 参数时,XMC写入地址为(0x60000000 | 0x20000)。
基地址
这里需要配合芯片的地址映射图来说明,如下图中是AT32F403A的xmc地址映射图。可以看出bank1的地址是从0x60000000~0x60FFFFFF,16MB的大小,同时bank1对应的xmc_ne是ne1,硬件xmc_ne是使用的xmc_ne1,所以基地址是0x60000000。
地址线地址计算
发送数据的写入地址跟所使用的地址线和xmc的数据总线有关。
当总线为16bit模式时计算方式为:2的(地址线序数+1)次方,比如我们使用的A16,那么就是2的(16+1)次方,也就是0x20000,所以发送数据的写入地址为(0x60000000 | 0x20000)。
当总线为8bit模式时计算方式为:2的(地址线序数)次方,比如我们使用的A16,那么就是2的16次方,也就是0x10000,所以发送数据的写入地址为(0x60000000 | 0x10000)。
宏定义数据/命令地址:
从硬件设计原理图来看,我们是使用xmc_ne1,也就是bank1,并且为16bit模式,地址线为xmc_a16,所以基地址为0x60000000,发送数据的写入地址为(0x60000000 | 0x20000)。
初始化xmc:
LCD驱动部分太多,这里就不贴了,需要的可以下源码来看。
测试
测试代码
显示字符,并且改变屏幕颜色。
测试结果
测试通过,可以看到显示字符,以及颜色在改变。
最后
有问题的可以加QQ群技术交流,同时相关代码上传到QQ群中。