欢迎来到天天文库
浏览记录
ID:21750201
大小:57.50 KB
页数:7页
时间:2018-10-24
《efd图像数据传输系统设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、EFD图像数据传输系统设计在此计以STM32系列处理器作为控制器,利用uCGUI进行图形界面设计,利用循环移位算法将黑白图像定制成符合TFT?EFD显示的数据格式,实现了静态EFD图像的通信,可以根据实际要求传输不同静态EFD图像,后期如果需要可以升级成传输数据流来支持动态显示。1设计原理本设计采用的单色TFT?EFD显示屏的分辨率是320×240,行线连接着晶体管的栅极,控制着晶体管的打开与关闭,列线连接着晶体管的源极,控制着数据的传输,整体的结构如图1所示。E:王芳现代电子技术201506现代电子技术1
2、5年38卷第6期IMAGE24T1.TIF图1EPDPanel基于EFD的图像显示经历了图像采集,图像传输,图像显示等步骤。EFD目前只支持黑白图像显示,因此图像采集利用Processing软件对图片进行一次加工,转换成黑白图像。数据生成之后需要进行传输,传递给微控制器进行处理,这时需要对数据进行二次加工,变成满足TFTEFD显示屏驱动芯片要求的格式,之后通过DMA方式传递给外部的SRAM。FPGA读取SRAM的数据,根据相应的时序控制驱动芯片输出数据,从而实现图像显示。如果控制好时序,能在1s内刷新25帧以
3、上,那么就可以实现图像的动态显示。数据的传输是整个过程的中间阶段,需要进行不断的测试来找到最优的传输数据时序,构造出相对完善的波形序列来实现动态显示。因此搭建数据传输系统来显示不同的图像,测试其显示效果,对于实现稳定的动态显示有积极的作用。本设计利用uCGUI构造图形控制界面,可以传输不同的EFD图像数据给SRAM,FPGA读取其中的数据就可以进行图像显示,并且系统界面简单直观,操作起来也相对简便。2系统设计2.1硬件设计利用STM32F103ZET6微处理器作为主控芯片,SD卡作为存储设备,SRAM作为转换数据
4、的输送目的地,TFT?LCD用作显示与触摸控制,各个硬件相互配合构建起一个完整的数据传输系统。系统框图如图2所示。E:王芳现代电子技术201506现代电子技术15年38卷第6期IMAGE24T2.TIF图2系统结构显示模块采用2.8寸ALIENTEKTFTLCD模块,利用ILI9320控制器作为驱动芯片进行驱动。ILI9320液晶控制器自带显存,其显存总大小为172820b(240×320×[1818])。并且ALIENTEKTFTLCD模块自带电阻式触摸屏,可以实现触控的功能。ALIENTEKTFTL
5、CD模块自带的触摸屏控制芯片为XPT2046,内部含有12位分辨率125kHz转换速率逐步逼近型A/D转换器,是一款4导线制触摸屏控制器。由于数据量比较大,将大量数据储存在SD卡中[1],SD卡的配置使用SPI驱动,最高通信速度可达18Mb/s,每秒可传输数据2MB以上,可以满足一般的应用需求。SRAM采用的是IS62B,采用STM32的FSMC接口对其进行配置。FSMC是灵活的静态存储控制器,能够与同步或异步存储器、16位PC存储器卡接口,STM32的FSMC接口支持包括SRAM,NANDFLASH,NORFL
6、ASH等存储器。本设计使用FSMC的BANK1区域3来控制IS62AGE24T3.TIF图3EPDPanel微结构由于EFD是国内新型显示技术,有着自身的图像数据格式,需要定制符合其显示格式的数据来实现图像显示。控制油墨打开与关闭的芯片要求一个像素格有两位进行控制,即“01”代表打开,“10”代表关闭,因此需要对原始图像数据进行二次加工来满足要求。EPDPanel的规格是320×240,即240行,320列,由于驱动芯片的数据输出位数是8位,因此先定义一个字符型的二维数组data[240][80],然后利用内存
7、管理单元开辟相应的区域来存放最终数据。利用FATFS模块的f_read函数从文本文档里读取数据,根据文档中每一个数据的内容是‘1’还是‘0’,分别对二维数组内的元素进行0x01或0x02的赋值操作,如果移位次数没有达到4次则进行左移两位操作,否则读取下一个数据重新进行判断。这样每4个数据构成二维数组里的一个元素值。接下来的工作就是判断列数与行数是否小于预先设定数值,如果列数超出设定值,则行数加1,从新的一行开始读取数据,如果行数超出设定值,则循环结束,所有数据均被转换完。算法流程图如图4所示。E:王芳现代电子
8、技术201506现代电子技术15年38卷第6期IMAGE24T4.TIF图4图像转换算法在Keil集成开发环境下利用C语言编写数据格式转换代码,实现图像转换的重要代码片段如下:if(*(num++)==1){if((x%4==0)(x!=0))j++;data[i][j]
9、=0x01;if(x!=(3+4*j))data[i][j]=2;}else{if(x==32
此文档下载收益归作者所有