1、硬件平台设计1.1LPC2214LPC2214是Philips公司的一款嵌入式微控制器(MCU),它采用了ARM7TDMI内核,片上资源十分丰富,带有16K字节片内静态RAM和256KB嵌入的高速Flash存储器。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低30%,而性能的损失却很小。由于LPC2214较小的144脚封装、极低的功耗、多个32位定时器,8路10位ADC(64脚和144脚封 1、硬件平台设计
1.1 LPC2214
LPC2214是Philips公司的一款嵌入式微控制器(MCU) ,它采用了ARM7TDM I内核,片上资源十分丰富,带有16K字节片内静态RAM和256KB 嵌入的高速Flash存储器。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。
对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低30%,而性能的损失却很小。由于LPC2214较小的144脚封装、极低的功耗、多个32位定时器, 8路10位ADC ( 64脚和144脚封装)以及多达9个外部中断使它们特别适用于工业控制、医疗系统、访问控制和POS机。由于内置了宽范围的串行通信接口,它们也非常适合于通信网关、协议转换器、嵌入式软modern以及其他各种类型的应用。
1.2 CPLD扩展电路及键盘LCD
该电路的主要功能是对CPU芯片的外围功能进行扩充,使系统具有良好的人机接口。对于功能要求比较复杂的电路,一般都采用CPU + CPLD的模式,采用该模式的原因主要有两个方面: (1) CPU 作为系统的核心,无法、也没有必要满足所有用户的具体功能要求,只需给用户以标准的外部总线接口EB I (externalbus interface)即可,让用户根据自己的需要进行必要的功能扩展。(2) CPLD 用在电路设计中有以下几点优势:可方便地实现地址译码;编程方式简便,可方便地通过软件编程实现各种逻辑器件的功能;时钟延迟可达纳秒级,特别适合在线监测领域的应用,具有高可靠性。键盘主要作用是手动控制方式情况下,各位置的传感器信号的检测及控制,各处检测到的温度以数字量的方式显示在LCD 上。实现了手动方式的温度检测及控制集中统一的管理。
1.3 系统存储器及调试接口
LPC2214支持8位、16位和32位寻址方式,具有较强的寻址能力,可方便的构建较大的存储空间。由于芯片自身带有256KB 的高速Flash,对于采用μC /OS-Ⅱ设计嵌入式通信控制器已经足够, 无需在外部挂接FLASH存储器。系统选用IS61LV25616AL作为SRAM存储器,满足了嵌入式操作系统及通信控制器中的内存块拷贝运行要求。
LPC2214支持JTAG协议, JTAG( Joint Test Action Group联合测试行动小组)是一种国际标准测试协议。主要用于芯片内部测试及对系统进行仿真、调试,通过JTAG接口,可对芯片内部的所有部件进行访问,因而是开发调试嵌入式系统的一种简洁高效的手段。目前JTAG接口的连接有两种标准,即14针接口和20针接口,笔者选用14针接口。
1.4 系统通信
LPC2214 内部集成了两个UART 通道, 利用MAX489实现RS-422通信接口,以便同上位机之间的通信;另外一个UART接口用于同同级系统之间的通信。利用RTL8019AS芯片RJ-45网络接口,在温控设备出现无法处理的故障时,用五级以上的双绞线接入基于神经网络的故障诊断服务器,实现了远程以太网故障诊断功能。
1.5 数字及模拟接口
LPC2214提供了多达76个可编程的I/O端口,温度控制器主要的模拟量信号有:前仓温度模拟量信号,后室温度模拟量信号,发动机温度模拟量信号及系统设备的模拟量信号8路。模拟信号经隔离放大后由8路10位ADC进入温度控制器。温度控制器内的数字信号由I/O口,经过隔离放大后,达到相应的控制终端,控制通风扇开关,系统设备温度及前仓、后室的空调启停等。而其他数据总线和地址总线及部分GP IO在系统板上引出,以供扩展之用。
2 接口抗干扰设计
在该大型车载系统中,后室某处温度信号变化,将会直接影响到整个车载系统的性能及状态。所以有必要提高输入输出接口的可靠性。需要对数字量信号及模拟量信号采用有效的抗干扰措施。
数字量接口通道总体思想就是全光电隔离方案,数字量(开关量)输入通道接入光电藕合器后,由于光电藕合器的抗干扰作用,使夹在输入开关量中的各种干扰脉冲都被挡在输入回路的一边。另外,光电藕合器还起到了很好的安全保障作用,因为光电藕合器的输入回路和输出回路之间可耐压1000V,甚至更高。控制信号输出也是采用光电隔离方法,考虑到开关量的输出直接驱动设备的起停,需外加一些保护电路,也可以采用继电器,Photo MOS继电器,光电藕合器方法。
虽然模拟量I/O电路与外部电源的隔离可用安全栅来实现,但是,一些强电干扰还会经此和一些其他通道,从模拟量输入输出电路串入系统,因此为了保证智能设备能在任何时候都能工作在平稳,安全环境里,还要加隔离措施。因为模拟量信号是连续的,任何叠加在模拟信号的干扰都会因为有实际意义而起到作用。这表明抗干扰屏蔽的位置越往外推越好,最好在模拟量输入输出口处,因此,要求这里采用的光电藕合器必须具有线性变换和传输的特性。
3 系统软件设计
μC /OS-Ⅱ是一个免费的、源代码公开的实时嵌入式内核,提供了实时系统所需的基本功能。μC /OS-Ⅱ中包含全部功能的核心部分,代码只占用8.3KB,而且由于μC /OS-Ⅱ是可裁剪的,所以用户系统中实际的代码最少可达2.7KB,可谓短小精悍。μC /OS-Ⅱ适合小型控制系统,具有执行效率高,占用空间小,确定性、实时性优良和可扩展性强等特点。μC /OS-Ⅱ采用的是占先式的实时多任务内核。
占先式的实时内核在任何时候都运行就绪任务中优先级最高的任务。这样μC /OS-Ⅱ就不支持通用的时间片轮转调度。μC /OS-Ⅱ中最多可以支持64个任务,分别对应优先级0~63,其中0为最高优先级,版本Ⅱ保留8个给系统,用户可以使用的有54个。
温度控制器的控制要求是:大型车载系统设有温度传感器来检测车载系统多处的温度,温度控制器接收到当前的车载系统各处温度,把它与车载各处原先设定温度标准作比较以决定系统各处的工况。根据温度的高低,发出相应的控制信号,完成控制以达到监控的目的。如车上的保温室内设定温度为20℃,当温度控制器接收到温度传感器的值为21℃,则温度控制器发出降温数字控制信号,通风扇打开,当温度传感器的值达到规定的范围(19.8~20.2℃)温度控制器发出停止信号,通风扇关闭。温度控制器有本机自动、本机手动二种工作方式,温度控制器通过检测键盘信号或上位机发出的控制信号以决定工作于哪一种控制方式下。此外,温度控制器能够及时检测出电机过载、传感器失灵等故障,然后迅速做出简单的故障处理。如果故障很复杂,无法诊断出来,则用双绞线连接神经网络故障诊断服务器,开启控制信号,实施远程故障诊断。
根据温度控制器的控制要求,本程序分为6个任务来实现,分别是:任务OSTask Input ( )周期性的采集车载系统温度传感器的模拟量输入;任务OSTaskControl( )根据温度控制器接收到当前的车载系统各处温度,把它们分别与车载各处原先设定温度作比较和发出相应的控制命令,使被控制端工作于制冷或者制暖工况,甚至停机(如车载系统的发动机处温度过高) ;任务OSTaskcontrol choice ( )周期性轮询UART串口,检测是否有上位机控制命令,以使控制器能及时的响应; OSTaskmode choose ( )通过检测键盘信号或上位机发出的控制信号以决定温度控制器工作于哪一种控制方式下,默认方式为自动;任务OSTaskRemote Diagnosis ( )的功能是在接收到控制信号的情况下, 周期性地轮询网卡,以实现与远程故障诊断服务器进行通讯;任务OSTaskEasy _Recover ( )的功能是执行一些简单的故障处理程序。任务之间采用共享变量交互。
该软件的初始化工作如下所示:
在μC /OS-Ⅱ中创建用户任务时要注意到3点,首先,μC /OS-Ⅱ中每个任务被赋予不同的优先级。任务的优先级号就是任务编号,保留给系统的不能用。其次,μC /OS-Ⅱ中,每个任务都有自己的堆栈空间。堆栈必须声明为OS STK,并且由连续的内存空间组成。
用户可以静态分配堆栈空间也可以动态地分配堆栈空间。静态堆栈应放在函数的外面。最后,在调用OSTaskCreate时必须知道堆栈是递增还是递减,因为用户必须把堆栈的栈顶传给上面的函数。在OS_CPU.H文件中,当OS_STK_GROWTH为0时,栈顶为内存最低地址,当OS_STK_GROWTH为1时,栈顶为内存最高地址。在80x86中处理器的堆栈是由高地址向低地址方向增长的。
4 结束语
本温控系统硬件上采用先进的32位ARM处理器作为温控设备的主控单元,控制的实时性、灵活性、准确性和安全性都好于传统的温度控制箱,软件设计上主要采用ANSI C语言编程,可读性强而且容易移植,采用源代码公开的μC /OS-Ⅱ操作系统进行任务管理提高了软件的执行效率和系统的实时性。因此这在大型车载系统中具有广阔的市场潜力和商业价值。由于ARM微处理器的优越性能和软件的可移植性,该控制器可以很容易的嵌入到其他系统中,能够应用于楼宇自动化和信息家电等诸多领域。