基于单片机的对讲设备程序下载系统﹡
2013-09-17郭荣新
郭荣新
(华侨大学 信息科学与工程学院,福建 厦门 361021)
0 引言
目前,对讲设备程序更新大多是通过 PC下载的方式,而没有采用嵌入式开发思想来下载更新对讲设备。传统的对讲设备程序下载更新方法存在如下不足:首先 PC需具有串口,如果没有串口则需要USB接口,而通过USB接口需要另外安装USB转串口驱动,这就导致下载软件系统兼容性不好;另外必须在 PC上通过下载软件下载更新,而且下载软件操作繁琐;另外对于车载对讲设备程序更新,用笨重的 PC很不方便。为克服上述下载更新过程中的诸多不便,本文设计了一种更加便捷的程序下载系统。本方案中采用了嵌入式USB主机的设计思想,即利用单片机控制CH376通过USB接口读取U盘中文件,再由单片机串口将文件下载到对讲设备对其程序进行更新。整个下载更新过程操作简便,只需要根据指示灯提示按一下按键即可完成全过程。另外本系统还具有结构小巧、成本低廉、方便携带和可实现随时随地为对讲设备升级等特点。
本系统是一种基于单片机的对讲设备程序下载装置,采用嵌入式系统架构,可实现对讲设备程序的下载升级。本系统的主要目的是提供一种简单易行的程序升级的方法,尤其针对车载对讲设备提供一种便携的升级工具,避免了携带笨重的笔记本进行升级的麻烦。
使用本系统时,需要做的准备工作如下:首先将待升级的文件拷贝到U盘中,然后将该U盘中的文件命名为LT1000B.BIN。前面准备工作就绪之后,即可对对讲设备进行批量升级,升级方法如下:将上述U盘插在本系统的USB接口,对讲设备与本系统连接好之后打开本装置,打开对讲设备,待最后一个LED亮时选择按键1升级第一种类型代码文件,或者选择按键2升级第二种类型文件,升级结束后,本系统进度LED指示灯全亮,并且本系统会通过蜂鸣器提示用户升级结束。
1 硬件总体设计
对于非 PC类的嵌入式系统,必须通过嵌入式USB主机控制器来管理主机到设备的数据传输,本系统选用南京沁恒的U盘文件管理控制芯片CH376来实现。因为整个USB协议框架非常复杂, 所以就需要MCU具有足够的RAM, 用以处理大量的数据缓冲区、变量、数据存储等等。其次系统要有大量的程序存储区,一般Flash的需求大概在10~60 kb[1]。基于程序存储容量和处理数据以及低功耗,后续扩展的考虑,因此本系统采用宏晶科技的STC11L60XE单片机。
由于和本系统联调的对讲设备波特率要求为115 200 b/s,而波特率的计算公式[2]:
要达到如上波特率,采用串口工作方式2则需要7.372 8 MHz或者3.686 4 MHz的晶振;采用串口工作方式1,若设置SMOD为1,定时器工作方式为2,则由波特率计算公式可知:
若 TH1装初值为 0xff(X=255),则socf 需选用22.118 4 MHz晶振。为了提高单片机的处理速度,本系统选用22.118 4 MHz的晶振。
单片机与 CH376的通讯接口采用并行总线连接。P0口与CH376的并口连接,P2.0连接CH376的并口地址输入端,P2.1连接 CH376的片选端,WR和RD分别连接CH376并口写选通输入和读选通输入,INT0连接CH376的中断请求输出,系统框图如图 1所示,图中单片机采用宏晶科技的STC11L60XE单片机,U盘管理芯片采用南京沁恒的CH376,稳压源有5 V稳压和3.3 V稳压。通过系统框图可知系统主要由CH376模块、MCU模块和稳压源模块组成。
2 软件总体设计
为了使设计的嵌入式 USB主机系统具有通用性,整个系统的软件设计不依赖于任何操作系统[2]。在建立起相应的硬件连接后,就可以根据不同的硬件特点,选用不同的开发工具和开发语言进行USB host的软件设计工作[3]。程序采用 C 语言编写,因此可以很方便地移植到其它处理器中[4]。整个下载过程遵循联拓公司制定的程序更新下载协议如图2所示。
图1 系统框图
图2 USB host与对讲设备信息交换协议
由于串口波特率为115 200 b/s,也就是当单片机接收串口数据时,大约每69.4 μs串口中断就会响应一次。按照协议要求每次需要比较至少22个字符,共有6种字符串,如果每收到一个字符就比较一次,那么单片机就难以及时处理每个字符。下面以第一个字符串的比较过程举例。外部中断的最短响应时间为 3个机器周期,其中中断请求标志位查询占1个机器周期,而这个机器周期恰好是处于指令的最后一个机器周期,在这个机器周期结束后,中断即被响应,CPU接着执行 1条硬件子程序调用指令LCALL以转到相应的中断服务程序入口,则需要2个机器周期[5]。判断是否是串口接收字符引起的中断,需要2个机器周期。RI清零需要1个机器周期,将SBUF值暂存到变量需要2个机器周期,将变量值在存到数组中需要2个机器周期[6]。判断是不是结束符0x0a与0x0d至少需要4个机器周期,判断处于哪个发送阶段需要比较至少需要 2个机器周期(如果是最后一个字符串需要比较四次即 8个机器周期),RETI指令需要 2个机器周期,判断接收字符数是否超过缓存需要 2个机器周期。由于本系统选用的是22.118 4 MHz的晶振,所以一个机器周期为0.54 μs。比较指令执行执行时间为 2个机器周期,如果每次收到一个字符就比较一次综上所述那么当收到第52个字符时需要的机器周期至少需要(3+2+1+2+2+4+8+2+2+52×2)×0.54 μs=70.2 μs。很明显大于 69.4 μs,如果采用这种思路会导致丢失字符的错误。为避免该错误的出现,本方案中串口中断服务程序采用的方法是将收到的字符暂存起来之后先判断处于哪个阶段,再判断该阶段的字符串是否已经接收完毕,接收完毕再比较。
3 结语
本文整个系统经过与福建联拓科技公司生产的对讲设备联试后效果良好,该模块也可通过修改通信协议用于所有市面上流行的对讲机,应用前景广泛。本文作者创新之处在于:将下载软件移植到单片机控制的USB主机系统,将USB host技术应用于对讲设备程序升级,为写频软件移植到该系统提供了很好的思路。
[1] 温晶晶.嵌入式 USB主机的相关设计[J].机械工程与自动化, 2006(05):98-100.
[2] 张军伟,罗红,乔向东.基于文件过滤的移动存储设备实时监控系统设计与实现[J].通信技术,2009,42(02):283-285.
[3] 董玮,周鲁宁.基于USB的无线传输系统设计与实现[J].通信技术,2010,43(01):4-6.
[4] 莫晏光,代文化.多功能移动数字电视的研究和开发[J].通信技术,2009,42(07):119-121.
[5] 张毅刚,彭喜元,董继成.单片机原理及应用[M].北京:高等教育出版社,2000.
[6] 翟永,刘磊.测绘数据中心Windows主机USB端口监控与审计技术研究[J].信息安全与通信保密,2009(04):93-96.