基于AT91SAM9G45微处理器的便携式人机界面软硬件实现

2017-04-10 05:52许安静沈洪滨
关键词:驱动程序以太网总线

冯 宁, 涂 撰, 华 金, 许安静, 沈洪滨

(上海船舶运输科学研究所 舰舶自动化分析,上海 200135)

基于AT91SAM9G45微处理器的便携式人机界面软硬件实现

冯 宁, 涂 撰, 华 金, 许安静, 沈洪滨

(上海船舶运输科学研究所 舰舶自动化分析,上海 200135)

在研究船舶动力定位系统的过程中,研制一款便携式人机界面——单手柄操作板,主要介绍其硬件电路板现场处理模块的软件及硬件的设计实现过程。采用AT91SAM9G45嵌入式微处理器作为硬件电路的核心,根据单手柄操作板的人机交互操作需求和系统通信需求扩展多种功能接口电路。为便于应用程序的二次开发,引入Windows CE 6.0嵌入式操作系统,开发各种接口驱动程序。研制的单手柄操作板具有JoyStick操纵杆、按钮、指示灯和旋转编码开关旋钮等操作接口,支持液晶显示屏图形化显示,其功能、性能和重量均能满足便携式、移动操作的要求。

嵌入式;便携式;人机界面;AT91SAM9G45;Windows CE

0 引 言

近年来,配置液晶显示屏的人机界面越来越多地在船舶自动化系统集成领域中得到应用,相较于早期采用8段数码管和单点发光二极管系统定制的模拟屏,液晶显示人机界面具有显示直观、色彩丰富和编辑灵活等优势。市场上常见的工业级液晶显示人机界面通常都会配置以太网接口和RS485串行通信接口,却很少配置控制器局域网络(Controller Area Network, CAN)现场总线接口,若系统集成中还需具备开关量和模拟量接口,则需硬件定制。

船舶自动化硬件产品的发展方向是轻量型、小型化和一体化,高性能、低功耗嵌入式微处理器和专用集成电路芯片的发展为硬件产品轻量型、小型化奠定了基础。在由上海船舶运输科学研究所承担的船舶动力定位系统科研项目中,需研制一款便携式人机界面单手柄操作板,单手柄操作板不仅支持台面嵌入式安装方式,还可作为便携式设备有线连接移动到驾驶室外操纵,对设备的功耗和质量提出较高的要求,为此新研制的便携式人机界面的硬件电路板称为现场处理模块。

1 硬件电路设计

根据动力定位系统的硬件需求,并兼顾其他系统集成应用中的接口需求,现场处理模块具有LCD液晶显示屏接口、LED指示灯接口、阵列扫描按键接口、开关量输入/输出接口、模拟量电压(DC -5.0~+5.0 V)输入接口、RS232/RS485串行通信接口、CAN现场总线接口(2路)和10 M/100 M以太网接口(2路)。现场处理模块的硬件原理框图见图1。

现场处理模块的核心处理器选用ATMEL公司生产的AT91SAM9G45嵌入式微处理器,ARM926-EJS内核,主频400 MHz,片内集成64 Kbytes SRAM存储器和64 Kbytes ROM存储器,具有丰富的外设接口,包括4路UART接口(支持RS485通信模式)、2路SPI接口、2路I2C接口、2路SSC接口、4路LIN接口、1路USB OTG接口、1路高速USB Host接口、1路10M/100M以太网MAC接口、2路SD/MMC高速存储卡接口、4路PWM接口、8路10位A/D接口(可连接电阻式触摸屏)及LCD控制器接口(最大分辨率1 280×860)等,宽温度范围为-40~85 ℃,适用于实现工业通信网关、PLC和I/O模块、自动化仪表和电量表等设备,被广泛应用于工业测控、电力、铁路、通信、医疗、能源和环保等领域中。

考虑到其他项目需要实现2路10M/100 M以太网接口的双冗余热备份功能,未使用AT91SAM9G45处理器内部集成的以太网控制器,而是在处理器外部扩展了2片DAVICOM公司生产的DM9000CIEP工业级以太网接口芯片,以便于未来在驱动层实现双以太网链路故障检测和快速切换。DM9000CIEP芯片内部集成了以太网媒体介质访问层(Media Access Control, MAC)和物理层的功能,内部带有16 K字节SRAM用作接收和发送的FIFO缓存,支持8位和16位总线模式,10 ns I/O读写时间,具有HP认证的AUTO-Mdix功能,支持TCP/IP加速功能以减轻CPU负担、提高整机效能,具有性价比高、封装尺寸小和引脚数量少等优点。

CAN现场总线接口控制器选用2片Microchip公司生产的MCP2515芯片实现,完全支持CAN V2.0B技术规范,并具有符合工业标准的10 MHz高速SPI串行接口,是目前市场上体积小、接口灵活和开发便捷的独立CAN控制器芯片。

现场处理模块的硬件结构设计采用核心板+功能扩展底板的形式实现,选择2.0 mm间距的4×25Pin直插型板级连接器,结构牢固耐用,有很强的插拔力保障。现场处理模块的核心板通过AT91SAM9G45微处理器的EBI0并行总线扩展2片64 MB DDR2 SDRAM存储器,其总线时钟频率达到133 MHz,属于高速PCB设计,必须遵循等长布线和差分布线规则,并进行阻抗匹配试验;通过EBI1并行总线扩展256 MB NAND FLASH存储器和16 MB NOR FLASH存储器,同时将2路以太网接口芯片DM9000CIEP挂载到EBI1并行总线上。

现场处理模块核心板和底板实物见图2。

2 基础软件实现

现场处理模块的软件架构见图3,基础软件包括Windows CE 6.0嵌入式操作系统和硬件相关驱动程序,基于ATMEL公司发布的Windows CE 6.0 BSP(板级支持包)进行操作系统与驱动程序的移植和开发。现场处理模块未使用AT91SAM9G45处理器内部集成的以太网控制器,且改用镁光公司生产的工业级大容量NAND FLASH和NOR FLASH芯片,因此需对BSP进行了大量的移植工作。Microchip公司不提供MCP2515芯片在Windows CE 6.0嵌入式操作系统下的驱动,需客户自主开发驱动程序;A/D模数转换芯片选用凌力尔特公司的LTC185X,也需客户自主开发驱动程序。

“云南省云岭牛种源供应充足,已建成国家级云岭牛核心育种场1个,扩繁场6个,存栏纯种母牛1546头、纯种公牛133头,年供种能力达850头以上,年可提供冻精100万剂以上。目前,全省存栏纯种云岭牛7583头,其中,种公牛1380头、纯种母牛6203头。”云南省农业厅负责人介绍。

Windows CE 6.0嵌入式操作系统的开发环境为Platform Builder 6.0,以插件形式叠加安装在Visual Studio 2005 SP1集成开发环境上。操作系统剪裁、驱动程序开发和应用程序开发调试都在Platform Builder 6.0集成开发环境下完成;应用程序的开发在Visual Studio 2005 SP1集成开发环境中进行。

2.1 以太网驱动移植

对于现场处理模块的Windows CE 6.0操作系统移植,首先要解决的是以太网控制器芯片驱动程序移植问题,该模块未使用AT91SAM9G45处理器内部集成的以太网控制器,而是扩展了2片DM9000CIEP芯片,其中1片DM9000CIEP芯片替代BSP中原有处理器内部集成以太网控制器的功能,主要包括E-Boot以太网下载和KITL以太网调试功能。

DAVICOM公司为Windows CE 5.0操作系统提供有独立的驱动程序包;ATMEL公司的早期产品ATM91SAM9261处理器内部未集成以太网控制器,官方推荐搭配DAVICOM公司的DM9000EP芯片使用,并提供包含DM9000EP芯片驱动的Windows CE 6.0板级支持包。ATMEL公司这2款处理器的BSP都是由Adeneo公司[2]开发的,BSP架构具有继承性,因此可将ATM91SAM9261处理器BSP中的DM9000EP芯片驱动平行移植到AT91SAM9G45处理器BSP中,移植工作涉及到PBCXML组件配置文件、BIB二进制镜像构建文件、REG注册表文件、GPIO配置代码、EBI总线时序配置代码、中断处理程序代码、KITL相关代码等。进一步阅读数据手册,比较DM9000EP芯片与DM9000CIEP芯片的区别,并相应修改驱动代码,完成驱动程序的移植。

第2路以太网在操作系统启动后才投入使用,参考DM9000芯片驱动发布说明文档改写注册表文件(见图4),即可用一套DLL驱动程序支持2路DM9000芯片。然而,重新编译、烧写及运行操作系统镜像,用2台计算机同时PING 2路以太网接口,只有第2路以太网接口能始终PING通,第1路以太网接口只是偶尔能PING通。经调试排查,问题出现在中断初始化程序上,2片DM9000芯片的中断引脚都连接到处理器的A组GPIO引脚上,而BSP默认将GPIO引脚的中断配置为为电平敏感模式,导致只有一路中断标记会被处理,另一路中断标记得不到处理。修改中断初始化函数“BOOL OALIntrInit()”,将A组GPIO引脚的中断配置为边沿敏感模式,这样2路以太网接口可同时正常工作。

为实现现场处理模块的批量化生产,硬件设计中2片DM9000CIEP芯片都外挂有93C46 EEPROM芯片,每片DM9000CIEP芯片都具有全球唯一的MAC地址,MAC地址和初始化配置信息用编程器写入到EEPROM芯片中,再焊接到电路板上。删除以太网驱动“sources”文件的“-D"NOEEPROM"”预编译宏,重新编译驱动和操作系统镜像,下载到目标机中运行,用以太网抓包工具截获ARP报文,即可看到写入EEPROM芯片的MAC地址已被应用。

2.2 SPI总线驱动移植

在现场处理模块中,2片CAN现场总线控制器芯片MCP2515和A/D转换芯片LTC185X与处理器的通信都依赖于SPI总线接口。AT91SAM9G45处理器集成有2个SPI总线控制器,每个SPI总线控制器都有4个NPCS片选信号引脚,硬件控制方式最多支持连接8个SPI从设备。在现场处理模块的硬件设计,SPI0_NPCS1和SPI1_NPCS0用于片选2片MCP2515,而SPI0_NPCS2用于片选LTC185X。由于有多个设备需复用SPI总线控制器,因此SPI总线驱动程序必须是一个独立的、可供高层驱动程序调用的基础驱动程序,且要保证多个高层驱动访问同一个SPI总线控制器时的资源互斥。

AT91SAM9G45处理器的Windows CE6.0 BSP没有包含完整的SPI驱动程序,横向对比Adeneo公司为AT91SAM系列处理器开发的多个BSP包发现,AT91SAM9263处理器的Windows CE5.0 BSP中包含完善的SPI总线驱动程序,可将该驱动程序移植到AT91SAM9G45处理器的Windows CE6.0 BSP中。进一步研究移植过来的SPI驱动发现,AT91SAM9263处理器只集成有1个SPI控制器,因此SPI驱动中只定义了1个“g_hSemaphore”信号量,以保证多个驱动同时请求使用SPI控制器时的资源互斥。此外,为适应AT91SAM9G45处理器2个SPI控制器的硬件架构,将互斥信号量“g_hSemaphore”改成句柄数组“g_hSemaphore[2]”,并修改信号量创建、抢占、销毁相关代码和驱动初始化代码,以满足对2个SPI控制器的互斥资源保护。

至此,通过修改注册表文件可灵活裁减操作系统中运行的SPI设备驱动实例,现场处理模块在操作系统启动后自动创建3个SPI驱动设备,其中:“SPI0:”和“SPI1:”用于访问2片MCP2515芯片;“SPI4:”用于访问LTC185X芯片。

移植过来的SPI驱动中还包含有ADS7843四线制电阻触摸屏A/D转换接口芯片的驱动程序,通过调用SPI驱动的“IOControl()”函数代入特定控制字“IOCTL_SPI_TRANS_ ADS7843”来访问ADS7843芯片;LTC185X芯片的驱动程序也采用该方式开发。LTC185X芯片是一款真双极性输入A/D转换芯片,支持0~5.0 V,0~10.0 V,-5.0~5.0 V和-10.0~10.0 V等4种量程的单端或差分信号输入,其SPI通信协议比较简单,输入数据只有8个字节(包含单端/差分模式选择、信号极性选择、通道选择、量程选择和省电模式选择等信息),跟随本次输入数据返回的输出数据是上一次输入数据设置和转换的结果。由此,应用程序可通过打开“SPI4:”驱动,调用“IOControl()”函数并代入“IOCTL_SPI_TRANS_LTC185X”控制字来读取各通道的A/D转换结果。

2.3 CAN总线接口驱动开发

CAN总线接口芯片MCP2515在Windows CE 6.0操作系统下的驱动程序构建于SPI驱动程序之上,需完全自主开发。

1) 需搭建一个CAN驱动框架,并在BSP的“SRCDRIVERS”目录下新建一个“MCP2515CAN”驱动文件夹,在该文件夹下新建“mcp2515.cpp”和“mcp2515_can.cpp”驱动源文件及其头文件;同时,建立源文件及其头文件对应于源文件和头文件的makefile编译规则文件、“MCP2515_CAN.def”接口定义文件、“MCP2515_CAN.reg”注册表文件和sources文件等,编译器将根据makefile文件和sources文件编译生成“at91sam9g45m10ek_mcp2515can.dll”驱动库文件。

2) 需在操作系统的PBCXML,BIB和REG文件中增加“MCP2515CAN”驱动项目,从而在Platform Builder集成开发环境中裁剪CAN驱动程序,并在打包内核镜像时包含CAN驱动程序。

MCP2515驱动设计成2层结构,其中:上层驱动“mcp2515_can.cpp”实现“MCP2515_CAN.def”文件中定义的驱动程序需导出的流接口函数,包括“Open”“Close”“Read”“Write”及“IOControl”等;下层驱动“mcp2515.cpp”用C++语言编写,定义一个“MCP251xClass”类,组员变量定义接收环形缓冲结构数组、SPI设备句柄、中断线程句柄及接收和发送中断事件句柄等,组员函数定义打开/关闭SPI设备(“SPI0:”和“SPI1:”)驱动、SPI通信读/写MCP2515寄存器和MCP2515芯片相关操作(复位、初始化、睡眠、唤醒、波特率设置、滤波器设置及发送和接收)等函数。采用C++语言实现下层驱动,可完全规避下层驱动被2个上层CAN驱动同时调用的可重入性问题;上层驱动被应用程序打开一次,对应就创建一个下层驱动的“MCP251xClass”类,自动维护MCP2515芯片中断方式的数据接收和发送动作。

为验证CAN驱动程序的功能和性能,设计一个测试程序界面(见图5),来测试MCP2515芯片的所有功能。经过功能测试和压力测试,新编写的CAN驱动程序能满足动力定位系统中CAN现场总线通信的需求。

基于Windows CE 6.0嵌入式操作系统的现场处理模块基础软件,实现以太网驱动、SPI驱动(包括A/D驱动)、CAN总线接口驱动、RS232驱动、RS458驱动、开关量输入/输出接口驱动、PWM驱动(用于LCD背光调节)、阵列扫描键盘驱动和LED指示灯驱动等,应用程序可通过调用API函数来访问和控制各种硬件的接口及其功能。

3 单手柄操作板总成

为船舶动力定位系统项目研制的单手柄操作板由现场处理模块、JoyStick操纵杆、旋转编码开关(Encode Switch)板、按键指示灯面膜和操作板面板壳体等部件组成。

1) JoyStick操纵杆具有3个(x方向、y方向和艏向)带零位输出的电位器接口,现场处理模块为其提供+5 V,GND和-5 V的电压基准,3个电位器中心抽头连接到现场处理模块的模拟量电压输入接口。

2) 旋转编码开关板上配置1片STM32F103嵌入式微控制器,可实时检测旋钮的转向和位置,通过RS232串行通信接口将旋钮操作动作传送给现场处理模块。

3) 按键指示灯面膜贴敷在操作板壳体面板上,通过排线连接到现场处理模块。

组装完成的单手柄操作板见图6,设备总重约2.3 kg,可选择安装背带,挂在操作人员胸前进行便携式操作。

4 结 语

本文主要介绍一款适用于船舶动力定位系统的单手柄操作板,根据人机交互操作需求和系统通信需求设计实现现场处理模块的硬件,并移植Windows CE 6.0嵌入式操作系统和硬件相关驱动。一体化的单手柄操作板具有JoyStick操纵杆、按钮、指示灯和旋转编码开关旋钮,支持液晶显示屏图形化显示,其功能、性能和重量均能满足便携式设备的要求,具有体积小、外形美观和操作方便等优点。

[1] Atmel Corporation. AT91SAM ARM-based Embedded MPU SAM9G45 Datasheet[M]. San Jose: Atmel Corporation, 2013.

[2] Adeneo Embedded. WINDOWS CE 6.0 Port on AT91SAM9G45M10EK Technical Design Document[M]. Seattle: Adeneo Embedded, 2010.

[3] 周建设. Windows CE设备驱动及BSP开发指南[M]. 北京:中国电力出版社, 2009.

The Software and Hardware of Portable HMI Based on AT91SAM9G45 Microcontroller

FENGNing,TUZhuan,HUAJin,XUAnjing,SHENHongbin

(Ship Automation Branch, Shanghai Ship & Shipping Research Institute, Shanghai 200135, China)

A portable Human-Machine Interface, named Joystick Operation Panel is developed for the Field Processing Module in a marine Dynamic Positioning System. This paper mainly introduces the hardware and software design of the Field Processing Module. The AT91SAM9G45 microcontroller is used as the core of the hardware circuit, and the functional interface circuits are extended according to the human-machine operation and communication requirements for the Joystick Operation Panel. For convenience of secondary development of applications, Windows CE 6.0 embedded operating system is ported, and a variety of interface drivers are migrated or developed. The final Joystick Operation Panel has the interface for a Joystick, buttons, indicator lights and a rotary encode switch knob. It also supports an LCD graphical display.

embedded; portable; HMI; AT91SAM9G45; Windows CE

2016-10-17

冯 宁(1980—),男,天津人,副研究员,硕士,主要从事船舶机舱自动化产品的开发。

1674-5949(2017)01-0047-06

U664.8

A

猜你喜欢
驱动程序以太网总线
时间触发通信总线监控技术研究
关于CAN总线的地铁屏蔽门控制思路论述
避免Windows系统更新反复安装显示驱动
阻止Windows Update更新驱动程序
基于CAN/LIN总线的LED车灯控制研究
三大因素驱动创新提速以太网快步迈入“灵活”时代
三大因素驱动创新提速 以太网快步迈入“灵活”时代
基于以太网的计算机与数控系统通信技术研究
基于ENC28J60的嵌入式以太网/CAN网关设计
妙用鼠标驱动