基于LPC2136的嵌入式工业控制器开发平台设计

2016-03-15 07:31白宇
山东工业技术 2016年6期

白宇

摘 要:本设计以LPC2136微处理器芯片为硬件核心,外扩工业常用的控制接口、通讯接口以及常用的功能模块,在实时操作系统uC/OSⅡ下开发片内外设和外部扩展器件的驱动。平台软件中实现了Modbus协议栈,可以实现主机和从机的组网通讯。

关键词:ARM;Modbus;LPC2136;开发平台

DOI:10.16640/j.cnki.37-1222/t.2016.06.010

0 引言

随着硬件开发水平以及工业现场工艺水平的提高,工业现场对工业仪表提出更高的要求,传统的51系列单片机因其片内资源相对较少,需要扩展的器件较多,大数据量的计算完成周期较长,实时性难以控制等不利因素正在被不断的淘汰,工业产品为了尽快占领市场,常常把产品的研发时间压缩的很短;为了不必每次都从底层做起,设计了一个基于ARM和Modbus协议的嵌入式工业控制开发平台。平台选择ARM微处理器,加入以IC公司生产的大量片内外设,使ARM系列处理器拥有非常优良的应用性能。在ARM中安装uC/OSⅡ操作系统,并在uC/OSⅡ环境下开发可剪裁、可移植的平台软件,实现Modbus协议的主从机通讯。使用此平台开发的主机具有较高且可靠的实时性,可组建工业总线网络,实现集中控制,灵活性高,维护和升级成本低,易于扩展等优点。

1 硬件设计

(1)器件选择。平台硬件主要由高性能ARM、4~20mA电流产生电路、接口隔离、计数器、数据存储和RS232串口构成。其中高性能的ARM采用NXP公司的LPC2xxx系列ARM7中的LPC2136.拥有一个SPI、一个SSP、两个UART、一个DAC、两个ADC、256KB的FLASH和32KB的RAM等片内外设。4~20mA电流产生采用AD421芯片配合外围芯片。接口隔离采用高速电偶合成器6N137和双向光耦继电器AWQ210.计数器采用16位可编程计数器8254.数据存储采用I?C接口的电源监控芯片CAT1025中的E?ROM。RS-232串口采用美信的MAX232。

(2)平台硬件连接。1)、LPC2136与8254的连接。由于LPC2136没有总线结构,搭建时需要用GPIO来模拟8254的数据线和控制信号线。虽然8254是5V供电,但是LPC2136的GPIO口可以承受5V电压的数字信号,两者之间不需要电平转换可以直接连接;2)LPC2136与AD421的连接。AD421是SPI控制方式,为外部接口电路,不可以直接与LPC2136直接连接,因此设计电源隔离模块隔离电源,用高速光电耦合器件6N137隔离SPI总线。

2 平台软件设计

为了方便平台软件的移植和剪裁,每个模块都有相应的配置文件(头文件)。配置文件中都定义了宏USE_XXXX,其中,XXXX是模块的名称。当USE_XXXX标志位enable时,是相应的功能模块可以使用,否则模块disable。

(1)LPC2136片内外设的驱动。平台用到的片内外设有UART控制器、I?C控制器、看门狗控制器、SPI控制器、SSP控制器和RTC控制器。其中UART控制器、I?C控制器、SPI控制器和SSP控制器接口采用中断方式发送和接收数据。在驱动模块的配置文件中定义配置参数,通过修改配置参数的值,来改变驱动接口函数的配置。如:在UART0驱动的配置文件中定义宏RS_485_R0()和RS_485_S0(),就可以使UART0驱动用于RS-485进行通讯。

(2)可编程计数器8254的驱动和应用函数。平台使用了4片8254芯片。由于LPC2136没有总线结构,采用模拟总线和控制信号的方式。在驱动的配置文件中,定义了数据线D0~D7、CS1~CS2、A0~A1、WR和RD,使用时根据实际硬件连接修改。配置文件中定义了宏CS1_EN、CS2_EN、CS3_EN和CS4_EN,若其值为1,则对应芯片的驱动可用,否则被屏蔽。如:定义宏CS1_EN为0,片选为CS1的8254芯片驱动不可用。

用户应用函数包括:计数器初始化、储存计数器值和读计数器值。平台采用锁存回读的方式读取计数器8254中的16位计数值。为保证各个计数器工作时的一致性,在锁存计数器值前,调用OS_ENTER_CRITICAL()宏定义关闭中断和任务调度,锁存结束调用OS_EXIT_CRITICAL()宏定义恢复中断和任务调度。在读计数器值时,保存计数值的缓冲区可能被其他任务操作,为了保证临界代码段的完整性,同时使用OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()宏定义。

(3)CAT1025中E?ROM的读写函数。CAT1025中E?ROM的读写函数是在I?C驱动函数的基础上编写的,通过修改配置文件中的宏定义I?CWrite和I?CRead的值来确定使用I?C0或I?C1控制器。根据CAT1025的特性,读操作时只有确定起始地址和数据个数即可,而写操作采用页写模式,本设计的写CAT1025中E?ROM的操作函数实现一次写任意页面、任意地址和不限数量的功能,用户不必考虑换页问题。

(4)Modbus协议的实现。采用ModbusRTU协议,实现从机协议栈和主机协议栈部分。通过修改协议栈的配置文件,可把控制器设置为主机、从机或即为主机又为从机。主机物理层使用LPC2136的UART1,从机物理层使用LPC2136的UART0,根据协议栈的主从机设备描述信息初始化UART的波特率、停止位、奇偶校验,实现RS-232或RS-485通讯。主从机协议栈主要实现了读线圈、读离散量输入、读保持寄存器、读输入寄存器、写单个线圈、写多个线圈和写多个寄存器的功能。通过修改配置文件,可以确定使用哪些功能。

3 结束语

ARM的迅速发展,使其逐渐取代了传统51单片机在工业仪表中的应用。本文介绍了基于ARM和Modbus协议的嵌入式工业仪表控制器开发平台,硬件设计合理,工作可靠,软件采用先进技术,移植和裁剪方便,通用Modbus协议,使仪表通讯可靠,并可组建工业网络,具有实用价值,是工业仪表控制器的可靠平台。

参考文献:

[1]周立功.深入浅出ARM7-LPC213x/LPC214x(上册)[K].北京:北京航天航空大学出版社,2005.

[2][美]Jean J.Labrose著,邵贝贝等译.嵌入式实时操作系统uC/OS-Ⅱ(第二版).北京:北京航天航空出版社,2003.

[3]Modbus协议,http://www.chinakong.net.