一种USB通信系统的设计方案
USB(Universal Serial Bus)是一种目前通用的串行总线技术,它是通过PCI总线和PC的内部系统数据线连接,实现数据的传送,具有即插即用的功能,支持热拔插,设备间线缆的长度可达5 m左右。
USB接口信号线有4条线,两条是电源线与地线(Vbus与GND),两条是以差分方式产生的信号线(D+与D-),从而实现了主机系统与USB设备之间的数据通信,见图1。
图1 USB通信数据流
USB总线121技术是基于分组交换方式的总线通信。首先把数据分成若干块,然后在每块数据前添加上同步信号、包标识,后面添加上CRC校验,形成USB封包。USB总线通信使用一种差分的输出驱动器来控制数据信号在USB电缆上的发送,即通过控制D+和D一线从空闲态到相反的逻辑电平,实现源端口的包发送。包发送结束后,D+和D-上的输出驱动器均处于高阻抗状态。
2 USB通信系统设计
2.1 硬件设计
USB通信接口是连接Pc机和汽车尾气检测仪内嵌单片机通信的桥梁,目前采用USB接口芯片来实现PC机与单片机AT89C5($3.7500)1之间的连接是一种比较好的方法。
由于汽车尾气检测系统内嵌单片机是采用串口(TXD、RXD)以RS232($780.5000)方式进行通信的,所以USB芯片与单片机AT89C51($3.7500)之间的连接方式也必须是RS232串口通信方式。因此,本文采用PROLIFIC公司推出的可实现USB接口转RS232串口的转换芯片PL一2303HX。根据汽车尾气检测仪USB通信系统设计要求,USB通信接口电路设计如图2所示。
图2 USB通信接口
USB插头与USB芯片间的连接通过USB—D+、USB—D一、GND和VO一3.3这4个端点实现,由于USB芯片PL2303HX支持类RS232接口,含有全双工发送和接收(RXD、TXD)串口,所以,PL2303HX芯片与单片机AT89C51的RS232串口间直接可以用3根线RXD、TXD、GND连接,即USB芯片PL2303HX的RXD、TXD和GND分别与单片机AT89C51的TXD、RXD和GND连接,双方都可发送和接收。
2.2 软件设计
2.2.1 通信方式
本文USB通信系统采用异步半双工通信方式,即通信的某一方发送和接收交替进行。通信的数据格式为每帧10位,包括1位起始位、8位数据位和1位停止位,见图3。
图3 字节传输序列
这里设置单片机串行口采用T作模式l,为10位异步通信,片内定时器Tl作为波特率发生器,波特率为2400bps;由串行口控制寄存器SCON的工作模式选择位SM0、SMI,分别设为0和l,从而设置其串行口为模式l;当定时器/计数器Tl控制寄存器TMOD中C/T=0和M1M0=10时,AT89C51定时器/计数器Tl为定时器模式,设置为方式2。作为波特率发生器,其波特率表示为:
则:定时器Tl的初值应设置为11Ll=THI=F3H,另外应禁止定时器Tl中断,以免因定时器T1溢出而产生不必要的中断。
2.2.2 通信协议
进行通信之前,通信双方首先要根据系统的功能要求制订某种特定的通信协议,然后才能编写相应的通信程序。本文通信协议:
①通信双方均使用2 400 bps的速率传送数据,PC机与AT89C51均工作于串口方式l(1位起始位、8位数据位、l位停止位)。
②AT89C51在发送和接收数据时,采用串口中断方式。
③PC机发出数据采集命令(握手信号),单片机AT89C5l串口收到握手信号后,立即将AT89C51内存存放的检测数据经过USB通信接口发送到PC机,一次数据采集完成。
2.2.3 通信程序流程
通信程序涉及到PC机通信程序和AT89C51串口通信中断程序,上位机(PC机)发出数据采集命令,下位机(单片机AT89C51)收到握手信号后,将数据传回PC机,从而完成一次数据采集,图4和图5是两个通信程序的流程图。
图4 PC机通信子流程
图5 单片机串口中断子流程
3 结语
本文设计的USB通信系统已在汽车尾气检测仪数据通信中得到了很好的应用。该系统具有采集数据准确可靠、使用灵活方便等优点,这种用USB通信技术取代传统串口通信的方法切实可行,有望在其他的智能仪器、仪表设备中得到借鉴和推广应用。
USB通信系 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)