当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]文章选用了S3C44B0x处理器作为控制器内核,开发完成了约定键盘、菜单操作及LCD显示程序数据采集及处理实现软件PC通讯协议及实现软件,在其控制下完成数据地采集和处理并实现

文章选用了S3C44B0x处理器作为控制器内核,开发完成了约定键盘、菜单操作及LCD显示程序数据采集及处理实现软件PC通讯协议及实现软件,在其控制下完成数据地采集和处理并实现对广播发射机的工作状态进行监控,同时具有人机交互的功能。

1.前言

船舶上使用的信号发射机是连续工作的,所以需要一个控制器对发射机的工作状态进行监控,常见的是用单片机作控制器的内核,但由于32位微处理器具有更好的精度和可靠性且低成本低功耗,所以在工业控制领域的应用日益广泛。采用嵌入式的32位微处理ARMS3C44B0x作为控制器的内核,设计的控制器将比用单片机作内核的处理器具有更全面的功能和更好的使用性能。

发射机控制器的主要功能是对多路模拟量和开关量的数据采集和处理监控发射机的工作状态;控制器控制发射机同时控制器又受上位机的控制,它要能在任意时刻准备好接收从上位机串口、网口发来的数据,它们之间的相对关系如图:

 

图1 控制器系统结构图

上位机向控制器发送数据从而实现对控制器的控制,首先上位机送出机号,再送命令字;控制器也要向上位机上传数据完成通讯应答,它首先解析机号是否与自己的机号一致,若一致则再解析命令字,根据命令字来送出上传的数据完成应答;若不一致则不再作进一步的数据解析。它们的通讯方式有串口通讯和以太网通讯两种;控制器和发射机的数据传输主要有模拟量的采集和开关量的输入输出;另外,人机接口模块实现发射机工作过程中的参数的实时显示和参数修改和查询。实时采集的数据是由AD采样得到的,需要注意的是S3c44B0没有采样保持电路所以通道的切换频率不能超过100Hz,在ADC开启路时都需要一个延时,利用这段时间来对上一路进行滤波而提高程序的效率。整个采样的过程可以描述为开启当前通道,然后滤波上次采样的通道(中位值平均滤波法)。

2.开关机描述及软件设计

 

图2 传口通讯流程图

项目的开发首先要完成开关机功能、人机接口功能模块、通讯模块的程序设计和调试,先讨论开关机的程序设计;用户要求控制器上键的功能是能编辑的即每一个键的功能不固定,可以通过PC机修改;开机时要按优先级顺序由高到低输出一系列的动作,每个动作都有可编辑的优先级(通过PC机编辑),一个动作输出后可能会引起其它同一优先级水平动作的发生,这就是动作的关联。在开当前优先级动作时必须要检测更高优先级动作的状态,遇到故障需要进行故障处理。针对上述的较复杂的需求设计如下数据结构:

 

图3 开机流程

typedef struct{

char *pName; //动作名称

char FunctionID; //动作(功能)编号

char Priority; //动作优先级

short KeepTime1; //等待前一个输出动 作稳定需要的时间

short DelayTime1;//下一动作执行前的延时

short DelayTime2; //当检测模拟量或开关量不正常时需要重复检测的延时

short RepeatNum;//有故障重新检测的次数

}OutputAction;

把所有的功能依次编号,把这个编号赋给某个键则该键就具备了该功能,功能的编辑通过修改OutputAction.FunctionID的值实现;每个键最多有16个功能,最少没有功能;在每一个键的所有功能都是轮循有效的,用一个循环链表来存放功能编号,始终是处于表头位置编号对应的功能有效,每个功能(动作)只能归属于一个键,在每次开机时首先由串口把已定义好的键功能送到控制器并烧写到固定位置的ROM中;动作优先级的编辑是通过修改结构体中 OutputAction.Priority的值实现;开机时再从ROM中把这些数据读出来,若上位机没有进行键功能编辑就按默认形式进行,需要指出的是关机时,按和开机向反的顺序依次关闭所有的输出动作.

开机时根据固定位置ROM中的内容或按默认的定义获取动作的属性,①首先搜索优先级最高的动作编号,然后根据不同的延时把这些动作依次送出;②把优先级降一级,检测比当前优先级更高的所有的输入、输出的状态是否正常如果正常则送出当前优先级的动作,再重复②的过程,否则进入故障处理程序,如果处理故障成功则继续重复②的过程,否则关机并返回开机失败信息。开机流程图如图3所示。

在软件设计中的一个特色就是利用I/O端口来模拟IIC总线来读取键值,其总体思路是用两个端口一个模拟IIC的时钟信号,另一个模拟IIC的数据线。需要注意的是在配制I/O端口时,时钟线始对应的端口终是输出口而数据线端口是不确定的。通过给端口置位和清零结合延时来模拟IIC的数据传输协议。在调试的过程中发现,这种方法能很好的完成键值的获取和对CPLD器件的访问。

3.人机接口模块设计

要监控发射机工作状态就必须具备良好的人机接口,需要给控制器选配合适的显示设备,在本项目中选用7.8寸640×480象素STN型彩色液晶显示屏(LCD),采用8位数据单扫描方式,在实际应用中显示效果很好不仅成本低且美观大方,STN型LCD屏与44B0x的接口比较简单但需要注意的是第18 引脚(Vcom)通过一个变阻器与电源相连,调整该引脚上的电压就可以调整LCD屏的对比度。软件设计中的关键是菜单的设计和按键响应及处理,由于本项目中的界面较多且存在翻屏所以宜设计一个统一处理的算法,为此,把每个界面统一编号WndID,把按键作为一个消息处理MessageFun();每次按一个键就调用MessageFun(),找到需要显示的界面并在LCD上显示。LCD翻屏的方法是每次记录显示的内容在整个菜单数组中的偏移,若当前行超过偏移就需要翻屏否则不翻屏。对于菜单的设计作如下处理:用一个结构体把一个菜单的属性完整地封装好,其属性包括菜单名称、坐标、参数标志、参数。

typedef struct{

UINT8T Menu_ID;//菜单编号[!--empirenews.page--]

UINT8T *Text; //菜单名称

UINT16T xPos; //菜单x坐标

UINT16T yPos; //菜单y坐标

UINT8T ParaFlag; //参数标志

UINT8T pData[7]; //参数

}Menu;

 

图4 菜单显示

利用结构体将每一个菜单的属性都封装好再放到一个数组里面,这样对菜单的个数没有限制且容易管理,每一个菜单的信息都很清晰,编程不易出错。

人机界面操作的核心工作就是界面的切换、主菜单和子菜单操作。根据按键来确定对应的界面ID号,切换界面的方法通常有两种改变显存的内容和改变显存的基址,改变显存的基址就需要定义很大的显存,这样做的优点是利用硬件资源使LCD屏显示的刷新速度很高、界面切换快,缺点是很大地浪费了系统资源;若改变显存中的内容就需要用软件的方法来更新显存中的内容,这种方法的好处就是节约了系统资源,但是增加的软件设计的复杂度;本项目采用的就是更新显存内容的方法在实际的调试中发现能够很好地满足要求。关于主菜单和子菜单的操作设计了一种统一调度的算法,其思想是根据获取的按键信息来确定主菜单的ID号和子菜单的 ID号,使用焦点标记当前菜单的ID号,由这两个ID号就可以确定相应的主、子菜单同时进入对应的功能处理程序。

4.以太网通信模块设计

在硬件设计时选择RTL8019AS网络控制芯片,它可以工作在8/16 位总线宽度下传输速度为10Mbps,遵循IEEE 802.3 协议。内部具有16KB SRAM集成了MAC收发缓冲区和物理层的功能,它用来接收和发送以太网的物理传输数据,当RTL8019AS收到网络数据包后,RTL8019AS内部的某些控制寄存器的状态就被改变,通过设置中断或者查询的方法来读取这些寄存器的状态判断数据是否收到;发送数据时,将数据放入到RTL8019AS内部数据缓冲区后,通过控制内部的寄存器,将缓冲区的网络数据发送到网络上去。该芯片有三种工作模式:跳线模式,即插即用模式,免跳线模式。在项目中网卡芯片 RTL8019AS是在跳线模式下工作。对该芯片的驱动主要包括以下几个步骤:复位、初始化、收发数据。RTL8019的复位引脚RSTDRV是高电平有效,有效的保持时间宜大于800ns,且在由高到低切换后的100ms后才对芯片操作。在对芯片初始化之前需要预先分配好片内RAM中的空间即接收和发送缓存的大小,在把所有的设置参数在初始化的时候一起写入RTL8019的寄存器完成初始化。

5.结语

项目开发调试的过程中有许多软件和硬件方面的困难,但是问题最后都是在不断地解决,如系统的了串口,LCD,AD采样,Flash操作的调试等工作以及控制器所要具备的人机交互功能的程序设计且需调试通过。把以太网模块加到工程中后,其物理层芯片的驱动程序需进一步调试,把TCP/IP协议加入模块,参照成功的案例,完成系统的调试任务。同时,本文具有以下创新点:

(1)开发应用32位微处理ARMS3C44B0x作为控制器的内核,使控制器比用单片机作内核的处理器具有更全面的功能和更好的使用性能。

(2)在菜单的设计中,用一个结构体把一个菜单的属性完整地封装好,其属性包括菜单名称、坐标、参数标志、参数。

(3)解决了该网卡芯片使RTL8019AS正常工作的问题,在对芯片初始化之前需要预先分配好片内RAM中的空间即接收和发送缓存的大小,在把所有的设置参数在初始化的时候一起写入RTL8019的寄存器完成初始化。

[参考文献]

[1] 田泽.嵌入式系统开发与应用实验教程[M].北京:北京航空航天大学出版社,2005.

[2] 贾志平,张瑞华.嵌入式原理与接口技术[M].北京:清华大学出版社,2005.

[3] 王田苗.嵌入式系统设计与实例开发[M].清华大学出版社,2003.

[4] 崔登志,戴学丰,刘树东,等.用ARM控制CAMD无线Modem发送短信息[J].微计算机信息,2006,11-2:136-138.

[5] 徐伟,谭树人,黄浩亮.基于AT91RM9200的图象采集系统设计[J]. 微计算机信息,2006,11-2:120-122.

[6] 杨占华,扬燕.数据挖掘在智能搜索引擎中的应用[J].微计算机信息,2006(4)下:244-245.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭