基于ATXMEGA128A1的图形界面开发板
2012-01-13
1.引言
AVR8位单片机我想很多人都用过,它拥有片上资源丰富,驱动能力强,功耗低等优点,广泛应用于工业控制和家用电器等领域。但对于AVR单片机的产品应用有一定了解的人会发现,AVR片机产品上很少采用分辨率较大的彩色液晶屏,主要原因是其处理速度不够,并且不支持大容量的SRAM或SDRAM。比如说系列里配置较高的atmega128,其处理速度最高也就16MIPS,最大支持不到64K的外部ram。如果用户希望能够在实现工控任务的情况下额外再提高产品的图像显示能力,atmega显然是无法完全胜任的。随着人们对产品人机交互要求的不断提高,越来越多的AVR用户希望能找到一款相比以前的AVR单片机而言在人机界面处理上有更高表现的AVR单片机,这样既能够满足用户的需求,同时又不必转换平台从而最小化软硬件的开发周期。
2.ATXMEGA单片机的介绍
atxmega系列是ATMEL公司2008年推出的一款AVR单片机,它将AVR产品扩展到了新兴的市场范围,并改善了现有应用。拿atxmega128A1来说,与以前的atmega128系列相比,atxmega128A1主要有了如下几项改进:
(1)内部RAM提升为8K;
(2)处理速度可达32MMIPS;
(3)EBI总线支持16MB 8位SRAM或者128MB 4位SDRAM;
(4)USART,I2C,SPI的硬件资源数量比以前有了较大提高。
与atmega128相比,atxmega128A1处理速度翻了一倍,并且支持大容量的外扩SDRAM。即使配置8M的SDRAM,如果配置240x320 16位色宽的屏,可以放下54页的图像。虽然atxmega处理速度仍然比较慢,但其支持SDRAM的能力使其具备了处理较大尺寸图形界面的能力。还有一点需要说明,由于属于AVR系列,atxmega可以使用与atmega相同的编译器,如WINAVR。虽然与atmega系列相比,atxmega的底层寄存器定义有了部分变化,以前的产品代码会不兼容,但是ATMEL公司提供了大量的库函数给用户,用户还是可以只花少量时间就可以完成老代码的移植工作。因此,对于那些需要提升产品的显示能力而又不想更换开发平台的用户来说,用atxmega来代替atmega是一个不错的选择。
本文中,笔者将介绍一下自己设计的atxmega128A1开发板,借此来评估atxmega在开发人机界面方面的能力。
3.开发板功能和系统硬件介绍
开发板配置以下功能:
(1)mp3播放,歌曲快进快退等
(2)BMP图片浏览,缩放,更换桌布,屏幕截图
(3)SD和U盘双接口
(4)扬声器输出
(5)编码器旋钮控制
选用的硬件配置:
(1)ATXMEGA128A1作为MCU
(2)液晶屏选用东芝的2.2”TFT液晶屏,控制器为μPD161704A,分辨率达到QVGA240x320。
(3)选用镁光8MB的SDRAM MT48LC16M4A2作为外扩内存
(4)SD卡和U盘作为存储器
(5)VS1003B作为mp3解码芯片
(6)TEA2025B作为扬声器功放,配2个0.8W的小扬声器
(7)一个编码旋钮控制界面菜单
(8)SST25VF016 flash存放字库和界面图标
(9)串口转USB接口
从上面的配置可以看出,这块板子具有较多的硬件资源,可以满足一般大专院校和单片机爱好者学习的需要,如图1、2所示。
1)atxmega128A1;
2)液晶屏;
3)SDRAM;
4)SST25VF016;
5)VS1003B;
6)CH375B;
7)TEA2025B;
8)旋钮编码器;
图1 开发板硬件系统框图
图2 开发板实物照片
图3 SDRAM接口原理图
图4 旋钮编码器接口原理图
9)SD(在液晶屏下部)SDRAM接口。
接口主要包括:地址线,数据线和控制线。控制线包括:行地址选择RAS#、列地址选择CAS#、写选择WE#、BANK块地址选择BA0-1、时钟线CLK、数据有效DQM。Atxmega128A1的外部数据总线EBI支持3端口的连接方法,EBI的时钟使用的是高速外部时钟,速度为CPU的2倍,可达64MHz,如图3所示。
液晶屏接口:接口主要包括数据线和控制线。控制线包括片选CS#、读有效RS#、写有效WR#、复位信号RST#。
图5 部分界面截图
旋转编码器接口:旋转编码器内部是一个按键和两个旋转开关,可以根据旋转方向产生不同相位信号。当顺时针旋转时,开关A的输出信号A signal相位超前;如果逆时针旋转时,则是开关B的输出信号B signal相位超前,把A/B端分别接到MCU的两个输入端口,并在MCU内设置一个计数器;就可以用软件来判别是顺时针旋转还是逆时针旋转,以此判断是增加还是减少计数器的值,如图4所示。
4.软件系统设计
软件设计上充分利用板载大容量SDRAM这一优势,开发板上电初始化时,会把存放在flash内的所有系统文件一次性加载到SDRAM内的指定地址上,而不必每次使用时都从flash去调数据。利用SDRAM的大容量还可以给图形界面处理,数据拷贝等凡是要用到大量数据存储的地方都开辟一定的空间。
整个软件架构分为3块,应用层部分,数据传输层部分,硬件层部分。
应用层负责软件上层的应用,如负责图像最终的显示,歌曲的播放等。
数据传输层是核心部分,负责将硬件层过来的数据进行各种处理后发给应用层,或者将应用层的数据传给硬件层。它主要负责以下任务:
(1)FAT文件系统的管理。
(2)状态机实时控制和判断,当插入或拔出SD或U盘,会自动更新相应桌面图标的状态(souce图标和文件图标)。
(3)图像数据的处理,如图块数据的搬运,叠加,覆盖,更新,混色,消隐等。
(4)与硬件层的数据接收和发送。
硬件层主要是硬件驱动部分,负责查看和设置硬件状态,将数据发送至传输层,或传输层的数据传回至相关硬件。它主要负责以下任务:
(1)Atxmega128A1的EBI接口与SDRAM的数据读写。
(2)CH375B,VS1003B,液晶屏的数据读写和控制。
(3)SST25VF016的数据烧写和读取。
(4)攻放的开关和旋钮的逻辑判断。
5.开发板的测试
通过实际测试,一帧240x320的16位色图像从SDRAM里写进屏里需要的时间大约是1.5秒,这个速度相比其他速度更快的单片机速度稍显不够。但如果是小图块图像,比如图标,则刷新速度很快,基本看不出有“拉窗帘”的迹象,并且在mp3页面下的实时混色的速度还是不错的。因此这里可以得出结论,在对整屏显示速度要求不是很高或者刷新面积不是很大的场合,atxmega还是基本胜任的,如图5所示。
6.开发板的优势
(1)本开发板在代码的可修改和可移植性方面做得比较好,代码尽量做到让各个功能块留有最少的接口,并且在很大程度上进行了打包处理,用户只需调用上层的应用函数就能做一些简单的修改。
(2)程序上在提高速度方面作了很大的优化,当前用到的数据都尽可能的堆放在SDRAM里,然后再进行处理,这样大大提高了效率。
(3)代码提供了所有硬件的驱动部分,用户也可以只使用驱动代码,数据处理和应用部分自己另行开发。同时用户也可以对该板进行软硬件裁减,截取需要的部分应用到自己的产品。
7.开发板的成本
在目前的AVR单片机开发板市场上,由于atxmega是最近几年才推出来的,atxmega开发板还非常稀少,即使有功能也相对简单,没有充分利用其外扩RAM的能力。当然这里面也有目前atxmega成本还比较高,供应量不足的因素,但相信在未来的几年,随着供货量的增加和成本的下降,atxmega一定会取代atmega成为AVR的主推产品。
8.结语
笔者设计了一块atxmega128A1开发板,利用其支持大容量SDRAM的能力验证其显示图形界面的速度性能,通过实际应用证明了atxmega系列单片机具备了一定的图形开发能力,基本能够满足对产品的图形显示有一定要求的AVR用户的需要。
[1]温正,何嘉扬.AVR单片机开发从入门到精通[M].中国电力出版社.
[2]吴双力,崔剑.AVR-GCC与AVR单片机C语言开发[M].北京航空航天大学出版社.
[3]avr-libc-user-manual[OL].http://www.nongnu.org/avrlibc/user-manual/modules.html.