本科毕业设计:《住宅小区信息发布系统》_第1页
本科毕业设计:《住宅小区信息发布系统》_第2页
本科毕业设计:《住宅小区信息发布系统》_第3页
本科毕业设计:《住宅小区信息发布系统》_第4页
本科毕业设计:《住宅小区信息发布系统》_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、编号: 毕业设计说明书题 目 : 住宅小区信息发布系统 院 (系): 电子工程与自动化学院 专 业 : 测控技术与仪器 学生姓名 : 李资鹏 学 号 : 1100820417 指导教师 : 黄 新 职 称 : 副教授 题目类型: 理论研究 实验研究 工程设计 工程技术研究 软件开发2015年5月 20日第 68 页桂林电子科技大学毕业设计(论文)报告用纸摘 要利用LabVIEW、RS485总线、STM32微处理器、FPGA等技术,实现文字和图片信息的远程、动态发布。上位机程序采用LabVIEW编写。上位机通过485总线向STM32发送待显示内容。STM32将数据暂存Micro SD卡中,在VG

2、A场消隐期间,从Micro SD卡中读取数据,写入显存。FPGA读取显存数据,产生VGA信号。显示器读取VGA信号,将文字、图片显示出来。上位机与STM32之间的通信采用4线485总线。以数据帧作为通信的基本单元,采用和校验的校验方法,能在一定程度上保证数据传输的准确性和完整性。采用GBK字库,通过LabVIEW向Micro SD卡烧录了3种字体、7种字号。通过上位机向STM32发送GBK编码,STM32就能根据编码,从Micro SD卡中读取对应的点阵信息,并写入显存,实现汉字显示。ASCII码的显示与汉字的显示方法一致。利用IMG2LCD软件生成图片点阵文件,或者由LabVIEW对图片进行

3、解码,生成图片点阵文件。再将图片点阵文件、图片的大小位置信息发送给STM32进行处理,实现图片显示。在1024x768分辨率的显示器上,实现显示3种字体、7种字号的ASCII码与汉字,实现显示65536色的图片,显示稳定、色彩鲜艳!关键词:小区信息发布;485总线;VGA接口;LabVIEWAbstractThis system Release words and pictures remotely and Dynamically by using the technology of LABVIEW,RS485 BUS,STM32 MCU,FPGA etc.The host program d

4、esigned by LabVIEW. The host send data to the STM32 by RS485 bus.STM32 will saves the data to Micro SD, and reads data from Micro SD ,then writes to the display memory in the course of VGA VBLANK.FPGA reads the data from the display memory ,and produces the signal of VGA. The display reads VGA signa

5、l and shows them on screen. The media of communication between HOST and STM32 is 4-wire RS485 Bus. The basic unit of communication is data frame. The check method of data frame is sum-check.It can ensure the accuracy and integrity of data transmission in a certain extent. The system used GBK Font. W

6、rite 3 typeface and 7 font size to Micro SD by LabVIEW. Send GBK code to STM32 by host,then STM32 can read the dot matrix information and write it to display memory through the code. So it can display Chinese characters. The method to display ASCII code is the same as Chinese characters.Using IMG2LC

7、D software to generate the image dot matrix files, or decoding images by LabVIEW to generate the image dot matrix files. Then send dot matrix files ,image size signal and image position signal to STM32.STM32 will write data to display memory by these information, so it can display images.It can disp

8、lay 3 typeface, 7 font size ASCII code and Chinese characters, and can display the images with 65536 colors. Display stable and colorful!Key words:Release Information ;485 Bus;VGA Interface;LabVIEW目 录引言51 方案选择与论证51.1 系统总体设计51.2 显示方案61.2.1 可选显示方案61.2.2 FPGA选型71.2.3 更新显存方式71.2.4 显存选型81.2.5 RGB三基色生成方案8

9、1.3 微处理器方案81.4 通信总线方案91.5 存储方案101.6 上位机开发软件选择102 硬件设计102.1 硬件框架102.3 STM32数据处理电路132.3.1 STM32最小系统132.3.2 485收发电路142.3.3 W25Q64 FLASH存储电路152.3.4 Micro SD卡存储电路152.3.5 静态随机存储器(SRAM)接口162.4 FPGA模块172.4.1 FPGA核心电路172.4.2 静态随机存储器(SRAM)192.4.3 VGA接口与电阻网络202.4.4 电阻网络电阻值的计算213 软件设计223.1 LABVIEW上位机程序223.1.1 串

10、口收发模块233.1.2 串口数据传输模块233.1.3 字库烧录模块243.1.4 文字发布模块263.1.5 图片发布模块283.2 STM32程序283.2.1 485串口协议283.2.2 FLASH存储模块程序303.2.3 Micro SD函数323.2.4 字库与图片363.2.5 写SRAM函数373.3 FPGA模块程序393.3.1 读SRAM程序393.3.2 VGA时序403.3.3 输出RGB565434 调试与验证过程434.1 调试所需设备434.2 单独调试LABVIEW434.3 单独调试VGA与FPGA444.4 调试STM32444.4.1 STM32与L

11、ABVIEW444.4.2 STM32与FLASH存储器444.4.3 STM32与Micro SD卡444.4.4 STM32与FPGA与SRAM444.5 验证结果455 结论51谢 辞52参考文献53附 录54引言传统的信息发布媒介有:纸质宣传单、黑板报与静态电子公告板等。这些信息发布方法具有浪费资源、有损形象、信息更新迟滞、传播效率低和不方便管理等缺点。因此诞生了数字化信息发布系统。数字化信息发布系统可用于即时发布水、电、燃气、暖气、天气预报、新闻、物业通知、紧急信息、突发事件、社区宣传和赞助商广告等内容,可应用于小区、校园、工厂、车站、机场等公共场所,应用前景广阔。针对住宅小区,目前

12、市场上尖端的小区信息发布系统,由服务器通过互联网、GPRS、CDMA等网络控制多个多媒体终端;支持多种视音频编码标准和图文格式,如: MPEG1/2/3/4、 WMV 、WMA、Real 、Flash、JPEG、BMP、GIF、TIFF、Word、Excel、PDF、PPT等;可以显示文字、图片、声音和视频等多媒体信息;支持视频、图片、文字的混合排版,支持视频、图片、文字位置的随意调整。前沿技术制造的系统比较大型,固然功能齐全,但是成本较高,维护也相对复杂。而本设计将节约成本、缩小体积、简化功能,实现文字和图片的即时发布。1 方案选择与论证本设计要实现的目标:将文字和图片信息进行远程、动态发布

13、。着重考虑降低成本和简化设备的维护难度,最终采用LabVIEW、RS485总线、STM32微处理器、FPGA等技术实现小区信息发布。1.1 系统总体设计LabVIEW上位机模块:采用LabVIEW编写上位机程序,实现串口的数据收发、数据帧校验等功能。USB转485模块:采用1片CH340G芯片和2片MAX485芯片实现USB转4线485的功能。STM32数据处理模块:使用2片SP3485与STM32的UART5口进行连接,实现与上位机进行串口通信。STM32的SPI3接口与Micro SD卡连接,实现将上位机发送的字库、数字、文字和图片等信息存入卡中,供后续调用。STM32将待显示的点阵信息写

14、入SRAM(静态随机存储器),供FPGA读取。FPGA显示模块:使用FPGA芯片读取SRAM、控制RGB电阻网络将数字量转换成00.714V的RGB电压量,在VGA时序中准确插入RGB信号,将SRAM的内容显示到显示器上。方案结构如图1.1所示:计算机上的LabVIEW上位机程序USB转485STM32SP3485Micro SDFPGASRAMVGA图1.1 总体结构框图1.2 显示方案1.2.1 可选显示方案可选显示方案有很多,在众多显示方案中,最后采用VGA接口显示器作为显示终端。在嵌入式领域较为常用的是TFT显示屏。此类显示屏,显示效果好,具有触摸功能,但是尺寸和分辨率相对较小,接口不

15、通用,不适合用于显示住宅小区信息。广场、汽车站、火车站和金融机构等地,大多采用大型LED点阵显示器。此类显示器面积非常大,可达数十平方米,亮度大,色彩鲜艳。但是,它的价格昂贵、功耗大,控制复杂,不符合节约成本、缩小体积的设计初衷。生活中,最常见的显示方案是和台式机配套的VGA接口的液晶显示器,此类显示器的分辨率从800x600到1920x1080甚至更高,可选性高,通用性强。其使用的VGA(视频图形阵列)接口具有屏幕大、临场感强、可同时控制多个显示器的优点。VGA的视频传输过程是最短的,所以VGA接口拥有许多的优点,如无串扰无电路合成分离损耗等1。但是,VGA接口的工业标准对接口物理层的各种信

16、号时序做了严格的要求,对于普通的单片机,采用一般的I/O口模拟信号时序的方法在速度上是无法满足VGA接口的高速时序的要求的,而FPGA是一种可编程的硬件电路实现,具有高集成度、高速度、高可靠性的特点,能够实现各种高速复杂的时序信号2。采用FPGA技术,既得到高分辨率又可以不使用计算机设备显示图像3。此外,FPGA还有并行执行的特点,能避免屏幕抖动,显示效果非常稳定。采用FPGA作为VGA的驱动芯片,在国外也应用普遍。以下是外国学者对FPGA优点的总结:FPGA具有高时钟频率、高处理速度、并行处理、代码移植性好、低成本、知识产权受保护等优点4。1.2.2 FPGA选型FPGA有两大生产厂商:Xi

17、linx和Altera。在数电课程中,曾经接触过Altera和其EDA工具QUARTUS,所以对Altera比较熟悉,这是选用Altera FPGA的主要原因。选用Altera公司Cyclone4系列的EP4CE6E22C8N作为控制芯片。在EDA软件QUARTUS中可以看到这款FPGA的相关参数:Core Voltage(核心电压)为1.2V,LEs(逻辑单元)数量为6272,User I/Os(用户I/O)数量为92个,Memory Bits(片内存储)276480Bits,embedded multipliers 9-bit element(嵌入9位陈法器)30个,PLL(锁相环电路)2

18、个,Global Clocks(全局时钟)10个。用于读取SRAM、产生VGA时序和RGB信号,资源是足够的。1.2.3 更新显存方式显示器的刷新率为60Hz时,FPGA会遍历显存60次,FPGA在遍历显存的同时,只有更新显存中的数据,才能显示动态的视频。每秒更新显存的次数称为FPS(Frames Per Second)即每秒传输帧数。要流畅波播放视频,FPS最少是25以上。在读取显存同时,更新显存的方法有以下几种:采用双口RAM。此类存储器,具有两套完全独立的数据线、地址线和读写控制线,允许两个独立的系统同时对该存储器进行随机性的访问。因为数据共享,所以存在访问仲裁控制。这种方法使用的器件较

19、多,功耗大,成本高,故不采用。:采用两组SRAM,组成乒乓结构。乒乓结构是指,A组SRAM和B组SRAM轮流充当“被读”和“被写”的角色。当FPGA读取A组数据进行显示时,STM32向B组写入数据(STM32必须在FPGA读取B组时,完成对B组的更新);然后,FPGA读取B组数据进行显示,STM32向A组写入数据;如此循环,就能保证显示与显存更新的同步进行。这种方法能实现显示数据无缝更新,是一种不错的方案。然而,这需要复杂的控制总线,采用两组SRAM也会提高成本,故在本设计中暂时不采用此方案,以后设计可显示视频的VGA接口时,可能会采用此方案。:采用FPGA和SDRAM构造双口SRAM。这种方

20、法需要用到SDRAM,而SDRAM的时序控制相当复杂。以后能熟练操作SDRAM时,或许会采用这个成本低、性能也不错的方案。:采用一片SRAM,在VGA时序的场消隐期间更新SRAM。这个方案在这几个方案中,最容易实现。虽然更新速度慢,但是在本设计中是可以接受的。1.2.4 显存选型最终采用IS61WV102416BLL作为显存。可作为显存的存储器有两种类型:一是SDRAM(Synchronous Dynamic Random Access Memory),即同步动态随机存储器。内部指令以同步信号为基准,需要不停地刷新存储单元才能保持数据。二是SRAM(Static Random Access M

21、emory),即静态随机存储器。它具有静态存取功能,不需要刷新电路就能保存数据。SDRAM和SRAM各有所长,可总结为:SDRAM容量大体积小、价格低、但是操作复杂、速度较SRAM慢;SRAM容量小体积大、价格高、但是操作简单、速度快。考虑到难易程度和读写速度,最终采用了SRAM作为显存。设计时采用的显示器分辨率是1024x768,刷新率为60Hz,VGA信号频率为65MHz,使用RGB565来表示像素颜色。1024x768的分辨率要求存储器至少有768KB的存储空间,65MHz频率要求显存具有优于(1/65MHz)=15ns的读写速度,RGB565要求存储器的存储单元最好是16位。IS61W

22、V102416BLL具有1024K个位宽为16位的存储单元,读写速度为10ns,完全满足设计要求。1.2.5 RGB三基色生成方案在标准VGA协议中RGB三基色电压为0V0.714V,是模拟量。而无论是单片机还是FPGA,其I/O口输出的都是数字量,所以需要一种将数字量转换成模拟量的措施。可采用专用的视频DAC芯片,例如ADV7123,GM7123等芯片。这类DAC专门为VGA接口打造,自带3个分离的10位数据输入端口,由信号SYNC和BLANK分别控制同步和消隐功能。分辨率最大支持为1600×1200,刷新率为100Hz。芯片很强大,性能也很好,在实际应用在首选此方案。然而,使用这

23、类芯片,会让VGA接口蒙上一层面纱,不利于理解,而且这类芯片价格也不便宜,故最终决定,采用电阻网络将数字量转换成模拟量的方案。1.3 微处理器方案本设计采用STM32F103ZET6作为微处理器。MCS51单片机的管脚数量、处理速度,片内资源、自带功能等都不能满足本系统的要求,故未采用MCS51单片机作为微处理器。STM32F103系列属于ARM Cortex-M3内核,增强型32位微处理器,该系列有规格不同的多个型号,引脚数量从64个到144个,FLASH容量从16KB到1MB,SRAM容量从6KB到96KB。本系统选用的STM32F103ZET6具有144个引脚,512KB FLASH和6

24、4KB SRAM的资源。片内外设有3个SPI/I2S,2个I2C,5个USART,1个USB2.0全速接口,1个CAN总线接口,3个12位16通道ADC,2个12位DAC,资源非常丰富。其时钟频率可由自带的PLL锁相环电路对晶振倍频,最高可达72MHz,速度是MCS51单片机的72倍,基本可以满足显示静态图片的要求。在确定采用FPGA作为VGA时序的控制芯片之后,对FPGA有了新的认识,发现完全可以用FPGA实现UART、SPI等功能,用状态机来更新SRAM也比使用STM32通过外部中断的方式更新SRAM快速,FPGA内部也有足够的存储空间。采用FPGA独立工作的方案,甚至能实现更加优秀的显示

25、效果。但是初学FPGA,暂时不能实现以上难度较高的功能。若采用STM32+FPGA的方案,STM32负责写SRAM,FPGA负责读SRAM,则思路清晰,易于实现。采用单片机结合FPGA的方案完成毕业设计,是对单片机知识的总结,也是对FPGA知识的初步尝试。故采用STM32+FPGA的方案。1.4 通信总线方案本设计采用2片MAX485和2片SP3485搭建全双工串口通信电路。虽然一般在远程自动工控环境中,采取的是半双工通信,但是有些场合还要求设备节点能及时响应主机的命令,需要采取全双工的串行数据通信。5电脑与单片机常见的通信方式有:使用USB转UART(异步收发传输器)芯片。USB端的TXD、

26、RXD分别与单片机端的RXD、TXD相连,USB地线和单片机地线相连。这种通信方式最简单,成本最低,短距离时通信速率快,为全双工。学习串口、调试串口时通常采用这种接法。但是UART之间直接相连,导致了这种接法在长距离通信时,信号衰减严重,不适合用于长距离通信。:使用USB转UART,UART转RS232芯片,如MAX232。此类芯片可以将TTL电平(0V5V)转换成RS232电平(+15V-15V)。但是,RS232C 最大通信距离仅为15m, 同时RS232C 是点对点(即只用一对收、发设备)的通信, 因此PC 机无法直接对多个下位机进行远离通讯和管理。6不满足小区信息发布系统的要求。:使用

27、USB转UART,UART转485芯片,如MAX485。这类芯片能把TTL电平转换成差分电压信号。芯片的A端和B端为差分信号端,当A引脚的电平高于B时,代表数据1;当A的电平低于B端时,代表数据0。差分方式传输数据,能把通信距离延长至几十米至上千米。RS485标准抗干扰能力强,传输速率高,传送距离远.采用双绞线,不用MODEM的情况下,在100kbit/s的速率时,可传送的距离为1.2km,若速率降到9600bit/s,则传送距离可达15km.7RS485总线以其构造简单,造价低廉,可选芯片多,便于维护等特点在许多工业控制的系统中得到广泛的应用。8因此,本设计采用此方案。单片MAX485只能实

28、现半双工,故采用两片MAX485芯片,一片负责接收,一片负责发送,实现全双工通信。1.5 存储方案本系统采用Micro SD卡作为主要存储。在单片机设计中,常用的存储芯片有EEPROM类的AT24Cxx系列,FLASH类的W25Qxx系列。然而,本系统字库总大小可达78MB以上,加上图片的存储区,这两个系列的存储器已经无法满足设计要求。Micro SD卡,广泛应用于手机、平板、相机等数码产品中。其容量以GB为单位,有4GB、8GB到64GB。Micro SD卡,可以支持SPI协议。STM32自带SPI接口,操作Micro SD卡高效、简便。1.6 上位机开发软件选择上位机一般指的是PC机也就是

29、电脑,下位机指的是单片机。在电脑上,每一个软件都可以称为一台仪器,所以这里的上位机指的运行在电脑上的一个软件,这个软件利用电脑的硬件资源,可实现多种多样的功能。上位机开发软件有很多,有VC、VB、DELPHI、.NET、LABVIEW、C+Builder等。在大学课程中,接触过VC和LabVIEW。拿这两款开发软件做比较,容易发现使用LabVIEW制作上位机比使用VC更加方便、美观。LabVIEW是一种基于图形编程语言的开发环境。它与传统编程语言有着诸多相似之处,如相似的数据类型、数据流控制结构、程序调试工具等,但二者最大的区别在于:传统编程语言是用文本语言编程,而LabVIEW用图形语言(即

30、各种图标、图形符号、连线等)编程。9程序框图使用图形方式编写代码,使用函数选板中的VI 和函数控制前面板上的对象。10使用图形符号编程,程序更加直观。LabVIEW具有丰富的控件,只需调用这些控件就能实现复杂的功能。控件的位置可以随意安排、大小可随意调整,使得LabVIEW的界面更加灵活、美观和个性化。2 硬件设计2.1 硬件框架一共有四块电路板。第一块:USB转485,包含USB转UART芯片、12MHz晶振、2片MAX485芯片。负责接收STM32发出的数据并将数据传输给上位机,和向STM32发送数据。第二块:STM32模块,包含STM32F103ZET6微处理器、晶振、3.3V稳压电源电

31、路、ISP(在线系统编程)下载电路、SRAM接口、Micro SD接口、FLASH存储器、按键。负责接收上位机发送的数据、进行数据分析和存储、更新显存。第三块:Micro SD转接板。负责连接Micro SD卡和STM32。第四块:FPGA模块,包含EP4CE6E22C8N FPGA芯片、EPCS4SI8N程序存储芯片、50MHz有源晶振、1.2V,2.5V,3.3V稳压电路、JTAG接口、IS61WV102416BLL静态随机存储器、复位按键、VGA电阻网络。负责读取显存,产生VGA时序和RGB信号,并在场消隐期间向STM32发送可写显存的信号。硬件框架图如图2.1所示:CH340GMAX4

32、85 发MAX485 收晶振USB接头485接头SD接头SD插座按键485接头 SDFLASH3.3V稳压CH340G SRAM接口复位STM32SP3485 x2USBJTAGVGA接口 SRAM接口SRAM芯片FPGADC插座2.5,1.2,3.3 稳压EPCS4VGA电阻网络图2.1 硬件框架图框图连线简介:SD转接板接入STM32上的SD接口。:电脑端485芯片与STM32板载485芯片通过4根信号线相连。:STM32向SRAM(显存)写入数据。:FPGA在场消隐期间产生低电平,通知STM32可以向SRAM写入数据。:FPGA从SRAM读取数据。2.2 USB转485模块首先,通过CH

33、340G芯片,将USB信号转换为UART的RXD、TXD的TTL信号。两片MAX485,负责接收的为R,负责发送的为T。则:R的DE、RE引脚接地,设置为接收模式。RO端接RXD,DI端悬空。T的DE、RE引脚由4.7K电阻上拉到VCC,设置为发送模式。DI端接TXD,RO端悬空。搭建好的全双工485电路如下图所示:图2.2 USB转TTL图2.3 TTL转4852.3 STM32数据处理电路2.3.1 STM32最小系统让STM32芯片正常工作,需要3.3V稳压电源电路、晶振电路、程序下载电路、复位电路。3.3V稳压芯片采用AMS1117 3.3。其内部集成过热、过流保护电路,固定输出3.3

34、V电压,具有1%的精度,最大输出800mA电流,采用SOT-223贴片封装,体积小,非常适合作为3.3V数字IC的稳压芯片。主晶振采用8MHz 49s型无源晶振,晶振两端接22pF电容到GND,为STM32提供精准的时钟。RTC时钟采用32.768KHz无源晶振,晶振两端接22pF电容到GND,若时钟走的较快,稍微加大电容,反之稍微减小电容。其频率32.768KHz即32768Hz,即2的15次方,经单片机内部分频器进行15次2分频后,可生成精确的1Hz方波,即周期为1秒的脉冲,这个脉冲信号,让计数器每秒加1。关于程序下载电路,未采用JTAG接口,因为JTAG接口占用IO口,还需要额外购买仿真

35、器,性价比较低。所以,本设计采用串口的方式下载程序。CH340G是一种USB总线的转接芯片,可实现USB转串口、USB转IrDA红外和USB转打印口等功能。使用3.3V电源时,将V3引脚连接至3.3V电源;使用5V电源时,将V3引脚外接0.01uF电容到GND。在STM32模块中,采用3.3V的接线方式。相关电路图如下:图2.4 STM32稳压电路图2.5 STM32主晶振与复位电路图2.6 STM32 RTC时钟电路图2.7 STM32程序下载电路2.3.2 485收发电路为了不引人5V电压到STM32电路板中,采用SP3485这款3.3V的485芯片。其封装和接法和MAX485完全相同,官

36、方数据手册称其最大支持10Mbps的通信速率,完全满足设计要求。为了直观的观察数据的收发情况,在RXD和TXD引脚都接入了LED指示灯。图2.8 STM32 全双工485收发电路2.3.3 W25Q64 FLASH存储电路在嵌入式应用上广泛用于字库的存储。嵌入式平台大多采用分辨率较低的液晶屏,不需要大字号字库,而本设计使用1024x768分辨率的显示器,最大需要56x56p像素的字号,一个GBK字库有9,384,480个字节,已经超出了W25Q64的存储范围。所以,最后采用Micro SD卡作为主存储器,W25Q64作为备用存储器。图2.9 FLASH存储器电路2.3.4 Micro SD卡存

37、储电路Micro SD卡支持两种工作模式,SD模式和SPI模式。图2.10 Micro SD引脚两种模式下,引脚对应的功能:SD模式:1-DATA2,2-DATA3,3-CMD,4-VDD,5-CLK,6-VSS,7-DATA0,8-DATA1SPI模式:1-保留,2-CS,3-DI,4-VDD,5-SCLK,6-VSS,7-DO,8-保留SPI模式的选择:Micro SD复位过程中,CS为低电平,使用SPI模式,否则使用SD模式。本系统采用SPI模式,与STM32的SPI3相连。Micro SD的接口电路比较简单,每个引脚上拉47K的电阻即可。设计电路如下图所示:图2.11 Micro SD

38、卡转接电路2.3.5 静态随机存储器(SRAM)接口SRAM芯片焊接在FPGA板子上,STM32上只有SRAM的接口。STM32与FPGA之间利用两排排针相连。设计时,STM32和FPGA采用同一个模板,排针的位置和板子的大小完全一致。当STM32插入FPGA时,STM32与SRAM联通。STM32自带FSMC接口,该接口专门用于控制外置SRAM,然而,在本设计中未采用此接口。一是,该接口对应的引脚分布不够好,不利于布线;二是,SRAM的操作原本非常简单,而采用FSMC后将会把问题复杂化。安排IO口时,数据总线使用同1组IO口,地址总线使用2组IO口,这样能稍微加快对SRAM的操作速度。STM

39、32和FPGA都直接连接SRAM,两者之间必须要有一根线进行沟通,协商这一时刻由谁接管SRAM的控制权,否则会造成总线冲突,更严重地,会导致STM32与FPGA的管脚的电平一高一低,电流过大,损坏芯片。下图中的READING引脚即为FPGA与STM32的“通信引脚”。图2.12 SRAM接口2.4 FPGA模块2.4.1 FPGA核心电路让FPGA芯片正常工作,需外接以下几个外设:电源。EP4CE6E22C8N需要3个电压,1.2V内核电压,2.5V PLL电压,3.3V I/O口电压。3个电压的稳压芯片都采用AMS1117系列,±1.5%的初始误差,1.3V的压差,SOT-233的

40、封装,这几个参数决定着AMS1117系列稳压芯片适合为FPGA提供线性稳压电源。图2.13 FPGA 稳压电源电路图:JTAG接口、专用配置存储器(EPCS4SI8N)将FPGA的模式配置成AS+JTAG模式。调试时,用JTAG烧写程序,确认程序无误后,用QUARTUS生成JIC文件,由JTAG接口将JIC文件烧录到配置存储器中。上电后,FPGA自动从配置存储器读取程序,加载到内部SRAM中。图2.14 FPGA模式配置图2.15 FPGA的JTAG接口:晶振电路虽然FPGA不加晶振也能工作,但是没有晶振的FPGA只能实现逻辑电路,也就是实现类似于与门、非门的功能;只有加上晶振,FPGA才能实

41、现时序功能,才能实现状态机、产生控制芯片的时序信号、定时、计数等功能。本系统采用50MHz的有源晶振,FPGA内部的PLL可将其分频、倍频至一定范围内的任意频率。图2.16 FPGA时钟电路2.4.2 静态随机存储器(SRAM)采用IS61WV102416BLL SRAM作为显存。这款SRAM的接法很简单,除去地址线和数据线,只需将WE_N读写控制线接入单片机或者FPGA即可。CE,OE,UB,LB引脚可以直接接地。其中UB和LB引脚接高电平时分别屏蔽16位数据字节的高8位和低8位,而在本设计中,需要完全读写16位数据,故直接将UB和LB接地。SRAM引脚图如下所示:图2.17 SRAM引脚图

42、2.4.3 VGA接口与电阻网络表2.1 VGA接口引脚定义引脚编号引脚功能1红基色(red)2绿基色(green)3蓝基色(blue)4地址码5自测试6红基色地线7绿基色地线8蓝基色地线9保留10数字地11地址码12地址码13行同步14场同步15地址码如上表所示,在这15个引脚中,只需控制其中的5个即可实现VGA显示。这5个引脚为:1 红基色 red,2 绿基色 green,3 蓝基色 blue,13 行同步,14 场同步。标准VGA协议中规定,RGB三基色电压范围:0V0.714V,0V代表该颜色亮度为0,0.714V代表该颜色最亮。三基色源端和终端匹配电阻均为75欧姆。75欧姆的匹配电阻

43、集成在VGA传输线上的两头,不需要也不可以自己在电路板上制作。本系统采用电阻网络,将控制RGB的数字信号转换成对应的电压信号。红基色R和蓝基色B使用5个引脚控制,绿基色G使用6个引脚控制,构成RGB565的彩色模式。以二进制的形式展开,其顺序为:R4_R3_R2_R1_R0_G5_G4_G3_G2_G1_G0_B4_B3_B2_B1_B0。2.4.4 电阻网络电阻值的计算图2.18 阻抗匹配等效图上图是产生绿基色VGA电压的等效图。IO5IO0分别对应G5G0,数值大者为高位。当6个IO口都输出3.3V,即G5=G4=G3=G2=G1=G0=1时,代表绿色亮度最大,则V_VGA应该为最大值0.

44、714V。R5,R4,R3,R2,R1,R0为并联关系,设并联后的电阻为Rx,根据电阻分压定理,得:75/(Rx+75) = 0.714/3.3,解得Rx272欧姆,总电导Sx=1/Rx=1/272西门子。设R5,R4,R3,R2,R1,R0的电导分别为S5,S4,S3,S2,S1,S0,为了实现将Sx分成26=64份,并且考虑到R0为控制信号的最低位,所以把R0的电阻值设为最大,其电导值最小,则有以下关系:电阻关系:32R5=16R4=8R3=4R2=2R1=R0,电导关系:S5=2*S4=4*S3=8*S2=16*S1=32*S0,求并联电阻的电导值:Sx=S5+S4+S3+S2+S1+S

45、0,得:Sx=32*S0+16*S0+8*S0+4*S0+2*S0+S0,即Sx=63*S0。上面已经计算出总电导Sx = 1/272,则S0=Sx/63=1/272/63=1/17136(西门子),R0=1/S0=17136(欧姆)。根据:32R5=16R4=8R3=4R2=2R1=R0,可算出:R1=R0/2=8568,R2=R0/4=4284,R3=R0/8=2142,R4=R0/16=1071,R5=R0/32=535.5。以上为绿基色电阻值的确定方法,红基色与蓝基色的电阻值确定方法与之相同。考虑到市场上电阻具有标称值,查阅标称值表,最终确定电阻取值为:绿基色电阻值:R0 = 8.2K

46、 + 8.2KR1 = 8.2KR2 = 3.9KR3 = 2KR4 = 1KR5 = 510R红、蓝基色的电阻取值为:R0 = 8.2KR1 = 3.9KR2 = 2KR3 = 1KR4 = 510R这样取值会造成色彩稍微失准,不过在一般场合下是可接受的。以上计算方法未考虑到当FPGA引脚为输出0时,与该引脚连接的电阻会与75欧姆的匹配电阻形成并联关系,但是考虑到最小电阻为510欧姆,是75欧姆匹配电阻的6.8倍,故对匹配电阻的影响不大。原理图如下:图2.19 VGA电阻网络3 软件设计3.1 LABVIEW上位机程序主要使用到LabVIEW的串口功能。在编写LabVIEW上位机时,一步一步

47、地实现需要的功能。3.1.1 串口收发模块主要函数在“仪器I/O” -> “串口”和“VISA”选板中。首先,在程序框图界面调用“VISA配置串口”函数,为VISA资源名称、波特率、数据比特等创建输入控件(移到接线端,单击右键,选创建输入控件)。在VISA选拔中,有VISA读取和VISA写入函数,分别实现串口数据的读取和发送。将以上三个函数连接好,即可实现串口的基本收发功能。程序框图如下图示:图3.1 串口基本收发程序框图3.1.2 串口数据传输模块通信协议:以数据帧作为基本单元。帧格式: 从机地址 帧功能 帧序列 帧长度 帧数据 校验值 1Byte 1Byte 4Byte 2Byte

48、由帧长度控制 1Byte <=65535Byte用1个字节标记从机地址,理论上能控制256个节点,考虑到MAX485的驱动能力,其最多可驱动32个负载,故用1个字节表示从机地址即可。帧功能字节用于区分数据帧的功能。例如:0x00用于加载背景,0x01用于传输文字数据,0x02用于传输图片数据等。帧序列由4个字节表示,配合帧长度的2个字节,共48位宽,可连续传输256TB字节的数据,已经超前现实非常多。帧数据是本帧的有效数据,其大小由帧长度字节决定,最大为65KB。烧写字库时,帧长度选用512字节,是Micro SD卡一个扇区的大小,方便数据存取。校验值放在数据帧最后面,可采用异或校验、和

49、校验、CRC校验等多种校验方式。本系统采用和校验方式,因为LabVIEW中对数组求和非常简便,只有一条语句。经验证,在460800波特率下,采用和校验烧录的字库未发现问题。判断校验是否成功的方法:将数据块的所有字节求和后再与接收的校验字节相加并丢弃进位, 若结果为0则表明数据块传送正确, 否则出错。11LabVIEW要实现将这几个数据打包成一个数据帧。基本思路是:用“平化至字符串”函数把从机地址、帧功能、帧序列、帧长度等数据转换成字符串,然后利用“连接字符串”函数将它们与帧数据字符串连接成一个新的字符串“加入头部”字符串。:将“加入头部”字符串用“字符串至字节数组转换”函数转换成数组,再用“数

50、组元素相加”函数对该数组求和,得到“校验和”数值。:将“校验和”数值用“平化至字符串”转换为名为“校验和字符串”的字符串,最后将“加入头部”与“校验和字符串”用“连接字符串”函数连接,这样就完成了数据帧的打包。LabVIEW发送完一个数据帧后,要等到从机返回正确的校验值,才发送下一帧数据;若从机返回错误的校验值,则LabVIEW继续发送本帧数据,直到从机返回正确的校验值,才发送下一帧数据;若从机迟迟不返回校验值,LabVIEW间隔一定时间重发本帧数据。利用以上协议,成功向Micro SD卡烧录了78MB的GBK字库文件,字库可正常使用。图3.2 生成帧头子VI3.1.3 字库烧录模块基本方法是

51、:读取字库文件,存入“文件数据”字符串中,然后每次截取512个字节作为一帧,帧序列从0开始,每发送成功一帧,帧序列加1,直到发送完成。发送成功一个数据帧的标志是:接收到从机返回的校验值。图3.3 烧录字库主界面读取字库二进制文件。进行读取字库的大小、初始化偏移量、初始化进度等操作。图3.4 加载字库文件图3.5 截取512字节作为一帧图3.6 形成一帧数据3.1.4 文字发布模块文字信息包括:字体,:字号,:字体颜色,:背景颜色,:是否启用背景颜色,:行号,:列号,:行间距,:列间距,:保留1,:保留2。将以上数字量封装成一个字符串,构成字符串信息帧。其中在处理字体颜色和背景颜色时,需要将RG

52、B24转换成RGB565。在RGB24中,红绿蓝3种颜色均采用8个位表示;在RGB565中,红绿蓝分别用5个位、6个位、5个位表示。转换的基本思路是,把0255转变为031或者绿色的063。红色的转换式子:R565 = R24*32/256;向下取整绿色的转换式子:G565 = G24*64/256;向下取整蓝色的转换式子:B565 = B24*32/256;向下取整红绿蓝三色混合式子:RGB565 = R565*2048+G565*32+B565;将RGB24颜色模式的数据转换成RGB565颜色模式下的数据:图3.7 RGB24转RGB565子VI将字体、字号、字体颜色、字体背景色、是否启用

53、背景色等文字信息封装成为一个字符串。图3.8 生成字符串信息帧子VI发送一帧完整的数据帧,包含帧头、文字信息帧、校验和。图3.9 发送数据帧接收从机的返回值,校验成功后自动关闭发布按键,停止发送本帧信息。否则间隔一定时间连续发送本帧信息。图3.10 接收从机校验值3.1.5 图片发布模块图片信息包括:起始行,:起始列,:图片长度,:图片宽度,:图片存储位置,:保留1,:保留2,:保留3。将以上信息封装成一个字符串,构成图片信息帧。图片的发布,和字库的烧录很相似。即将图片的点阵代码存入设定好的存储区域,STM32从某个位置开始加载,将点阵信息写入SRAM。字库与图片的区别在于,字库的一个像素点用

54、一位表示,图片的一个像素点用16位表示。3.2 STM32程序3.2.1 485串口协议采用STM32的UART5作为收发器。难点不在于UART5的配置,而在于数据存储与校验。所以,只介绍UART5要特别注意的几点:开机发送的第一个数据丢失问题。STM32状态寄存器TC位的清零方式为,先读USART_SR,然后写入USART_DR。而发送第一个数据时,只写USART_DR,未读取USART_SR,故TC位为1,是发送完成的标志,所以STM32不发送第一个数据。解决这个BUG的方法是:在配置串口时,执行一次UART5 -> SR = UART5 -> SR;这条语句。:while(UART5 -> SR & (1 << 7) = 0);/数据转移到移位寄存器while(UART5 -> SR & (1 << 6) = 0);/等待发送完成以上两条语句作为等待发送完成的语句,一般情况下效果几乎一样,但是两者之间确实是有所不同的。因为数据已送到移位寄存器不代表发送完成。在介绍LabVIEW串口数据传输模块时,提到了数据帧格式为: 从机地址 帧功能 帧序列 帧长度 帧数据 校验值 1Byte 1B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论