《嵌入式系统设计》课程设计基于MCF5272的工业以太网控制器设计_第1页
《嵌入式系统设计》课程设计基于MCF5272的工业以太网控制器设计_第2页
《嵌入式系统设计》课程设计基于MCF5272的工业以太网控制器设计_第3页
《嵌入式系统设计》课程设计基于MCF5272的工业以太网控制器设计_第4页
《嵌入式系统设计》课程设计基于MCF5272的工业以太网控制器设计_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、华 中 科 技 大 学研究生课程考试答题本考生姓名 考生学号 系、年级 计算机学院硕士051班 类 别 硕士(非定向) 考试科目 嵌入式系统设计 考试日期 评 分题 号得 分题 号得 分总分:评卷人:注:1、无评卷人签名试卷无效。2、必须用钢笔或圆珠笔阅卷,使用红色。用铅笔阅卷无效。嵌入式系统设计课程设计任务书2006年3月31日一 考核方式根据本课程教学大纲“鼓励通过做针对特定系统的嵌入式系统设计方式进行考核”精神,本次考试的考核采用“嵌入式系统设计”方式进行。二 题目鼓励研究生根据所在课题组的嵌入式系统方面的实际课题进行本课程设计的选题。所选题目、设计任务、设计内容均须征得研究生的导师和本

2、课程的任课教师的同意。允许不受下面规定内容的约束,根据实际课题的需要,有侧重的进行嵌入式系统硬件、或者嵌入式系统软件方面的设计,但是设计工作量必须与下面提出的要求相当。如果课题组没有实际课题,可以由研究生根据本课程内容和本人所学专业的研究情况自行拟定题目。如:温度测量嵌入式系统设计、光电系统中的嵌入式系统设计、嵌入式internet网关系统设计等等。课程设计不得涉密。三 设计内容(非实际课题)设计内容应该包括:(1) 概述 简述所设计系统的发展历史、发展现状、发展方向等。(2) 系统原理 详细描述该系统的工作原理,设计依据,设计方法、技术路线、实时性要求及相关的调度、控制、处理、各种不同方案的

3、比较与论证等。(3) 硬件系统设计 包括:嵌入式处理器选型设计、存储系统设计(程序存储、动态存储、容量、地址分配、读写控制等)、接口设计(串口、并行口、键盘、显示、a/d口、d/a口、读写控制等)、端口地址译码(设备片选信号、设备端口地址等)、电路设计(电源、去耦、放大、滤波、光电隔离等)、元器件选型设计、元器件和电路参数计算。(4) 硬件系统电路原理图 用protel绘出硬件系统电路原理图。(5) 软件系统设计 包括软件实时环境支撑(如:有没有实时操作系统支持)、嵌入式系统的主要数据结构(如:常量、变量、结构、栈、队列、链表等)、程序结构(如:主程序、子例程、实时响应和实时调度的程序、中断处

4、理及中断服务子例程等的结构)、软件算法(rm、edf等)。可以用流程图、伪码等详细描述,并且辅之以必要的文字说明和解释。不要求实际编程,但鼓励用c语言实现。四 评分标准(非实际课题)(1) 概述部分满分10分。其中:发展历史满分2分、发展现状满分3分、发展方向满分3分、其他满分2分。(2) 系统原理部分满分15分。其中:工作原理满分5分、设计依据和设计方法满分5分、其他满分5分。(3) 硬件系统设计部分满分25分。其中:嵌入式处理器选型设计满分5分、存储系统设计满分5分、接口设计(包括端口地址译码)满分10分(必需包括键盘、显示、a/d转换部件)、其他满分5分。(4) 硬件系统电路原理图部分满

5、分10分。凡不用protel绘出硬件系统电路原理图者本部分得0分。(5) 软件系统设计部分满分30分。其中:嵌入式系统的主要数据结构满分7分、程序结构满分10分、软件算法满分8分、其他满分5分。(6)系统实现 满分10分五 时间安排 2006年7月1日上午9:00将设计报告交到任课老师实验室(保卫处一楼西边),并且履行签收手续。六 规定1 全部设计内容请打印到答题本上或者打印到其他纸张然后粘贴到答题本上。2 提交设计内容软盘。3 只有答题本上内容才能作为评分依据。4 自行打印本任务书并夹在答题本内。基于mcf5272的工业以太网控制器设计李艳国 华中科技大学计算机学院1 概述工业以太网,是指技

6、术上与商用以太网(即ieee802.3标准)兼容,但在产品设计时,在材质的选用、产品的强度、适用性以及实时性等方面能满足工业现场的需要。简言之,工业以太网是将以太网应用于工业控制和管理的局域网技术。传统的控制系统在消息层大都采用以太网,而在控制层和设备层则采用不同的现场总线或其他专用网络。随着互联网技术的发展与普及推广,ethernet技术也得到了迅速的发展,ethernet传输速率的提高和ethernet交换技术的发展,给解决ethernet通信的非确定性问题带来了希望,目前以太网已经渗透到了控制层和设备层,开始成为现场控制网络的一员。控制网络的发展,其基本趋势是逐渐趋向于开放性、透明的通讯

7、协议以及能够方便的和信息网络融合、实现资源共享,工业以太网技术就是适应这一需要而迅速发展起来的控制网络技术。以太网技术在控制网络和实现一般基于两种方式,其以是采用嵌入式网关的以太网和现场总线的混合控制网络,它在一定程度上解决了现场总线在控制系统的分散性和开放性问题,比较适合改造现有的现场总线网络;其二就是嵌入式internet网络,实现嵌入式internet的基础是嵌入式处理器、嵌入式操作系统和接入internet的通信协议。 早期的控制器都是基于现场应用而设计的,网络处理能力不强,随着工业控制系统的发展,对现场控制要求实现的功能复杂、可靠性高,网络信息处理能力越来越强。嵌入式处理器和嵌入式操

8、作系统的出现,为解决复杂的工业以太网应用提供了可靠的保障。工业控制是嵌入式系统应用的一个典型领域,对控制器的研究多数是基于嵌入式技术的。 国内传统的控制器是以单芯片为核心的可编程控制器形式的系统,同时具有与监测、伺服、指示设备相配合的功能。这种系统大部分应用于一些专业性很强的工业控制系统中,一般没有操作系统的支持,通过汇编语言编程对系统进行直接控制,运行结束后清除内存。这样的控制器系统结构和功能都相对单一,处理效率较底,存储容量较小,几乎没有用户接口,系统维护性、可移植性不高,已经不能适应高效的、需要大容量存储介质的现代化工业控制的需求。 目前,国内外针对嵌入式网络控制器的研究日渐兴起,不过它

9、们多是针对特定的应用领域,不如环境检测、网络通信、医疗电子、视频电话等,不具备工业现场控制器的通用性。在嵌入式技术和控制网络技术飞速发展的今天,嵌入式网络控制器应该具备如下特点:集成输入输出i/o点,能够实现现场控制;集成显示和操作模块,能够实现现场状态显示以及人机操作功能;具有多种网络接口,可以和周围设备互连组成控制网络;具有低成本的ethernet接口,能够实现远程监测和控制功能;控制系统稳定可靠,可以实现网络冗余控制;集成嵌入式操作系统,支持多任务调度等。因此,研究基于嵌入式系统和控制网络技术的嵌入式网络控制器,是当前控制系统发展的一个趋势。2 系统原理以太网在局域网中大量应用总线型结构

10、,这种结构在办公网络中不会出现什么问题,而如果应用到实时性、可靠性要求都高得多的工业现场领域,很有可能导致重大的现场事故。所以以太网要应用到现场领域,必须解决好带宽、可靠性、数据交换等问题,必须克服现场恶劣环境带来的负面影响,针对这些问题,必须提出一种可行的工业以太网控制系统体系结构。如图1所示,工业以太网控制器之间、其他设备之间的通信都通过以太网交换机,这样解决了带宽问题,一定程度上也解决了由共享式以太网带来的碰撞问题;为了增强网络的可靠性,采用冗余环技术;为了增加系统的扩展性和数据交换能力,采用了opc服务器。如果把企业的网络分成三层:设备层、控制层和信息层,从图1中可以看到,从设备层到控

11、制层,再到信息层,都采用以太网,真正实现了企业办公自动化(oa)网络和工业自动化(ia)网络的无缝连接,有利于企业的信息集成。图1工业以太网控制系统体系结构本课题要完成图1中工业以太网控制器的设计,控制器的cpu采用motorola的mcf5272微处理器,控制器控制器具有a/d转换接口、d/a转换接口、以太网接口、rs232接口和usb接口,通过触摸屏和lcd进行人机交互。控制器的操作系统采用嵌入式的uclinux,支持tcp/ip协议,实现控制信息的网络化传输。工业以太网控制器由硬件和软件两大部分组成的,前者是整个系统的物理基础,它提供软件运行平台和通信(包括人机交互)接口,后者实际控制系

12、统的运行。2.1 工业以太网控制器设计原则 工业以太网控制器应用于现代工业测量和控制,其设计遵循能够实现现场测控和网络测控这两个基本要求,具体实现以下几个方面: 1工业以太网控制器用于现场测控,控制器应该具有输入输出端口进行i/o读写,用于现场信号的测量和现场设备的驱动。 2工业以太网控制器用于现场测控,控制器应集成现场显示模块和人机操作接口,使用户能够方便对其操作和维护。 3工业以太网控制器用于网络测控,控制器需要集成当前流行的以太网接口。这样能够使控制器接入以太网网络,有利于实现远程测控和信息资源的共享。 4工业以太网控制器实现网络冗余控制,应该具有通用rs232接口,能够实现控制器之间的

13、冗余切换。 5工业以太网控制器具有usb接口,可以和usb主机进行数据通讯。 6工业以太网控制器用于工业现场测控和远程网络测控,能够解决一些复杂的多任务的处理工作,因此控制器需要移植嵌入式操作系统,以此为基础开发控制器系统应用,使软件开发简单。2.2 控制器硬件平台的选择嵌入式开发硬件平台的选择主要是嵌入式处理器的选择。当前嵌入式微处理器种类比较丰富,适合应用于不同的领域。在一个系统中使用什么样的嵌入式微处理器主要取决于应用领域、用户的需求、成本问题、开发的难易程度等因素。嵌入式微处理器很多种流行的处理器核,芯片生产厂家一般都基于这些处理器核生产不同型号的芯片,表1中列出了几种常见的嵌入式处理

14、器内核的特性。根据工业控制的应用需求和成本估算,确定采用coldfire内核的微处理器,coldfire有多种内核结构,v2、v3、v 4等。它们适用于不同的环境中,v2适合使用于家庭网关,工业控制,v3针对工业测控系统,v4适用于多媒体处理技术。因此选择了性价比较高的v2核处理器,内部集成了dsp运算功能,以满足设计要求。表1 常见的嵌入式处理器内核内核类型价格性能用途arm低中功耗低,用于便携式设备dragon ball低低速度低,用于pda设备coldfire低中功耗低,用于工业控制,家用电器power pc高高通信、网络等设备 coldfire v2是当前应用比较广泛的32位高性能嵌入

15、式risc处理器,三级流水线冯诺依曼结构。coldfire v2核具有如下性能:变长精简指令集;两个独立分离线程ifp和oep;三级流水线缓冲结构;32位的内部地址总线提供4g的寻址空间;32位数据线;1个用户可以访问的32位通用寄存器;用户态、特权态编程模式;向量基址寄存器分配异常向量表;优化的代码语言结构;全面调试支持。2.3 以太网控制器操作系统的选择 在嵌入式系统的开发中,嵌入式软件是实现系统功能的关键,也是计算机技术最活跃的研究方向之一。在进行软件开发之前,必须做好嵌入式操作系统选型这关键一步。不同应用对嵌入式软件系统有不同的要求,并且随着计算机技术的发展,这些要求也在不断变化。通常

16、,应用系统对嵌入式软件的基本要求是体积小、执行速度快,并具有较好的可裁剪性和可移植性。 嵌入式系统覆盖面很广,从很简单到复杂度很高的都有,这主要是由具体应用要求决定的。简单的嵌入式系统没有操作系统,而只是一个控制循环。但是,当系统变得越来越复杂时,就需要一个嵌入式操作系统来支持,否则,应用软件就会变得过于复杂,使开发难度过大,安全性和可靠性都难于保证。 目前,嵌入式操作系统有多种,如何选择一款既能满足应用要求,性能价格比又能达到最佳的实时操作系统使开发中的关键一步。嵌入式操作系统的选择主要从一下几个方面考虑: 1可移植性当进行嵌入式系统开发时,嵌入式操作系统的可移植性是重点考虑的部分。因为该操

17、作系统只有对该处理器提供支持,才能相对比较容易的实现移植。 2开发工具的支持程度选择嵌入式操作系统时必须要考虑与之相关的开发工具。编译器、汇编器、连接器等也都不同程度的影响着操作系统。 3应用性能要求有的嵌入式操作系统的代码只有几kb,这样可以大大节省系统的内存空间,可以节约费用,这对嵌入式系统的开发是很重要的,但选用它必须满足系统需求。所以选择嵌入式操作系统时,一定要了解内核中包括了什么。最小的内核往往支持很少的特性,典型的配置可能产生大得多的内核。 考虑上述各种因素之后,通常都可以找到一个合适的嵌入式操作系统。现在市场上的商用型系统的费用都比较贵,考虑到成本问题,以及嵌入式操作系统对微处理

18、器的支持,借助网上免费资料移植嵌入式uclinux操作系统到工业以太网控制器中是一个不错的选择。 uclinux能够对coldfire内核的微处理器提供很好的支持,uclinux具有如下特性:开放源代码,丰富的软件资源:内核功能强大,性能高效、稳定、多任务:支持多种体系结构:完善的网络通信,文件管理机制,内嵌完整的tcp/ip协议栈:支持大部分的周边外围硬件设备,驱动丰富:大小功能都可以定制,内核小于512kb,内核和工具小于900kb。控制器以优化改进的嵌入式uclinux为核心,结合大量模块化集成的嵌入式领域新技术,可以为工业测控系统提供一个性能优良的网络开发平台和应用平台。3 硬件系统设

19、计 从图2中可以看到,本设计选用mcf5272作为微处理器,具有以太网接口、usb接口、支持rs232的串口、lcd和触摸屏、4mb的flash、16mb的sdram、2路d/a接口、8路a/d接口、电源、时钟电路和复位电路。3.1 嵌入式处理器的选型设计 在选择嵌入式处理器是,通常需要考虑系统外围设备情况:总线的需求、是否有通用串行uart、是否有ethernet接口、是否有sfi总线、外设接口、是否需要i/o控制接口、是否需要a/d或者d/a转换等。另外,还需要考虑处理器的寻址空间,有没有片上的flash存储器,处理器是否容易调试,仿真调试工具的成本和易用性等相关信息。 在实际过程中,选择

20、硬件是一项复杂的工作,根据工业控制应用的实际需求,最后选用了motorola公司的mcf5272微处理器。mcf5272是最高集成度的coldfire v2标准产品,它在最小的面积上把v2核设计成最大的代码密度和性能。并且该微处理器性能优良,集成了丰富的外围器件和网络接口,易于控制器外围器件扩展,mcf5272的结构如图3所示。mcf5272微处理器以太网phyrj45usb接口rs232驱动器9针串口flash(4mb)2片am29lv160bsdram(16mb)2片hy57v651620btc108路a/d接口2路d/a接口lcd+触摸屏电源时钟电路复位电路图2 以太网控制器硬件总体架构

21、mcf5272新型外围设备包括如下几部分:快速以太网媒体存取控制mac,支持100mbps mii,10mbps mii和10mbps 7线实际接口;符合usb1. 1标准,可操作内外收发器的设备控制器;时分多工tdm控制器,可使产品以物理级水平与外部编码、isdn收发器以及其它使用gci (general circuit interface)或idli(interchip digital link)串行接口协议的外围设备连接;多信道hdlc软件模块;qspi模块,提供带有序列传输性能的串行外围接口;用于控制应用的脉冲宽度调制(pwm)单元;mcf5272设备同时还提供许多嵌入式应用产品所共有

22、的外围产品,如sdram控制器、dma、计时器、uart、芯片选择、通用i/o、片上存储以及全局的coldfire除错模块,所有这些都采取高效节省的方式,从而减少系统成本,加速系统设计。因此,选用mcf5272微处理器使控制器易于扩展,提高性能。图3 mcf5272芯片结构3.2 存储系统设计 在进行存储系统的设计时,必须明确mcf5272的数据总线宽度和端口数据宽度的设置方式。mcf5272的数据总线支持16位和32位模式,当reset时检测到qspi_dout/wsel为低电平时,数据总线宽度设为32位,当reset时检测到qspi_dout/wsel为高电平时,数据总线宽度设为16位,在

23、本设计中用一个4.7千欧的下拉电阻将qspi_dout/wsel设置为低电平,将数据总线宽度设为32位。mcf5272有/cs0/cs7 共8个片选信号,这8个片选信号对应的8个端口的数据宽度是可以配置的,/cs0/cs7分别对应寄存器csbr0csbr7,寄存器csbr0csbr7中都有一个2位的bw字段,用来设置端口的数据宽度,csbr0的bw字段是没有意义的,因为/cs0对应端口的数据宽度是由qspi_cs0/busw1 和qspi_clk/busw0引脚的电平值决定,而/cs1/cs7对应端口的数据宽度则由csbr1csbr7中的bw字段确定,reset后bw字段的值为“11”,对应端

24、口的数据宽度缺省设置为cache line的32位宽模式,根据设计的需要,在初始化程序中向csbr1csbr7中的bw字段写数据,以确定对应端口的数据宽度。 mcf5272内嵌4kb的sram和16kb的rom,还需要在片外对存储系统进行扩展,本设计用两片amd公司的am29lv160b flash存储器芯片构成flash电路,用两片现代公司的hy57v651620btc10 sdram芯片构成sdram电路。 am29lv160b的基本特性包括:am29lv160b的单片存储容量为16m位(2m字节),工作电压为2.7v3 .6v,采用48脚tsop封装或48脚fbga封装,16位数据宽度,

25、可以以8位(字节模式)或16位(字模式)数据宽度的方式工作。am29lv160b仅需单3v电压即可完成在系统的编程与擦除操作,通过对其内部的命令寄存器写入标准的命令序列,可对flash进行编程(烧写)、整片擦除、按扇区擦除以及其他操作。 考虑到程序容量的扩展性,选用两片am29lv160b构成flash电路,对应的片选信号分别为/cs0和/cs1,用于存放矢量表、uclinux嵌入式操作系统内核映像,以及romfs文件系统、应用程序、控制器状态信息和现场采集的数据。两片am29lv160b的byte#引脚都接高电平,将flash的数据宽度设置为16位的字模式,两片am29lv160b的地址线a

26、19a0与mcf5272的地址总线a20a1连接,两片am29lv160b的数据线dq15dq0与mcf5272的数据总线d31d16连接。当reset完成后,mcf5272会默认选中/cs0对应的器件,从复位地址0x0处读取ssp和pc指针,运行启动代码完成系统的初始化后,程序代码一般应调入sdram中运行,提高系统的运行速度。需要注意的是,虽然am29lv160b的byte#引脚接了高电平,flash数据宽度设为16位,但是mcf5272的/cs0和/cs1对应端口的数据宽度也需要设置。前面已经提到,/cs0对应端口的数据宽度是由qspi_cs0/busw1 和qspi_clk/busw0

27、引脚的电平值决定,为了将/cs0对应端口的数据宽度设置为16位,qspi_cs0/busw1 和qspi_clk/busw0分别连接4.7千欧的上拉电阻和下拉电阻,要将/cs1对应端口的数据宽度设置为16位,csbr1寄存器的bw字段设为“10”。 sdram具有单位空间存储容量大和价格便宜的优点,已广泛应用到各种嵌入式系统中。与flash存储器相比较,sdram不具有掉电保持数据的特性,但其存取速度大大高于flash存储器,且具有读写属性。因此,sdram在系统中主要用作程序的运行空间、数据及堆栈区。sdram采用现代公司的两片hy57v651620btc10,容量为 4m 16bit,共同

28、组成8m32bit的系统主存储器,该芯片常见封装为54脚tsop,兼容lvttl接口,支持自动刷新和自刷新功能。mcf5272内部集成sdram控制器,因此外围电路设计简单。两片sdram的数据线分别接mcf5272的高16位和低16位数据总线,拼成32位的sdram使用,所以两片sdram共享一个/cs7。3.3 以太网接口和串行接口设计从硬件角度看,以太网接口电路主要由mac控制器和物理层接口 (phy)两大部分构成。mcf5272内嵌一个mac控制器,支持媒体独立接口(mii)。可在半双工或全双工模式下提供10m/100mbps的以太网接入。在半双工模式下,控制器支持csma/cd协议,

29、在全双工模式下支持ieee802.3mac控制层协议。 mcf5272内部包含了以太网mac控制模块,但没有提供物理层接口,所以需外接一片物理层芯片以提供完整的以太网接口电路。本设计选用realtek的rtl8201bl芯片作为以太网的物理层接口。mcf5272内嵌带mii接口的mac控制器,rtl8201bl也提供了mii接口,将mii接口对应的信号连接起来就可以了。要注意rtl8201bl与rj45的连接,一般需要使用隔离变压器对rtl8201bl与rj45进行隔离,本设计没有选用专用的隔离变压器,而是将rj45与隔离电路进行一体化设计,具体电路见附录。 3.4 usb接口设计 mcf52

30、72包含usb模块,能够与usb主机(例如pc机)进行设备模式的数据通讯,mcf5272的usb模块内部包含一个usb收发器,mcf5272也为外接的usb收发器提供了接口,本着充分利用mcf5272已有的接口资源的原则,不使用外接的usb收发器,直接利用mcf5272内含的usb收发器,在mcf5272外部使用一个如图4所示的保护电路,构成一个完整的usb接口。mcf5272的usb_d+和usb_d与保护电路连接;mcf5272的usb_clk引脚连接一个能产生48mhz时钟信号的有源晶振。 图4 usb接口保护电路3.5 a/d和d/a接口设计 模拟量输入接口选用了高速低功耗、8通道、串

31、行12位max186模数转换芯片,可以完成模拟量信号采集。现场420ma测量信号经过2000精密电阻变为0.84v电压,进入max186的输入通道。max186具有一个内部4. 096v基准源,每一通道带跟踪/保持(t/h)电路,最高采样频率可达133kh。其sclk、din、dou、cs#引脚分别与mcf5272芯片的qspi_clk、 qspi_dout ,qspi_din,qspi_cs0相连。max186的控制字的写入与转换数据的输出通过串行数据线完成,其各个输入通道由控制字进行选择。 max186支持单端和差分两种模拟量输入方式,当选择单端模拟量输入方式时,ch0为8路相对于模拟地(

32、agnd)的单端模拟输入:当选择差分模拟输入方式时,ch0ch7分为四对模拟量输入:ch0/ch1, ch2/ch3, ch4/ch5和ch6/ch7, ad转换对两个模拟量的差值电压进行转换。max186支持单双极性转换,单极性模拟量输入范围是0vref:双极性模式下,输入范围为vref/2+vref/2.max186收到有效的cs#信号以后,就在每一个时钟sclk的每一个上升沿把一个最高位为“1”的控制字节的各位送入输入移位寄存器,控制器收到控制字节后,选择控制字中给定的模拟通道并在sclk的下降沿启动转换。 模拟量输出接口选用dac7612做为数模转换器件,支持2通道12位,04.095

33、v模拟电压输出,能够容纳或接受5ma电流,低功耗。dac7612支持单一+5v供电,包括一个移位寄存器,锁存,参考电压2.435v。相对于ad转换器件max186,da转换芯片dac7612其控制逻辑相对比较简单。dac7612数据通过sdi引脚传送,开始两位表示dac地址用来选择输出寄存器a/b,后面12位表示送往dac的12位数据,从高位开始送入移位寄存器。 dac内部采用双缓冲结构,这样新的数据不会影响进入dac的数据转换。数据从串行移位寄存器送入dac寄存器,loaddacs#引脚会产生一个有高到低的跳变信号。在传输数据的时应该先置loaddacs#为高电平。dac7612和mcf52

34、72的qspi模块连接,其clk、sdi、loaddacs#、cs#引脚分别与mcf5272芯片的qspi_clk、pa0、 qspi_din,qspi_cs1相连。需要注意的是,mcf52782通过gpio模块的pa0控制dac的 loaddacs#,gpio模块的信号都是与其他模块的信号复用的,pa0是gpio口与usb模块的usbtp信号复用,但是本设计中没有使用外接的usb收发器,因此usbtp信号没有使用,所以可以用pa0控制dac的 loaddacs#。 3.6 lcd接口设计 嵌入式网络控制器采用mtgs32240液晶显示模块,是台湾微端公司的一种中等显示规模的黑白液晶显示模块,

35、320点240行,占空系数1/240,像点细腻,蓝底白字,集成sed1335控制器,适合用于工业控制。控制器集成lcd显示模块,可以用于现场数据显示和故障诊断。lcd显示模块和cpu接口设计比较简单,外部8位数据总线和mcf5272的数据总线的最高8位连接。片选信号连接mcf5272的/cs6,当访问lcd显示模块时,设置/cs6对应端口的数据宽度为8位。读写信号分别和cpu的读写信号相连接。为了能够和motorola的cpu进行通信,应使lcd显示模块的sel1接高电平,sel2接地。 mtgs32240中集成了日本seikoepson公司sed1335液晶控制器。sed1335具有功能较强

36、的i/o缓冲器,微控制器在访问sed1335时不需判断其是否“忙”,sed1335随时准备接受mcf5272的访问并在内部时序下及时的把微控制器发送来的指令和数据传输就位。 sed1335接口引脚有db0db7直接挂在微控制器数据总线上,其cs片选信号低电平有效;a0:i/o缓冲器选择信号,a0=1,写指令代码和读数据,a0=0写数据参数和读忙标志;/rd是读使能信号;/wr是写操作信号;/res是复位信号,低电平有效;sel1,sel2接口类型选择信号,sed1335可以与具有8080类微处理器的微控制器接口,也可以与具有6800类微处理器的微控制器接口,mcf5272是6800类微处理器。

37、因此,设置sel1=1、sel2=0和mcf5272接口。 当显示汉字时,需要用1616像素的点阵,一种方法时把汉字作为1616像素的图形来显示,一个汉字需要两列816像素组成,共32个字节,这32个字节数据应按奇数字节的列的数据写入sed1335的vram,然后对偶数字节进行同样的操作;另一种方法就是使用汉字硬件字库的方法,把汉字库文件下载到第二片flash中,本设计选择在flash中存放汉字字库。3.7触摸屏接口设计 触摸屏附着在lcd显示器的表面,与lcd显示器配合使用,测量出触摸点在屏幕上的坐标位置,则可根据显示屏上对应坐标点的显示内容或图标获知触摸者的意图。把触摸屏应用到工业以太网控

38、制器中,与lcd配合使用,将使现操作简单易用。 触摸屏输入系统实际上是由触摸屏控制器、触摸屏和微控制器组成。触摸屏控制器选用德州仪器公司的ads7846,触摸屏选用四线式电阻触摸屏,与mcf5272其的接口框图如图5所示。y-y-x-x+int1qspi_doutqspi_dinqspi_cs2qspi_clk mcf5272ads7846触摸屏图5 ads7846与mcf5272的接口框图从图中可以看出,中断信号选用了mcf5272的/int1,因为即使在同等的优先级下,/int1也具有最高的优先权,而触摸屏作为人机交互的途径,显然应该具有最高的优先级。 触摸屏输入应用中还要解决触摸抖动和连

39、击问题。采用延迟测量法,即在接收到触摸屏笔中断时延迟一段时间(抖动延时30ms)后再测量,可消除抖动;测量完后再次延迟一段时间(连击延时300ms)后打开笔中断,可避免连击现象的出现。延迟的实现使用了mcf5272的可编程中断定时器tmr1。在主程序中完成初始化qspi寄存器、可编程中断定时器tmr1和笔中断/int1。在笔中断中主要完成关笔中断,设置笔中断标志和将定时计数值设置为抖动延时,在定时器中断程序中实现坐标值的测量、延时功能。3.8 端口地址译码电路设计本设计没有专门的端口地址译码电路,因为mcf5272提供了/cs0/cs7共8个片选信号,可以选择8个端口,任何时候,最多只有1个/

40、cs信号有效,与此相对应,mcf5272内部有csbr0csbr7和csor0csor7共16个寄存器,csbr寄存器中有一个20位的ba(base address)字段,csor寄存器中有一个20位的bam(base address mask)字段,当mcf5272要根据某个地址片选某个端口时,先读取csor0和csbr0的bam字段和ba字段,根据bam字段的值取该地址的高若干位,然后将这若干位地址与ba字段的对应位比较,如果相等,则有效对应的/cs0信号,如果不相等,再读取csor1和csbr1的bam字段和ba字段,直到命中为止,可见在端口地址译码的过程中,/cs0/cs7对应的优先级

41、别是从高到低的。举一个例子,假设csor0寄存器的bam字段为“0xffe00”,表示要取32位地址的高11位进行比较,csbr0寄存器的ba字段为“0xff800”,某个32位地址为“0xff9a256b7”,取该地址的高11位“11111111100”与ba字段的高11位比较,正好相等,则/cs0信号有效。在reset完成后,寄存器csbr0csbr7和csor0csor7都有缺省值,/cs0信号有效,这些缺省值不一定满足设计的需要,所以要在初始化程序中改变这些寄存器的值。由于mcf5272内嵌了端口地址译码电路,所以本设计要做的只是在初始化程序中设置寄存器csbr0csbr7和csor0

42、csor7,为/cs引脚对应的端口分配合适的地址空间。地址空间分配程序段如下:void init_chipselects() g_pchipselect-csbr0=0xff800201; /* chipselect0 - 2mb flash*/ g_pchipselect-csor0=0xffe00014; g_pchipselect-csbr1=0xff000201; /* chipselect1 - 2mb flash*/ g_pchipselect-csor1=0xffe00014; g_pchipselect-csbr2=0; g_pchipselect-csor2=0; g_pch

43、ipselect-csbr3=0; g_pchipselect-csor3=0; g_pchipselect-csbr4=0; g_pchipselect-csor4=0; g_pchipselecr-csbr5=0; g_pchipselect-csor5=0; g_pchipselect-csbr6=0xdooood01; /* chipselect 6 - lcd控制*/ g_pchipselect-csor6=0xfffffe50; g_pc11ipselect-csbr7=0x00000701; g_pc1flpselect-csor7 = 0xff0007c; /* chipsel

44、ect 7 - 16mb sdram*/3.9 电源电路设计本设计选用的芯片需要3.3v和5v两种直流电源,选用了转换效率比较高的lm2596-3.3和lm2596-5开关稳压电源芯片。lm2596是国家半导体公司的开关稳压芯片,具有150khz的开关频率和3a的工作电流,可以满足系统需要。lm2596的功能是将未稳压的直流电源转换成一定电压的理想直流电源,根据lm2596 datasheet提供的数据,选择lm2596的电源输入为未稳压的12v直流输入。lm2596需要的未稳压的12v直流电源由220v、50hz的交流电经过变压、整流和滤波后产生。进行lcd接口电路的设计时需要注意,lcd的

45、驱动需要负压输入,本设计选用台湾沛亨公司的aic1652产生可调负压输出,供lcd接口电路使用。此外,本设计选用的lcd模块采用的是冷阴极荧光灯(ccfl)背光,而冷阴极荧光灯需要在高压交流电的驱动下才能正常工作,通常需要将直流低压电逆变为高压交流电,而mtg-s32240没有提供ccfl逆变器,因此本设计选用了国产的tad165-4 ccfl逆变器为lcd的背光提供高压交流电输入。产生lcd驱动需要的负压输入和lcd背光需要的高压交流电输入的电路可以认为是电源设计的一部分,但由于其特定的应用,在画硬件系统电路原理图时将这两部分电路画在了lcd接口电路中。3.10复位和时钟电路设计本设计选用m

46、ax708tcsa芯片实现复位电路,具体电路如图6所示。该复位电路的工作原理如下:在系统上电时,当vcc没有达到3.3v时,系统处于复位状态,/reset输出为低;当vcc的电压达到高电平的门限电压时,/reset端输出为高电平,系统进入正常工作状态。当按下s1时,/mr端接地,/reset也输出为低,系统复位。图6 复位电路 mcf5272的cpu外部时钟输入引脚clkin的输入频率范围是从直流到66mhz,为了获得最高性能,clkin的输入采用66mhz时钟,由66mhz的有源晶振产生。 mcf5272的usb模块的usb_clk引脚需要48mhz时钟输入,由48mhz的有源晶振产生。 本

47、设计的rs232接口支持的最大数据传输率为120 kbit/s,rs232接口与uart模块连接,uart模块有一个外部时钟输入引脚urt_clk,这个引脚可以被屏蔽,urt_clk被屏蔽后,uart模块使用mcf5272的cpu外部时钟输入clkin作为时钟源,clkin在uart模块内部经过分频,从而支持120 kbit/s的数据传输率。因为uart模块可以使用clkin作为时钟输入,所以为了简化设计,不使用urt_clk,节省了一个有源晶振。 本设计选用的phy芯片rtl8201bl需要25mhz的时钟输入,该时钟由25mhz的无源晶振提供。4软件系统设计本设计选用uclinux作为操作

48、系统,uclinux本身并不支持实时性,目前存在两种不同的方案提供uclinux对实时性的支持,它们分别是rtlinux( rtl) 和rtai(real time application interface)。有了这两种方案,uclinux可以应用到对实时性要求较高的场合。开发uclinux通常用标准的gnu工具链。经过修改的工具链支持一些高级特性,比如eip (execute-in-place)技术,共享库支持等。 uclinux与标准linux兼容,uclinux除了不能实现fork( ) 而是使用vfork() 外,其余uclinux的api函数与标准linux的完全相同。这并不是意味

49、着uclinux不能实现多进程,实际上uclinux多进程管理是通过vfork()来实现的,或者是子进程代替父进程执行,直到子进程调用exit ( )函数退出,或者是子进程调用exec ( )函数执行一个新的进程。大多数标准的linux应用程序在从linux操作系统移植到uclinux系统时,几乎不用做什么大的改动,就可以完全达到对一个嵌入式应用程序的要求(例如合理的资源使用)。uclibc对libc(可用于标准linux的函数库)做了修改为uclinux提供了更为精简的应用程序库。uclinux带有一个完整的tcp/ip协议,同时它还支持许多其他网络协议。uclinux对于嵌入式系统来说是一

50、个网络完备的操作系统。一般uclinux都自带了常用的设备驱动,字符设备驱动的典型例子有串口驱动,打印驱动,usb设备驱动等,块设备驱动的典型例子有romfs,jffs驱动,硬盘驱动等;以太网驱动的典型例子有fec驱动,用户只需开发自己添加设备的驱动。 4.1 修改引导程序 引导程序在嵌入式uclinux中代码量较小,但是作用较大。这里的引导程序包括两个方面的内容:引导内核的bootloader和内核自身的引导程序部分。bootloader是cpu开机后执行的第一个程序,它的任务就是将内核装载到内核要求的地址。内核引导程序是指内核运行前的一段代码,也可以说是内核初始化部分。比如初始化硬件,初始

51、化ram;把uclinux内核中的数据段拷贝到ram中去;清空bss段等。使用bootloader启动引导程序可以使系统做更多的事情,通过它可以初始化硬件,ram和系统的i/o设备等。同时它还可以装载写在flash上的不同内核,或者通过外部设备传输过一个内核并且装载运行它。可以通过串口串口或者以太网口加载pc机上编译好的uclinux内核或者根文件系统。一般情况下bootloader都是固定的烧写在flash上面并且一般采用锁定的方法防止被擦除。作为系统启动程序,最先要考虑的是cpu在加电的时候运行那个地址的代码。本设计计划选用motorola为coldfire设计的dbug程序作为uclin

52、ux启动支持,它的任务是初始化硬件系统,把uclinux拷贝到内存处,然后从该处运行uclinux。它可以完成bootloader的所有任务,支持从网络上烧写uclinux (image.bin)到flash中。dbug的源代码可以motorola的网站上下载,针对本设计,只需要修改它的几个初始化文件就可以用在目标系统上。 4.2 lcd驱动程序的设计uclinux的lcd控制芯片sed1335与内核接口的驱动程序可分为三部分:与内核接口,通过数据结构file_operations来完成;与系统启动代码的接口,对设备进行初始化;与设备的接口,对设备的读写等操作。在uclinux操作系统中,系统

53、引导时,通过syse_setup(linux/fs/filesystems.c)进行系统初始化。sys_setup又调用device_setup进行设备初始化。lcd设备初始化由函数。chr_dev_init(linux/drivers/char/mem.c)调用初始化函数lcdset()。lcd控制芯片sed1335设备驱动程序设计具体步骤如下:(1) 在/dev/下用mknod手工创建一个设备,设备名即下面要注册使用的设备名。即touchfb c 23 0。其中fb表示设备名称,代表字符设备,23代表主设备号,0代表次设备号。uclinux自带工具集中的genromfs工具会将fb自动转换

54、为fb。(2) 在程序中定义一个file_operations结构,指定向上提供的接口操作。struct file_operationsread sed1335fb_read(),write sed1335fb_write(),ioctl sed1335fb_ioctl(),mmap sed1335fb_mmap(),open sed1335fb_open(),release sed1335fb_release(), sed1335fb_fops;此 设备 驱 动程序分为:read, write, ioctl, mmap, open和release等函数操作,这是构成整个驱动程序的核心部分,实

55、现了与用户空间操作的接口。编写lcd初始化程序lcdset (),初始化lcd设备。(3) 驱动程序的注册。实际上就是向内核注册lcd设备文件(主设备号/次设备号)及其一系列标准操作接口。注册的工作就是向uclinux管理的设备链表中加入一个节点。注册函数调用为:result=register_chrdev(sed1345fb_major,fb,&sed1335fb_fops),其中sed1345fbes_major登记lcd设备的主设备号;fb是lcd设备的名称,sedl335fb_fops是lcd驱动程序实现的文件操作集。4.3 触摸屏驱动程序的设计本设计中,触摸屏驱动程序采用字符设备方式

56、,其结构如图7所示。其中:中断处理程序完成对触摸屏触摸点的位置读取;ts-open()给触摸屏驱动程序分配中断源;ts-init()对mcf5272的qspi功能寄存器进行初始化;ts-ioctl()函数的功能是把从中断处理程序中获得的x、y方向的a/d转换值赋给用户空间的程序。touchscreendriver中断处理程序ts_open()ts_init()ts_ioctl()图7 触摸屏驱动程序结构在本系设计中,对触摸屏操作过程为:当启动uclinux操作系统时,完成其触摸屏驱动程序的初始化,即完成ts-init()函数中的功能;当uclinux操作系统用户空间的程序打开触摸屏驱动程序时,即执行驱动程序中ts-open()函

温馨提示

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

评论

0/150

提交评论