远程终端设备(RTU)USB模块的开发设计

时间:2010-08-26

     引言

  在以往设计的远程终端设备RTU(Remote Terminal Unit)中,经常需要批量提取、转存数据,或是更新设备中的程序,或是对设备进行维修,由于设备上只有串口而没有USB接口。要想维修必须将设备带回来,但是RTU一般都是安装在野外或者是离维修站特别远的地方,这就给设备的维修、程序更新以及数据的提取、转存带来了极大的不便。现在我们设计开发的USB模块就可以轻松解决以上问题。

  1、系统硬件设计

  1.1 CH375概述

  CH375(见图1)是USB总线的HOST主机及DEVICE设备双用接口芯片,单片机可以通过CH375读写U盘中的数据,利用该芯片可在不了解任何USB协议或固件程序甚至驱动程序的情况下,轻松地将并口或串口产品升级到USB接口。


图1 CH375及外围电路

  CH375的USB主机方式支持常用的USB全速设备,外部单片机可以通过CH375按照相应的USB协议与USB设备通讯。CH375还内置了处理Mass—Storage海量存储设备的专用通讯协议的固件,外部单片机可以直接以扇区为基本单位读写常用的USB存储设备。

  1.2 系统硬件描述

  硬件连接原理图见图2。CH375通过数据线D0一D7连接ATMEGA32(见图3)数据I/O口,用于传输字数据。图2中,INT#为中断信号线,用于ATMEGA32接收来自CH375的中断信号;CS#为ATMEGA32对CH375芯片的片选信号线,一般接入主机端的地址线;RD#、WR#为ATMEGA32对CH375的读选通、写选通控制信号,与ATMEGA32端的RD#、WR#相连,这三个控制信号都是低电平有效;A0连接ATMEGA32的地址线,以区分传输的是命令还是数据,为1时表示是命令。为0时表示是数据;D+、D一为USB总线的差分信号线,用于CH375与USB设备的数据传输。CH375芯片的ACT#引脚用于内置固件的USB设备方式下的状态指示,本设计中通过lkl2电阻接红色二极管,在内置固件的USB设备方式下,当USB设备尚未配置或者取消配置后该引脚输出高电平,当USB设备配置完成后该引脚输出低电平。本设计中,将CH375的TXD引脚通过lkl2左右的下拉电阻接地或者直接接地,从而使CH375工作于并口方式。CH375芯片的UD+和UD一引脚是USB信号线,工作于USB设备方式时,应该直接连接到USB总线上;工作于USB主机方式时,可以直接连接到USB设备。


图2 CH375硬件连接原理图


图3 ATMEGA32引脚图

  2、软件设计

  软件流程图见图4。


图4 软件流程图

  2.1 底层驱动的实现

  USB系统驱动程序的设计是基于wDM(Windows Driver Model,驱动程序模型)的。由于CH375已经对固件程序进行了封装,包含了对海量存储设备通讯协议的处理,所以这~层就不需要考虑底层驱动的实现了。

  对于常用的读写U盘操作,以按字节方式,可定义实现以下两个读写U盘内容的API函数。unsigned char CH375-ReadUD(unsigned char xdata+pData,longLbaNo.uint BytesLen) unsigned char CH375一WriteUD(unsigned char xdata。pData.10ng LbaNo,uint BytesLen)

  个函数表示从4个字节表示的U盘I.baNo地址开始读取Bytesl,en长度的字节到pData所指的缓冲区中;第二个函数表示将pData所指的外RAM单元内容读取BytesI。en字节长度并写入到U盘以LbaNo开始的地址中去。

  2.2 文件系统的实现

  由于很多系统终会与Windows操作系统的个人计算机交换数据,所以为了方便数据交换,U盘中的数据应该符合Windows文件系统格式。CH375提供了U盘文件级子程序库,单片机可以直接调用子程序读写U盘中的文件数据。ATMEGA32可通过CH375按字节或扇区等方式读写U盘,这种方式将USB存储设备简化为一种外部数据存储器,这时写入U盘的数据不能直接用计算机读取,需要专门的工具才能查看。

  为了使U盘的数据能够被计算机识别和操作,需要将写入的数据组织成文件,U盘通常支持的文件格式为FATl2/16/3z,考虑到U盘的容量,常用的文件系统是FATl6。

  2.3 端口初始化

  由于使用通用I/0模块并口读写时序,所以需要初始化端口。设置PA7~PAO的8位作为数据并口输入,设置CS、WR、RD默认为输出高电平,设置INT#为输入,采用查询方式处理。端口初始化程序如下:

  void CH375_PORT~INlT()

  {DDRA=0x00;

  PORTD=0xF3;

  DDRD=0x7A;

  )

  2.4 CH375芯片初始化

  初始化CH375程序库和CH375芯片,操作成功返回0。初始化程序如下:

  void CH375-INIT(void)

  {UINT8i;

  CH375一PORT—INIT():

  mDelaymS(100);/*延时100毫秒*/

  i=CH375Liblnit()I

  mStopIfError(i);

  }

  2.5 定义文件操作

  根据FATl6系统的磁盘特性。定义所需要的各种操作函数,提供给外部调用以实现对文件的各种操作。下面对几个常用的操作函数的定义方法加以说明。

  (1) 打开文件或目录程序如下:

  void FILEOpen(UINT8’pCodeStr)

  { UINT8i;

  strcpy((char*)mCmdParam.Create.mPathName。(char

  *)pCodeStr);

  i=CH375FileOpen()l

  mStopIfError(i);

  )

  (2) 创建文件程序如下:

  void FII.ECreate(UINT8’pCodeStr)

  { UINT8 i;

  strcpy((char*)mCmdParam.Create.mPathName.(char

  *)pCodeStr):

  i=CH375FileCreate();

  mStopIfError(i);

  )

  (3) 删除文件程序如下:

  void FILEDelete(UINT8’pCodeStr)

  { UINT8i;

  strcpy((char*)mCmdParam.Create.mPathName.(char

  *)pCodeStr)l

  i=CH375FileErase();

  if(i!=ERR-SUCCESS);

  )

  (4) 本文以字节为单位写U盘文件,读写速度较扇区模式慢,但是由于字节模式读写文件不需要文件数据缓冲区FII。E—DATA—BUF,所以总共只需要600字节的RAM,适用于单片机硬件资源有限、数据量小并且读写速度要求不高的系统,写U盘文件程序如下:

  void FILEWrite(UINT8’pDataStr.UINT8 FILENUM.UINT32

  SectorOff)

  { UINT8 i。C;

  unsigned mt k,1"11 l

  mCmdParam.Locate.mSectorOffset=SectorOff;/*移动文件指针*}

  i=CH375FileLocate();

  mStoplfError(i);

  for(k=FILENUM;k>0;k-一)

  { for(m=0;m<512;)

  {e=”pDataStr}

  FILE—DATA~BUFEm++]=C;

  pDataStr++;

  }

  mCmdParam.Write.mSectorCount=l;

  i=CH375FileWrite();/*写人数据*/

  mStoplfError(i);

  mCmdParam.Write.mSector(:ount=0:

  i=CH375FileWrite()I/*写入数据*/

  mStoplfError(i);

  }

  cH375Di rtyBuffer();/*清磁盘缓冲*/

  )

  程序中pDataStr是写入数据的首地址,FII。ENUM是写入扇区的个数,Sector()ff是写入文件的位置,CH375子程序库内部是将文件长度按扇区长度512进行取整处理,当移到文件尾部,如果文件尾部有不足一个扇区的零头数据则被忽略,如果不做处理那么零头数据将可能被写入数据覆盖。

  读文件与写文件的过程类似。这里用到CMD—DISK—RD—GO命令,限于篇幅在这里不将源代码列出。

  3、总结

  USB-HOST模块用于远程终端设备中,该模块在实际数据采集中运行时,读写文件与设想基本一致。符合移动数据交换的设计要求。由于基于CH375的U盘渎写模块只支持USB1.1通讯协议,该模块只能在USB1.1协议下进行数据交换。该设计现已被用于远程终端设备上,利用该模块,设备可以直接和USB存储设备相连进行数据的转存和程序的更新,从而很大程度上方便了用户。


  
上一篇:基于CAN和CCll00的嵌入式远程测控系统的设计
下一篇:油管长度智能计量仪的研制与试验

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料