您的位置 首页 嵌入式

嵌入式MultiBus-CPU模块规划可满意工业现场的测控需求

嵌入式MultiBus-CPU模块设计可满足工业现场的测控需要-MultiBus-CPU模块是基于AT91RM9200微控制器的智能化多总线测控模块。该CPU模块主要实现对下位机的控制,并建立基于Modbus-RTU总线协议的总线通信体系结构,让系统设备可以无缝接入基于Modbus-RTU模式的总线系统,可靠、实时、准确地实现工业现场数据采集、信号输出等功能;同时,提供标准视频接口用于显示16位色图像,提供标准音频输入输出接口用于实现录放音功能。该模块作为嵌入式开发环境的核心,可实现人机界面的交互操作和显示、海量数据的存储、多串口、多USB口、音频信号输入输出、以太网口等接口;运行Linux操作系统,可以快速搭建面向应用的嵌入式应用系统。


     引 言

MultiBus-CPU模块是根据AT91RM9200微操控器的智能化多总线测控模块。该CPU模块首要完结对下位机的操控,并树立根据Modbus-RTU总线协议的总线通讯体系结构,让体系设备可以无缝接入根据Modbus-RTU形式的总线体系,牢靠、实时、精确地完结工业现场数据收集、信号输出等功用;一起,供给规范视频接口用于显现16位色图画,供给规范音频输入输出接口用于完结录放音功用。该模块作为嵌入式开发环境的中心,可完结人机界面的交互操作和显现、海量数据的存储、多串口、多USB口、音频信号输入输出、以太网口等接口;运转Linux操作体系,可以快速建立面向运用的嵌入式运用体系。

1 MulTIBus-CPU模块软件规划方案

为了满意实践运用对实时性的要求,MulTIBus-CPU模块软件选用了Linux 2.6.21操作体系。其间,Linux 2.6的内核使命可以被抢占,这一特性使得Linux 2.6内核适用于实时体系和嵌入式体系中。驱动程序在Linux环境下进行开发,运用层选用规范的通讯协议——Modbus协议,操控设备可以连成工业网络进行会集监控。经过共同的Modbus接口,MulTIBus-CPU模块与扩展下位机均可作为对等设备在工业网络中进行对话,使得各个设备无缝接人到工业操控网络中。MNTIBus-CPU模块支撑现阶段工业测控体系中最常用的以太网(UDP)通讯及RS485通讯协议。因而,本模块在与其他功用模块进行通讯时,选用Modbus-RTU数据通讯方法,运用以太网(UDP)/RS485总线进行数据的发送与接纳,完结对各功用模块的会集监控。软件整体结构如图1所示。

嵌入式MultiBus-CPU模块规划可满意工业现场的测控需求

2 MultiBus-CPU模块硬件规划方案

硬件规划原理图如图2所示。MultiBus-CPU模块选用Atmel公司的AT91RM9200为主处理器,交融了ARM920T ARM Thumb处理器。其作业于180 MHz时功用高达200 MIPS;具有存储器办理单元,可以运转Linux等实时操作体系;具有10/100 Base-T型以太网卡接口,只需外扩一个PHY即可完结以太网通讯;具有USB 2.0全速(12 Mb/s)主机双端口,可以扩展键盘、鼠标、U盘等规范外设。

嵌入式MultiBus-CPU模块规划可满意工业现场的测控需求

主处理器AT91RM9200具有5个串口:1个DEBUG串口,规划为RS232接口,可以直接衔接PC的串口进行调试;1个RS485接口,可以与其他功用模块的RS485接口组成网络;其他3个串口均规划为RS232接口。

经过CPU模块的外部总线和Epson公司的S1D13506显现芯片扩展了一个VGA接口,分辨率为640×480,256色。IS41LVl6100为其供给独立显存,容量为1M×16位,支撑EDO PAGE形式。

GL850A芯片是一个低功耗的USB 2.0 HUB操控器,AT91RM9200本身的USB HOST接口经过GL850A芯片扩展为4个USB HOST接口。

DS3231是精度十分高的I2C集成实时时钟。其精度在0~40℃内高达±2 ppm,在-40~85℃内精度可达±3.5ppm;板载电池,掉电后可以坚持时刻;可为体系供给秒、分、小时、日、日期、月、年等信息,具有主动闰年调整功用。

WM8731是一个低功耗网络音频编解码器(CODEC),具有输出功率放大器和可编程采样速率设定功用。WM8731芯片经过I2S接口与CPU衔接,为CPU模块扩展了音频信号的输入输出接口,使体系具有音频采样功用,音频信号数字化后可以经过以太网传送。

DM9161为10/100M快速以太网物理层单芯片收发器,H1102为网络阻隔变压器,用于完结10/100M自适应的牢靠网络传输功用。

MultiBus-CPU模块经过增加显现操控芯片及其驱动完结了显现接口,体系运转信息可以直接经过VGA显现器显现出来,大大提高了人机交互的可操作性。

3 显现模块硬件规划方案

3.1 接口芯片挑选

接口芯片选用Epson公司出产的大规模显现操控器S1D13506。它是以SEDl354操控器为根底发展起来的具有更多功用的LCD显现操控器,支撑全类型、大规模的LCD及CRT/TV显现器。S1D13506内置RAMDAC(Random Access Memory Digital-to-Analog Converter,随机数模转化记忆体)硬件X-Y轴转置二维加速器,共有114个存放器,可以灵敏地设置各种不同的显现方法。

3.2 接口硬件规划

S1D13506与处理器的接口选用通用类型总线(包含数据总线、地址总线、操控总线)。接口界说如表1所列。芯片所用像素时钟CLK1、CLK2是由同步信号发生器ICS1523来供给的,外接1M×16位的EDO-DRAM IS41LV16100。

嵌入式MultiBus-CPU模块规划可满意工业现场的测控需求

图3是显现电路整体衔接图。S1D13506衔接到AT9IRM9200的信号有:M/R、AB1~AB20、DB1~DB15、WE0、WE1、RD、RD/WR、CS、RFSET、BUSCLK、WAIT。衔接到ICSl523的信号有:CLCKI、CLCK12(用于内部显现及外部媒体接口时钟)。衔接到IS41LVl6100的信号有:DRAM-WE、DRAM-RAS、LCAS、UCAS、MA0~MA9、MD0~MD15。其间,MD1、MD2、MD4、MD6、MD15需求外接上拉电阻用于S1D13506初始装备。其他操控信号衔接到LCD/CRT显现器。S1D13506芯片有个测验使能引脚TFSTEN在芯片正常作业时接地。假如不运用RAMDAC的数模转化功用,那么IREF引脚有必要接地。ICS1523经过I2C串行总线(TWD、TWCK)承受AT91RM9200对它的存放器装备。本规划中,ICS1523的输入时钟是50 MHz,输出CLK1为25 MHz,CLK2为12.5 MHz。

嵌入式MultiBus-CPU模块规划可满意工业现场的测控需求

4 显现模块软件规划方案

4.1 Linux下LCD驱动程序开发

在Linux内核中,设备驱动程序是一个个独立的“黑盒子”,可以使某个特定的硬件呼应一个界说杰出的内部编程接口,一起彻底躲藏了设备的作业细节,用户操作只需求经过一组规范化的调用即可完结。把这些调用映射到设备特定的操作上,则是设备驱动程序的使命。而每一个设备都可以看作是一个文件,所以翻开的设备在内核中都可以由一个File结构标识,内核运用File_operations结构拜访驱动程序的函数。每个文件(设备)都与它自己的函数集相关联。这些操作函数首要担任上面所说到的体系调用的完结,并因而被命名为open、read、fork、ioctl等。

LCD操控器的功用是显现驱动信号,然后驱动LCD。用户只需求经过读写一系列的存放器,就可以装备和显现驱动。装备LCD操控器时,最重要的一步是帧缓冲区(FrameBuffer)的指定。帧缓冲区为图画硬件设备供给了一种笼统化处理,它代表了一些视频硬件设备,答应运用软件经过界说明确的界面来拜访图画硬件设备。用户程序只需与帧缓冲驱动程序笼统出来的接口打交道,就可以把要显现的内容从缓冲区中读出,然后显现到屏幕上。

在FrameBuffer驱动程序中,最中心的结构体是帧缓冲区驱动程序接口,即struct fb_info。它记载了当时FrameBuffer硬件设备的状况,一般在Linux的include/Linux/fb.h中界说。最首要的结构体有:Struct fb_fiX_sereeninfo,界说显现输出设备本身的特点,如屏幕缓冲区的物理地址和长度;Struct fb_var_screeninfo,记载帧缓冲设备和指定显现形式的可修正信息,包含显现屏幕的分辨率、每个像素的比特数和一些时序变量。

若要先设定帧缓冲区的物理地址和长度,就要在S1D13506.h里指定,然后在驱动程序里经过对fb_fix_screeninfo赋值来完结:

嵌入式MultiBus-CPU模块规划可满意工业现场的测控需求

界说当时显现输出状况,经过对fb_var_screeninfo结构赋值来完结:

嵌入式MultiBus-CPU模块规划可满意工业现场的测控需求

Linux下驱动程序总是先调用module_init(),因而LCD初始化经过调用module_init(sldl3xxxfb_init)来完结。sldl3xxxfb_init初始化函数部分代码如下:

嵌入式MultiBus-CPU模块规划可满意工业现场的测控需求

首要对LCD的背光灯进行点亮。LCD显现是一种被迫的显现形式,不能发光,只能依托操控透射或反射周围环境的光来到达显现的意图。因而,有必要经过写存放器用高电平指示对LCD加3.2 V电压来完结背光灯的点亮。其函数的部分代码如下:

嵌入式MultiBus-CPU模块规划可满意工业现场的测控需求

体系选用的五颜六色LCD最佳分辨率是800×600,但经过前面临结构Struct fb_var_screeninfo的赋值并不能真实设定其分辨率。由于结构Struct fb_var_screeninfo的值仅仅作为一个显现记载来用,有必要经过设定存放器的值才干到达需求的分辨率。本体系在S1D13506.h头文件里用一个数组对存放器的设置作了一个预界说,然后在初始化函数里运用sldReg和sldValue两个实参写入,然后设定了存放器的值。

嵌入式MultiBus-CPU模块规划可满意工业现场的测控需求

数组里每个元素的第1个值代表存放器的称号,第2个值代表要设定的数值(1个十六进制的数)。32h存放器用于设定LCD显现的水平像素数目,计算方法是把第2个值转化成十进制,加1再乘以8就得出水平像素。例如,0x63换算成十进制为99,加1乘以8便是800。38h和39h存放器别离设置成0x57和Ox02,就可以显现600的笔直分辨率。计算方法是以39h存放器的bitO和bitl位为高位,38h存放器的bit0~bit7为低位,组成的一个十六进制的数,再转化成十进制。除了要修正这3个存放器外,34h和3Ah这两个存放器也会对显现的分辨率有影响。

帧缓冲设备也归于字符设备,要经过“文件层一驱动层”的接口方法来对LCD进行驱动,就有必要对File_operationes数据结构的参数fh_ops进行填充,并完结其对应的成员函数。本体系在include/Limix/fb.h中界说了帧缓冲区的文件操作,部分代码如下:

嵌入式MultiBus-CPU模块规划可满意工业现场的测控需求

这个结构中的每一个字段都有必要指向驱动程序中完结特定操作的函数。关于不支撑的操作,对应的字段可以被置为NULL,或留到后续开发时再增加。本模块中完结特定操作的成员函数的代码如下:

嵌入式MultiBus-CPU模块规划可满意工业现场的测控需求

接下来把一些调用的函数写完好,编写好程序后用arm-linux-gcc编译驱动模块;然后对其动态加载,或静态将其编译到Linux内核;加载完程序后,就可以编写运用程序进行读/写等操作了。

4.2 MiniGUI的移植

在嵌入式开发环境中,独立的显现操作人机界面是十分必要的。它可以使嵌入式体系对PC体系的依赖性降到最低,可以直接操作嵌入式体系并显现运转成果。MultiBus-CPU模块选用规范的USB键盘、USB鼠标、VGA显现器作为人机交互界面,运用习气类同于PC机,简易了开发者的开发进程,而且用户的运用进程也变得简略、方便、易于操作。

MiniGUI是遵从GPL条款发布的自由软件,其方针是为根据Linux的实时嵌入式体系供给一个轻量级的图形用户界面支撑体系。与QT/Embedded、MicoroWindows等其他GUI比较,MiniGUI的最显著特点便是轻型、占用资源少。据称MiniGUI可以在CPU主频为30MHz、仅有4 MB RAM的体系上正常运转,这是其他多种GUI所无法到达的。

MiniGUI在AT91RM9200上的移植包含4个过程:

①构建Linux穿插编译环境。一般运用的穿插编译东西是arm-Linux-gcc2.95.3版别。下载此穿插编译东西后在Linux内装置好,而且在PATH中增加/usr/local/arm-Linux/bin途径,穿插编译环境就构建好了。

②穿插编译MiniGUI,这是最要害的一步。首要从网上下载MiniGUI源程序包(包含库文件和资源文件),以及其他支撑图形界面的源程序包;然后用上一步装置好的穿插编译东西对其进行编译,编译时可指定编译后库文件及资源文件的装置方位。

③复制MiniCUI资源到开发板。将第2步编译好的库文件及资源文件复制到开发板上。复制之前先用arm-Linux-strip指令铲除文件中的调试信息,这样就使文件体积大大缩小,可以满意嵌入式体系的需求。

④板载Linux的MiniGUI环境装备。将第2步装置好的MiniGUI装备文件MiniGUI.cfg下载到板子中,并将其间fbcon的defaultmode设置为适宜的显现形式。

结 语

本文根据嵌入式技术规划了一种MultiBus-CPU模块,可以满意各种嵌入式开发环境的规划要求。该模块软硬件均选用模块化规划,选用国外广泛运用的ModBus通讯协议,可满意工业现场的测控需求。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/97843.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部