张显磊 彭永耀
【摘要】 本设计以C8051F320单片机为主控,集成USB、RS-232和RS-485多重数据传输功能于一体,最终实现将USB口数据转换成RS-232数据以及RS-485数据,同时RS232数据与RS485数据之间也可以实现相互转换,可以任意选择它們之间的数据转换方式。
【关键字】 串口 USB 数据转换
随着现代科技的飞速发展,笔记本、平板电脑迅速风靡,但传统的串行数据口却在新一代的电子产品中逐渐被淘汰,在企业、学校和其他从事电气技术工作或学习的地方,总是需要使用RS232、RS485接口,如工业控制仪器、PLC、变频器等,然而现在无论是笔记本电脑还是平板电脑,甚至台式电脑都很难找到RS232和RS485的串口,几乎都是USB的接口,所以给我们造成很多不便,严重影响了应用程序的开发和使用。由此可见,单片机多串口转换器的研究显得极其重要。
本设计通过使用C8051F320单片机为核心主控,将RS-485、USB以及RS-232集成于一起,最终在RS-232数据、RS-485数据还有USB口数据之间实现相互转换。
一、系统硬件设计
本设计是一个具有USB、RS232与RS485串口之间可以相互转换的转换器。由单片机核心控制模块、单片机复位模块、电源模块、稳压模块、RS232模块、RS485模块、USB模块、C2接口模块八部分组成。其硬件连接如图1所示。
图1系统设计框图
1.1 C8051F320单片机模块
C8051F320单片机内部有一个可编程的时钟振荡器,它可以提供2、4、8和16 MHz时钟的编程设定,无需外部插件,而且在程序运行时,可实现内外时钟的动态切换。单片机内部有调试电路,它可以进行全速和非侵入式的在系统调试,而且不需要仿真器;存储器和寄存器支持单步和断点,而且还可以进行对其观察和修改。指令的结构呈流水线型;大部分的指令需要一个或两个时钟周期执行就能执行完。当微控制器的时钟频率为25MHZ时,最高可以达到25MIPS。
1.2 RS232模块
一直以来,RS-232在计算机与外设或终端的近距离通信传输中应用最为普遍,属于串行数据通信的标准接口。
1.3 RS485模块
为确保高效传输速率,进一步提高传输距离,更远、传输是EIA在RS232的基础上,设计提出RS485接口,为了实现更远距离及更快速度的直接连接,制定的更高性能的接口标准。
1.4 USB模块
USB(Universal Serial Bus)是现今电子数码产品最常用的数据接口技术,在本设计中单片机(C8051F320)自身具备全速和低速的USB功能控制器功能(USB0),可直接控制USB外设,无需要外部元件。
二、系统软件的设计
2.1系统工作流程
系统提供了USB、 RS232与RS485可以互相转换的功能。这个转换器是基于TTL电平层面的,系统中的USB、RS232、RS485之间的数据通过TTL电平的桥梁进行传输。
2.2 USB0的端点地址
共有8个端点管道。端点0一直是作为双向IN/OUT,端点0是控制端点。其他端点被当做是三对IN/OUT端点管道。
2.3 USB收发器以及寄存器的访问
USB收发器的配置是通过USB0(收发器控制寄存器)来实现的。配置内容包括收发器使能/禁止、内部上拉电阻使能/禁止及器件速度选择(全速或低速)。在SPEED为“1”时,USB0工作状态为全速模式;当位SPEED为“0”时,USB0工作状态为低速模式。USB0中间接地址寄存器中的BUSY位则是USB0寄存器读忙的标志,可以通过软件对该位进行拉高拉动来实现启动对USB0寄存器进行读的操作,目标USB0寄存器的地址则由USB0ADR位(5—0)给出。USB0DAT用于间接写、读USB0寄存器。
2.4 USB中断
主程序开始初始化所有的子程序,然后进入一个无限循环的状态,这个过程是不停的从检测USB状态所获得的信息包来更新输出数据包。中断寄存器的读取和复位的程序及串口的数据传送给USB接口的程序。通过开关切换来实现两种串口与USB的通信。
参 考 文 献
[1] 萧世文,宋延清. USB2.0硬件设计[M].北京: 清华大学出版社,2006:39~54.
[2] Jobn Catsoulis.Designing Embedded hardware[M].OReilly Media,Inc. ,2005:203~211.