USB通信范文(精选8篇)
USB通信 第1篇
近几年随着无线技术的快速发展, 无线USB接口技术也应运而生。无线USB是基于超宽带无线通信技术 (Ultra Wide Band, UWB) 的宽频带、低功率谱密度优点。随着各种类型的USB外设 (如USB闪存盘、USB视频头、USB鼠标等) 的陆续出现, USB通信的优点越来越广泛的被人们所熟知, 将外设连接到计算机时, USB接口成为优先的选择, USB总线主要具有以下优点:
(1) 使用方便:设备自动识别, 自动安装驱动程序, 支持动态接入。
(2) 应用范围广:传输速率从几Kb/s至几百Mb/s;同一组总线上可以同时支持同步和异步传输类型;支持对多个设备的同时操作 (多连接) ;支持多达127个物理外设;支持在主机和设备间多个数据和消息流的传输。
(3) 灵活性高:可以有很多不同大小的分组, 并允许在一定范围内选择设备的缓冲区;通过支持不同的分组缓冲区和时延要求, 支持不同数据传输速率的设备。
(4) 传输可靠性高:协议中包含错误检测机制。
二、直接数字通信设计
(一) USB控制系统设计
USB接口引擎的芯片仅处理USB标准协议包的通信;具有结构相对简单、灵活性高、设计复杂性低的特点。本文遵照USB协议的定义, 参考市场上已有的USB IP核, 可以分析出一个USB设备控制器应具有如下主要功能:协议数据翻译、总线上事件检测、事务传输控制。
协议数据翻译:由于USB数据传输采用反向不归零 (None-Return to Zero Inverted, NRZI) 编码, 并有位填充, 所以在发送或接收串行数据时需要进行编码与解码。数据在控制器内传输时以字节为单位, 因此还需要进行串并转换。USB数据以包为单位在总线上传输, 在进行NRZI解码后需要识别数据包开始、结束标志数据校验采用循环冗余校验 (Cyclic Redundancy Check, CRC) 方法, 在接收或发送数据时需要进行相应的CRC校验。
总线上事件检测:对于USB总线事件需要进行检测与确定, 完成在各状态之间正确转换。USB事务传输控制:不同类型的USB事务有不同的传输控制机制, 需要根据USB协议中所规定的顺序来收发一系列USB包, 完成一次事务传输, 所以USB设备控制器要做到能够正确识别由主机发来的各种包, 并能根据传输机制做出正确处理。
物理层包括收发器和UTMI两部分, 其中收发器采用Agere Systems公司的芯片USS2X1A 8-bit, 它的主要功能包括包开始 (Start of Packet, SOP) 和包结束 (End of Packet, EOP) 信号的检测和产生时钟恢复, 即时钟和数据的分离和提取;NAZI编码和解码;填充位的插入和删除;串/并和并/串转换;填充位错误和EOP错误的检测。UTMI模块实现总线上事件检测功能, 完成USB设备各状态之间的转换。该部分对USB数据并不进行处理, 仅负责收发器和协议层PL模块之间的数据传递。
控制器将转换后的数字量直接存储到FIFO存储区中, 也可以读取FIFO存储区中的数据并输出到外部I/O接口。从而在单片FPGA上控制伺服系统所有信号。
USB设备控制器的核心部分是协议层SIE模块, 它主要完成USB事务传输控制功能。协议层SIE对于UTMI传递过来的USB包要能进行识别和翻译。
端点控制模块用于端点的选择及端点访问控制, USB核支持多达16个端点, 实际使用时端点数目可设置。控制器都必须通过对端点寄存器读写来进行控制。此模块是由端点和状态寄存器构成, 存放各种状态信息和事件数据。
每个端点分别定义一套设置和功能相同但地址不同的寄存器, 以端点0为例, 它包括端点0状态控制寄存器 (EP0_CSR) , 记录了端点状态, 包括端点号、端点类型和传输类型等一些状态属性的信息。
USB规范参照网络中的开放系统互联参考模型 (Open System Interconnect Reference Model, OSI) 采用了分层描述。USB规范把USB系统分为三层, 即接口层、设备层和应用层。
(二) 物理层面的数字部分设计
USB接口的物理层包括数字和模拟两部分。本文只实现了物理层的数字部分。UTMI模块含有接收状态机、发送状态机、接口状态引擎和速度识别引擎4部分组成。接收/发送状态机分别为接收和发送数据部分的核心控制逻辑, 控制着对数据操作的顺序, 接口状态引擎用于跟踪接口的各状态信息, 它可以控制串行通信芯片的挂起/恢复工作模块, 还可以控制芯片的全速/高速通信速率的转换。接口状态引擎子模块采用一个内部状态机保持各状态信息和芯片操作模块转换的信息。这些信息放在状态寄存器中。速度识别引擎用来判断串行数据通信的速率, 并处理芯片挂起和复位操作的数据流方向。
(三) 串行接口引擎即协议层设计
设备控制器的核心部分是串行接口引擎即协议层模块, 它主要完成USB事务传输控制功能。协议层对于UTMI接口传递过来的USB包要能进行识别和翻译。同时该模块判断出当前的传输事务是何种类型, 根据USB事务传输机制适时发送正确的USB包, 由收发器传递给UTMI模块处理。该模块的结构主要包括:打包模块、解包模块和协议引擎模块。协议层中的打包模块专门负责组装USB包, 如果有需要发送的USB包, 则送往打包模块组装, 先组装包头, 插入适当的PID, 然后加入数据字段和校验字段。
如果有UTMI模块传递过来的USB包, 则送往解包模块拆装, 先解码出PID, 八位PID的低四位得到PID, 通过USB2.0协议的PID类型定义译出PID, 再对其后的数据字段进行校验并和包中校验字段比较。
(四) 控制设备传输层面设计
应用层不负责具体的传输, 它控制设备传输哪些数据, 由主机的用户软件和设备的功能单元组成, 功能单元是用户软件对USB设备的抽象。设备的功能主要在这一层上实现。功能单元提供每个USB设备所需的特定功能, 主机端包括用户软件和设备驱动程序, 设备端的功能由功能单元来实现, 他们之间的联系看作是逻辑上的数据流。
数控系统的性能一定程度上是由系统参数决定, 如何正确传输和设置这些参数也是实现直接数字通信的关键问题, 参数的正确传输与否直接影响机床正常的工作及其性能的发挥。通常一个数控系统都有大量参数, 少则几十个, 多则上千, 这里我们仅选取一个关键参数的传输来说明数据如何在这一层上进行传输。
在完成以上物理层和协议层的设计后, 首先根据系统参数把由一组指令实现的某种功能对应的程序存入存储器中, 用一个命令代表这些功能。编写控制程序时只要写出该代表命令, 就能实现这些功能。
参数的存储由于数控机床的参数是需要根据机床的状况进行更改的, 所以参数都保存在可读写的存储区内。本文设计了16个端点, 每个端点的存储区都可以存参数、程序、参数等数据。系统当前的数据可以存放在任何一个区中, 也可以从任一区域读数据作为当前使用的数据。
三、结语
本文首先介绍了USB系统的逻辑体系结构, 接着讲述了USB协议规定的数据通信机制, 数据传输格式, 信息包的组成和分类, 数据传输的4种方式, 本文结合本系统选择中断和控制传输方式, 讲述和USB设备控制器设计相关的一些基本概念, 描述符的具体设置及通信配置。根据USB协议先对USB设备控制器进行功能模块划分, 对各部分进行说明。完成对物理层和协议层的设计, 给出了设计生成的状态转换, 接口信号, 数据传输流程。
摘要:串行接口总线 (Universal Serial Bus, USB) 实现了高速、多点的数据传输和数据监控等功能, 简化了数控系统的接口设计, 提高了数控系统的性能。
关键词:直接数字通信,USB,设计
参考文献
[1]逢田宏树, 菊池隆裕, 枝洋树.从UWB到无线USB[J].电子设计应用, 2004, 05:51-55
[2]Intel Corporation.Designing a Robust USB Serial Interface Engine (SIE) [EB/O1].http://www.usb.org/developers/whitepapers/siewp.pdfs.
[3]Trenz Electronic.Full-Speed USB1.1Function Controller Product Specification参考文献[EB/O1].http://www.trenz-electronic.de
USB通信 第2篇
经排查、测试解决方法:
主板电池供电不足:
以上两台机子均是使用年数比较长的台式机,很有可能主板电池电量不足所知;
解决方法:更换新的主板电池,问题解决,
另外一种情况,也可以导致该现象,即BISO内关闭了USB2.0设备:
基于USB的伺服电机的通信研究 第3篇
目前,在开放性数控系统中采用Windows操作系统,需要使用一种“PC+NC控制卡”,但这种方案存在两个缺点:1)需要增加硬件投资,成本大;2)不同NC控制卡生产商之间存在兼容性问题[1]。因此,既要考虑不增加或尽量少增加系统硬件成本,又要利用Windows操作系统的各种优点,使系统能完成实时控制任务,那么对现有的伺服电机系统结构进行改变就是一个顺势而为的思路。基于这个目标,本文采用了当前广泛使用的USB2.0协议作为通信接口,基于此接口,设计了指令存储缓冲区,提高伺服电机系统的指令传输响应时间。
1 基于USB的伺服电机的总体构架
目前,USB总线技术支持即插即用和热插拔技术,而且可以同时支持127个设备。因此,本文采用该总线作为电机系统与pc系统的通信接口,也就是说理论上最大可支持的伺服电机数目也是127个,这个数目对于一个数控系统来说,已经足够用了,而且即使出现接口数不够用的情况,还可以通过USB扩展口的方式进行扩展,极为方便。
在Windows系统的数控系统上利用USB总线控制伺服电机,其工作原理与通常的数控系统类似,但这里数控系统的核心变成了PC系统,它来负责完成数控系统的核心功能。其任务流程为:首先,系统通过CNC核心产生指令文件,并利用USB2.0总线,将指令文件发送到挂载在USB总线上的各个伺服电机,再通过内存读写控制器RRWC,将指令文件逐个写入到目标指令缓冲区中。然后,实时控制处理器按照外部时序从目标缓冲区读取所需的目标指令,并执行以完成控制算法的任务。
2 基于USB的伺服电机的通信
2.1 USB接口的研制
本文研究将FPGA作为主设备控制从设备CY7C68013A,从设备的FIFO模式接口与主设备相连,采用KerilμVision2进行固件的开发,固件是控制硬件完成预期功能的一种辅助硬件。Keil C51是一种符合ANSI标准的,高效率C语言编译器,是专门为8051单片机设计的,可以生成存储空间小、,运行速度高的程序代码,因此,本文开发平台选用KerilμVision2软件,并采用C51开发语言来完成EZUSB固件程序的代码开发、仿真和调试[2]。设计固件程序主要源文件及其作用如表1所示。
其任务循环的流程实现如下描述:该函数用来初始化FX2,完成各个端点的初始化及其FIFO模式的设置,在开始任务之前或者FX2再次枚举之前被调用。在本文的设计里,将SLAVE FIFO接口的AUTO-OUT模式设置在FX的端点2上,将SLAVE FIFO接口的AUTO-IN模式设置在端口8上,考虑到指令数据输出量相对输入量会较大的情况,为保证在端点间,大容量指令数据可以顺利平缓传输,我们将输出端点2的缓冲区大小设置为3*1024B,而输入端点8的缓存区大小设置为2*512B,两个端点之间,没有CPU的指令干预,这样的设置也可以保证上位计算机有更多的时间进行处理。
2.2 电机旋转方向辨识的通信
电路本文的编码器电路中,位置计数器是POSCNT寄存器,它对两相正交编码器信号进行上下沿边沿计数。方向指示寄存器是UPDN,电机转子的旋转方向用该寄存器来表示,同时位置计数器POSCNT的计数方向也由它来表示。方向辨识的逻辑简图中两相正交编码器信号进行编码器电路后,被寄存三次,后两个寄存器值用来分别捕获QEA的正、负跳变,QEB的正、负跳变。每次编码器信号的跳变后,都会被寄存下来。两级寄存器分别寄存了当前QEn的跳变状态及前一次QEn的跳变状态[3]。旋转方向就可以通过这些跳变状态来检测出来。
图1表示了如何根据正交编码器输入的两路正交编码信号来判断伺服电机转子的旋转方向。得到伺服电机的旋转方向后,在每个正交编码器信号的跳变沿编码器检测模块对计数器进行操作。当检测到伺服电机正向旋转时,在编码器信号跳变沿编码器检测模块对计数器进行加1操作,当检测到伺服电机负向旋转时,在编码器信号的跳变沿编码器检测模块对计数器进行减1操作。由于在两路正交编码器的正负边沿编码器检测模块都进行计数器操作,因此伺服电机每转一圈计数器更改数为伺服电机光栅码的4倍。在本文中,伺服电机每圈所产生的编码器计数值为8000。
2.3 伺服电机的通信控制流程
包括初始化变量,时钟设定,中断初始化等。DSP进入中断程序执行控制环的运算由外部中断源控制,电机伺服控制由中断服务程序来实现。在每个中断报务周期内,系统首先调节电流PI,然后完成参考电压矢量的传送,FPGA接收到传送来的电压矢量后,产生SVPWM信号。图2为伺服电机通信控制主程序的流程图。
由于控制系统的外环频率响应比电流环慢很多,因此速度环的采样周期取为电流环采样周期的20倍,每运行20次电流环中断服务程序去运行1次速度环控制算法,首先从FPGA读取速度值,然后调节速度环PI,以更新转矩电流指令。
3 结束语
总之,采用USB实时通信技术的伺服电机系统随着计算机及网络通讯技术的进步与时俱进。目前,多种分布式运动控制系统已经面世,典型的有:Real-Time Ethernet、SERCOS、等。这些在分布式伺服电机系统中采用高速网络技术,产生了诸多优点,比如:系统应用更加灵活、系统整合控制效果更佳等等。
协同技术(synergy technology)是伺服电机系统本质,因此伺服电机系统设计工程师需要整合多项不同的技术,来满足系统的应用需求。这些关键技术如数字控制、微处理器软硬件设计、运动控制、电力电子、自动控制、电机控制等等。而随着技术领域不断取得的巨大的进展,这样的系统整合所表现出的特质,将会更明显的以“实时多任务柔性控制技术”的方式呈现出来。
摘要:随着数控的发展,对伺服电机系统的通信提出了更高的要求。该文分析了基于USB的伺服电机的总体构架,并详细研究了基于USB的伺服电机的通信,涉及到:USB接口的研制、电机旋转方向辨识的通信电路以及伺服电机的通信控制流程。
关键词:伺服电机,USB接口,通信研究
参考文献
[1]严帅,杨明,贵献国,徐殿国.基于DSP和FPGA的永磁交流伺服系统研究[J].微电机,2007(4):28-31.
[2]张建勇,马建设,徐端颐,潘龙法.基于有限状态机的光存储伺服系统设计[J].光学技术,2007(3):12-16.
USB通信 第4篇
关键词:C8051F020,CH372,USB,CPLD
0 引言
USB(Universal Serial Bus,通用串行总线)是在1995年被提出来的,并由Compaq,Digital Equipment Corp(现属于Compaq),IBM,Intel,Microsoft,NEC和Northern Telecom等7家公司定义和推广[1]。USB作为一种新的计算机接口技术与标准,以其使用方便、易于扩展、速度快及热插拔等优点而广泛应用于数据采集技术中,不仅简化了计算机与外设的连接过程,提高了低速和高速的兼容,同时还为用户提供了一种可共享、可扩充的使用方便的串行总线。
1 CH372简介
USB总线接口控制器是USB设备与主机通信的重要器件,主要有两种:第一种是带USB接口的单片机;第二种是专用的USB接口芯片。本研究中采用专用的USB接口芯片CH372,并配合C8051F020单片机进行协议处理和数据交换。CH372是南京沁恒电子有限公司生产的一种USB总线通用接口芯片,是CH375芯片的功能简化版。在本地端,CH372具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上;在计算机端,CH372的配套软件提供了简洁易用的操作接口,与本地端的单片机通讯就如同读写文件。
CH372控制器的主要特点[2]:
(1)支持全速设备接口, 兼容USB2.0规范, 即插即用, 外围元器件只需晶体和电容。
(2)提供一对主端点和一对辅助端点, 支持控制传输、批量传输、中断传输。
(3)具有省事的内置固件模式和灵活的外部固件模式,内置固件模式下屏蔽了相关的USB协议.自动完成标准的USB枚举配置过程,完全不需要本地端控制器作任何处理,简化了单片机的固件编程。
(4)通用Windows驱动程序提供设备接口,通过DLL提供API应用层接口。
(5)通用的本地8位数据总线,4线控制:读选通、写选通、片选输入、中断输出。
2 系统硬件电路设计
微控制器采用Silicon Laboratorcs公司的C8051F020,它是全集成混合信号SoC处理器,具有与8051兼容的高速流水线结构的CIP-51内核,速度可达25MIPS,具有可在线编程的64kB Flash存储器和4352字节的片内RAM,片上集成全速非侵入式在系统调试接口。C8051F020片上集成8路12位逐次逼近式ADC,转换速率高达500ksps[3]。
CH372芯片在本地端提供了通用的被动并行接口,通过被动并行接口,可以很方便地挂接到各种8位单片机、DSP、MCU的系统总线上,并且可以与多个外围器件共存。采用3.3V供电的CH372可与C8051F020使用相同的电源,其连接方式如图1所示。
CH372芯片的UD+和UD-引脚应该直接连接到USB总线上。CH372的8位并行数据端口USB_D[0∶7]与C8051F020的数据端口D[0∶7](P7口)相连;同时读选通输出/RD和写选通输出/WR分别连接到单片机。/CS由地址译码电路驱动,本研究中地址译码采用CPLD模块来实现,用于当单片机具有多个外围器件时进行设备选择。/INT输出的中断请求时低电平有效,单片机可以使用中断方式或者查询方式获知中断请求。
CPLD模块采用Altera公司推出的MAX II器件EPM570T100C5芯片。单片机与CPLD之间的接口是通过单片机的地址总线(A11-A15)端口以及读写控制I/O口与CPLD的I/O口相连来进行地址译码和读写控制。
3 系统软件设计
3.1 USB接口软件设计
(1)固件程序
由于本研究使用的CH372内置固件模式屏蔽了相关的USB协议,自动完成主机的USB枚举配置过程,完全不需要本地端控制器做任何处理,所以固件程序只需要实现涉及数据交换、参数设置的要求即可。
①初始化程序
初始化程序主要完成两个任务:设置芯片的工作模式和测试芯片的工作状态是否正常。CH372与单片机连接后产生两个地址:命令口(A0=1)和数据口地址(A0=0),这里分别用CH372_COM和CH372_DATA表示,并分别采用void CH372WriteCom(BYTE cmd)和void CH372WriteData(BYTE data)函数对其赋值,另外BYTE CH372ReadData(void)函数则用于返回CH372_DATA的值。
CH372初始化函数void CH372_Init(void)部分功能实现如下:
CH372WriteCom( CMD_SET_USB_MODE );/*调用CH372写命令函数,设置USB工作模式*/
CH372WriteData( 2 ); /*调用CH372写数据函数,设置为使用内置固件的USB设备方式*/
for (i=100; i!=0; i--) //等待操作成功
{
Delay_us(10);
if( CH372ReadData( ) == CMD_RET_SUCCESS ) break;
}
/*下述启用中断,且CH372连接在INT1*/
IT1 = 0; //置外部信号为低电平触发
IE1 = 0; //清中断标志
EX1 = 1; //允许外部中断
②中断发送程序
中断服务程序通过执行CMD_GET_STATUS命令获取并分析中断状态,若是发送数据成功,执行CMD_RD_USB_DATA命令从CH372读取接收到的数据;若是上传数据成功,执行CMD_WR_USB_DATA7命令向CH372写入下一组要发送的数据;若是中断数据,分析控制命令类型并转入执行相应的数据采集控制。
中断服务函数void INT1_ISR() interrupt 2 using 1部分功能实现如下:
CH372WriteCom( CMD_GET_STATUS ); // 获取中断状态并取消中断请求
IntStatus = CH372ReadData( ); // 获取中断状态
IE1 = 0; //清中断标志,与单片机硬件有关,对应于INT1中断
switch( IntStatus ) //分析中断状态
{
case USB_INT_EP2_IN: //批量端点上传成功,数据发送成功
CH372WriteCom( CMD_UNLOCK_USB ); /*释放当前USB缓冲区,收到上传成功中断后,必须解锁USB缓冲区,以便继续收发*/
break;
}
(2)驱动程序
USB驱动程序采用WDM驱动程序。WDM型驱动程序是内核程序,它采用分层结构模型,较高级的USB设备驱动程序和较低级的USB函数层;其中USB 函数层由两部分组成:较高级的通用串行总线驱动程序模块(USBD)和较低级的主控制器驱动程序模块(HCD)。通过USB总线设备用户不需要直接和硬件打交道,所有的USB 命令、读写操作通过总线驱动程序转给USB 设备,因而用户只需通过下层驱动程序提供的接口即可访问硬件。本研究中直接应用CH372芯片开发商提供的设备驱动程序,驱动程序可在根目录/参考文档/USB/CH372DRIVE 中找到,安装完成后,在PC 机的设备管理器中的“外部接口”下出现“USB CH372/CH375”。
(3)应用程序
CH372在计算机端提供了应用层接口,应用层接口是由CH372动态链接库DLL提供的面向功能应用的API,所有API在调用后都有操作状态返回,但不一定有应答数据。CH372动态链接库提供的API包括:设备管理API、数据传输API和中断处理API。
在计算机端采用C语言编写程序。首先调用API函数LoadLibrary()装载CH375DLL.DLL驱动文件,然后再进行读写操作。操作CH372之前需调用CH375OpenDevice()函数打开设备,操作结束后调用CH375CloseDevice()函数关闭设备。常用操作函数有CH375ReadData()和CH375WriteData(),为设备的读写函数,以及CH375SetTimeout()函数,用于指定读写操作的超时强制返回时限[4]。
3.2 CPLD软件设计
采用Altera公司的CPLD开发软件Altera QuartusII 完成系统的软件设计,Altera QuartusII 设计软件提供完整的多平台设计环境,能够直接满足特定设计需要,为可编程芯片系统(SOPC) 提供全面的设计环境。其中HDL语言中的VHDL硬件描述语言,与具体的工艺技术和器件无关,易于共享和复用,具有多层次描述系统硬件功能的能力。在本设计中,CPLD主要实现的功能为地址译码端口,利用VHDL语言进行软件的设计。CPLD地址译码地址分配表见表1所示。
4 试验结果
本文研究的基于CH372的USB通信技术,其通信调试过程如下:
(1)在计算机端安装CH372的驱动程序CH372DRIVE,安装完成后,单片机板可以像U盘一样在计算机上进行热插拔;下载CPLD570T文件夹中的程序到altera的CPLD中。
(2)运行USB芯片的初始化程序后, 在计算机的设备管理器中会出现“USB CH372/CH375”,如图2所示,此时USB接口芯片正常工作,计算机和单片机板可以采用请求加问答的方式进行通信。
(3)运行单片机示例程序,并打开厂家提供的CH372的调试工具,点击“打开设备”后,在端点2下传数据框中写入要下传的数据(16进制数据)和数据长度,点击“下传”按钮,这样数据便传到单片机中,单片机随即将数据回传到PC 机,此时,点击端点2上传的“上传”按键,数据便显示于上传数据框中,如图3所示。
5 结束语
本文研究了基于CH372的USB通讯技术,采用CH372接口芯片很好地实现了单片机与计算机的数据通信;并采用CPLD实现地址译码与读写控制,CPLD与单片机的结合可以有效地实现过去需要利用单片机和大量外围接口芯片才能完成的功能,并可以根据需要不断扩展外围电路,实现用户的需要。试验表明该设计能够有效完成数据传输,增强传输的准确性和可靠性,在数据采集领域有着广泛的应用前景。
参考文献
[1]许永和.8051单片机USB接口程序设计(上)[M].北京:北京航空航天大学出版社,2004.
[2]USB chip Products.CH372/CH372A Datasheet[EB/OL].(2007-10-20)[2009-12-10].http://wch-ic.Corn/product/usb/ch372.asp.
[3]Silicon Laboratories Inc.C8051F02x Data Sheet[EB/OL].[2008-8-30].https://www.silabs.com/products/mcu/mixed-signalmcu/Pages/C8051F02x.aspx.
USB通信 第5篇
1 系统软件架构
PC上软件分为三层:
(1) Application:应用层。
(2) USBIO.dll:链接库。
(3) USB Driver:驱动层。
单片机的程序包含四个部分:
(4) Application:应用层。
(5) Application Interface:用户接口层, 提供库内核和应用层之间的接口。
(6) USB Library Core:USB库内核层, 该层管理使用USP IP硬件和USB标准协议的直接传输。
(7) Firmware Library:STM32F10xxx固件库。
在单片机部分, 由于ST公司提供了USB库及STM32F10xxx固件库, 开发起来较为方便, 而PC部分由于需要自行开发驱动, 对于大多数应用层的开发者来说, 存在较大难度, 因此本文主要描述PC端的程序设计。
2 驱动层和链接库
这两层采用C++结合WINDDK和Driver Studio工具包来开发, 开发环境为VC6.0。
首先, 利用Driver Studio通过代码向导生成这两层源代码的框架, 其中有两步需要格外注意:
(1) 设置Vendor ID和Product ID, 必须与USB设备固件程序里的设备描述符一致。
(2) 添加端点, USB所有的通信都是基于端点, 这里我们使用端点2接收数据, 通过端点3发送数据。
按照向导配置完后, 就可以生成代码框架, 该框架已经包含了进行基础通信所必要的代码, 只需要针对具体应用作一定优化即可。
3 应用层
应用层采用MFC开发, 主要功能是对设备进行参数配置和数据回收, 不同的指令会采取不同的读取模式, 例如本应用中“读取文件总数”、“读取文件目录”、“读取已存储页数”这三个功能项通信数据量小, 于是采用了同步模式, “回收文件”和“回收全部”则通过新建线程在后台完成通信, 前台显示回收进度条, 通信部分核心代码如下:
4 结语
USB通信 第6篇
现代安全防卫系统中及时发现和定位入侵行为具有重要的现实意义。传统的安全防卫系统存在监测距离较短、抗电磁干扰能力弱、维护成本高等缺点。分布式光纤振动传感器能测量整个光纤长度上随时间变化的振动信息,具有检测距离远、抗电磁干扰能力强、安装后易维护等优点,已成为长距离管道监测和安全防卫领域最具有应用前景的技术之一[1]。
本系统中需要对多路信号进行高速、高精度采集,然后将数据上传到PC机中进行数据处理。所以上位机(PC机)和下位机(FPGA)如何高效、快速、方便地数据传输是本系统中的重要问题。目前常用的传输方法为RS 232串口通信方式,通信协议简单,在交互数据量不大,传输速度要求不高的情况下使用非常方便[2]。但是其通常传输速率在几十Kb/s,在高速实时传输系统中无法达到要求。
本文研究基于USB接口的上、下位机通信方法,来解决数据的实时交换问题。通用串行总线(Universal Serial Bus,USB)是计算机上的一种新型接口技术,它使得计算机和外部设备的连接十分方便。USB接口已经和串口、并口一样,成为PC机的标准接口。目前最新的USB 2.0接口的最高传输可以达到480 Mb/s,远高于传统的串、并口连接速度,可以满足绝大多数情况的大数据量实时交换的需求。除此之外,USB接口还支持插拔,极大地方便了系统的开发调试和实际使用。
1 主要器件选择
本系统为分布式光纤振动传感器的数据采集和传输系统,需要实现的主要功能有光电转换、A/D转换和USB通信。系统的总体结构图如图1所示,可以看出系统以FPGA为处理核心,包含光电转换、A/D转换和USB通信等外围功能模块。
由于光纤微扰动传感器的传感采用的是光纤,所以首先需要将信号经过光电转换和A/D转换,将信号转换为数字信号。然后,在FPGA中进行数据缓存,并对多路信号进行排序后通过USB总线将存储器中数据上传到PC机中。
1.1 光电转换和A/D转换器件
光电转换部分采用的是PINFET,PIN管反偏高、输出阻抗与FET的高输入阻抗得到很好匹配,同时减少了外部干扰和杂散电容,大大降低了热噪声,这对低噪声器件是非常有益的。比起目前较通用的PIN器件来说,PINFET不需要复杂的后续电路,而且其模块化设计,使输出噪声较小,输出电压较大,为后续A/D转换器的采样电压提供较好的工作范围[3]。
A/D转换模块采用的是12位双通道差分输入SAR型AD7356,结构简单实用。AD7356为12位双通道差分输入SAR型AD。该AD为双通道型,所以2路信号的转换是同时进行,减小了因转换带来的时间延迟。而且AD7356的采样频率由输入时钟信号决定,因此可以很方便的改变系统的采样频率,满足系统1~5 MHz的采样速率要求[4]。另外该AD采用单2.5 V供电,可以与FPGA共用电源,使系统的供电系统简洁。
1.2 FPGA
作为高速数据采集系统数据缓存的FPGA,由于系统需要对16路信号进行高速实时缓存,所以FPGA的内部存储空间需要比较大。另外,系统由于下一步需要对于信号做初步处理以减轻PC的运算量,提高处理的实时性,所以采用的是XC4VSX25。XC4VSX25的内部块RAM高达2 304 KB,分布式RAM高达160 KB,完全满足系统需求。而且XC4VSX25中含有128个XtremeDSPTM Slice,而每个 XtremeDSPTM Slice包含一个1818 位带补数功能的有符号乘法器、加法器逻辑和一个 48位累加器,每个乘法器或累加器都能独立使用[5]。XtremeDSPTM Slice可以通过IP核的形式方便的调用,在XC4VSX25中可以方便的将乘法器和累加器进行组合,构成所需要的数据处理结构,为下一步信号处理提供了基础。
1.3 USB器件
USB接口使用方便,连接简单,但是通信协议很复杂。因此,USB外设必须使用控制器芯片,管理数据通信USB控制器采用集成了8051单片机的CY7C68013A控制器芯片,该芯片遵从USB 2.0规范,有较快的传输速度,是目前比较通用的一种USB控制芯片[6,7,8]。
CY7C68013A是Cypress公司EZ-USB FX2LP系列芯片中比较经典的一款USB控制器,其内部结构如图2所示[9]。其中,主要包括USB 2.0收发器、串行引擎(SIE)、增强型8051内核、16 KB的RAM、4 KB的FIFO存储器、I/O接口、数据总线、地址总线和通用可编程接口(GPIF)。
EZ-USB FX2LP拥有非常独特的结构,其串行接口引擎(SIE)负责完成串行数据的解码、差错控制、位填充等与USB有关的功能。串行接口引擎(SIE)能够实现大部分的功能,从而减轻了嵌入式增强型8051的负担,简化了USB固件程序的开发[10]。
2 系统软硬件实现
2.1 A/D转换
系统通过PINFET光电转换为单端模拟信号,而A/D转换器AD7356是差分输入方式,所以需要对输入方式进行转换。AD7356说明书中给出了详细的转换电路,按说明连接即可。由于AD7356供电电源为2.5 V,所以和FPGA之间的连接需要调整AD7356的信号电平,使得输出电平与FPGA的3.3 V电平兼容。在电路设计时,可以通过将AD7356的Vdriver引脚连接到3.3 V,这样使得输出信号电平为3.3 V。
系统采用的AD7356采样频率由输入时钟信号决定,而采样通过使能引脚CS控制。在设定好采样频率后,A/D转换程序主要依靠对CS信号控制,并对输入得两路信号串并转换即可。
2.2 数据缓存
数据缓存主要是利用FPGA内自带的块RAM对多路信号进行排序、存储,然后按USB数据包大小打包传输,因此对于硬件(FPGA)不再多做介绍。
数据缓存的软件实现主要依靠FPGA内的双口RAM IP核。双口RAM由于有2个单独的数据输入和输出口,所以可以调节输入输出端口的速度,使得数据读取与输入速度可以方便的控制。另外,由于本系统有多路光信号,所以FPGA内还需要对各个双口RAM的读取进行控制,对各路信号读取顺序进行,其软件结构图如图3所示。每路A/D都有两个RAM轮流存储采集数据,一方面避免RAM出现数据溢出,保证数据不丢失;另一方面可以通过将RAM大小设定与USB数据包大小一致,使USB传输的控制简单。
2.3 USB通信
在系统中,USB控制器被配置为Slave FIFO模式,CY7C68013A Slave 模式接口引脚的连接如图4所示,这样FPGA可以将USB控制器当成FIFO来控制,而不用考虑USB标准的各种规则。而USB控制器则将USB标准的各种规则通过许多特殊寄存器来设置,将USB控制简化。
因此,此部分的软件实现包括2个部分。从图4可以看出,FPGA对各RAM轮流读取数据,由于RAM大小与USB数据包大小设定一致,直接把数据送入CY7C68013A即可。而FPGA把CY7C68013A当成FIFO来控制,所以该部分程序比较简单。而CY7C68013A内程序设计主要是通过固件程序对传输速度、传输方式、传输模式等进行设置。
固件程序是指运行在设备CPU中的程序,只有在该程序运行时,外设才能称之为具有给定功能的外部设备。系统把固件代码固化到1片E2PROM中,外设加电后由FX2通过I2C总线下载到片内RAM中自动执行。固件架构是由Keil C51编译器与其整合开发工具所编写和构建。其主要文件包括:fw.c负责设备连接、重枚举、设备初始化;periph.c负责响应各种中断事件,是主要的用户函数应用代码;gpif.c含有GP IF波形描述符表,可以实现波形的传输;dscr.a51文件定义USB设备握手时需要的各种描述符;fx2.h定义各种二级中断向量和描述符的数据结构;fx2 regs.h定义USB单片机中所有的寄存器。
USB支持4种传输类型:控制传输、中断传输、等时传输、批量传输。批量传输可以是双向的,也可以是单向的。它特别适合大数据量的传输,而且它对传输的准确性要求较高。因此,通过固件程序设定本系统采用Slave FIFO模式,批量(BULK)传输方式进行数据传输。
3 实验结果
为了方便实验,使用耦合器将一路光信号分为16路相同的信号,这样所有采集到的信号波形基本相同。实验时,AD7356设定为1 MHz采样速率,USB数据包大小为512 Kb,CY7C68013A采用异步Slave FIFO模式发送数据,上位机采用Cypress公司自带的EZ-USB Interface软件采集实验数据。采集到的信号如图5所示,系统在16.7 Mb/s的传输速率下工作正常。
4 结 语
本文采用目前使用最为广泛的EZ-USB FX2LP 芯片,给出了基于USB 数据采集系统的设计。该系统充分表现了USB 接口传输数据量大,传输速度快的特点,非常的适合大批量数据实时的传输场合,尤其适合数据采集系统和主机的通信,能够实时的处理采集到的数据。这克服了以往数据采集速度慢,采集数量少,接口复杂等特点,实现了数据采集的高速率、多通道。系统进行实测实验表明,在CY7C68013A设定为16.7 Mb/s的传输速率下,系统工作正常。
参考文献
[1]罗光明,张春熹,马宗峰,等.分布式光纤安防系统传感和定位技术研究[J].压电与声光,2009,33(3):327-329.
[2]朱莉,苏剑彼.基于USB通信的DSP图像处理系统[J].计算机工程,2004,30(15):181-183.
[3]罗光明,张春熹,马迎建,等.光纤振动传感器的信号检测电路设计[J].电子测量技术,2008,31(2):173-175.
[4]Analog Devices.AD7356 datasheet[EB/OL].[2008-11-28].http://www.analog.com.
[5]Xilinx.Virtex-4系列概述[EB/OL].http://www.xilinx.com/cn,2007.
[6]安荣,任勇峰,李圣昆.基于FPGA和USB 2.0的数据采集系统[J].仪表技术与传感器,2009(3):49-51.
[7]刘振波,熊庆国,唐明涛.FPGA和EZ_USB FX2在采集图像数据中的应用[J].现代电子技术,2009,32(9):80-82.
[8]王红凯.基于CY7C68013A的USB接口系统设计[J].计算机应用,2008(1):77-79.
[9]Cypress.EZ-USB FX2 USB microcontroller[EB/OL].[2007-01-16].http://www.cypress.com.
USB通信 第7篇
Android作为一种基于开源Linux的智能手机操作系统, 广泛应用于手机、平板电脑等移动设备中。在各种Android设备提供的接口中, USB接口是常见接口, 该接口的作用是为Android设备充电并通过PC端的驱动程序实现Android设备与PC的交互。如何拓展Android设备的USB接口功能是当前的研究热点之一。针对该问题, 本文介绍了一种基于AOA协议实现Android设备USB通信的方案, 并通过Android手机控制步进电机的案例给出了方案的实现方法。
1 Android USB通信模式
Android系统支持多种USB外围设备。根据Android设备在USB通信中充当的角色, 可以将Android USB通信分为主机模式 (Host Mode) 和配件模式 (Accessory Mode) [1]两种模式。
1.1 主机模式
主机模式是指Android设备充当USB主机并为总线供电。此模式下, Android设备需支持USB主机功能或OTG功能, 此时Android设备的USB主机称为USB嵌入式主机EH (Embedded Host) [2]。与PC上的USB主机相比, EH设备可能无法为连接到其总线上的未识别外围设备加载驱动程序, 因此它们对其目标外围设备列表TPL (Target Peripheral List) 进行了定义[3]。这些外围USB设备大部分为HID设备 (Human Interface Device) 、BOMS设备 (Bulk Only Mass Storage, 如U盘) 和CDC设备 (Communication Device Class, USB通信设备类, 如打印机) , 其驱动程序已存在于Android平台的系统中 (Linux Kernel) , 因此Android设备可以与其直接通信。
主机模式示意图如图1所示。
1.2 配件模式
配件模式是指Android设备充当USB从机, 外部设备充当主机并为总线供电。此模式下, 外部USB设备称为Android配件。该模式为不具备主机功能的Android设备提供与USB设备交互的能力。Android设备和Android配件都必须支持AOA协议。不支持AOA协议的设备可以通过Android配件开发板 (ADK板) 与Android设备连接, 成为Android设备的间接配件。
配件模式示意图如图2所示。
本文介绍的基于AOA协议的Android设备USB通信方案即采用配件模式。主机模式和配件模式在Android 3.1 (API level 12) 及更高的平台中直接支持。配件模式作为一个附加库也被Android 2.3.4 (API level 10) 支持。设备厂商可以选择是否在设备的Linux系统镜像中包含附加库。对主机和配件模式的支持最终取决于设备的硬件, 而不是Android平台的等级 (软件) 。
1.3 Android配件、ADK及AOA协议
Android配件是指遵循AOA协议的硬件, 是Android配件模式中的概念。从硬件角度讲, Android配件具有实现USB EH功能和AOA协议的微处理器以及包括USB接口在内的输入/输出接口。Android配件必须与Android平台一起工作。
ADK是开发Android配件的参考开发包, 该开发包基于Arduino公司的开源电子成型平台[4]。ADK开发包包括Android配件硬件设计文档、Android配件固件源码、Android设备程序源码。
AOA协议是Android设备与Android配件之间进行USB通信需遵循的连接协议, 该协议规定了Android配件如何检测Android设备并与其建立通信。AOA协议规定配件需具备以下4项功能[5]:
(1) 侦听自身的USB接口, 等待与其连接的Android设备。
(2) 检测Android设备是否支持AOA协议。
(3) 如果需要, 启动Android设备的USB配件模式。
(4) 与Android设备建立USB通信。
2 USB配件模式开发
Android配件模式开发需要在Android设备端和Android配件端分别进行开发。
2.1 Android设备端开发
Android设备端需进行以下两项工作:
(1) 确保设备支持AOA协议。设备对AOA协议是否支持由设备硬件和Android系统版本决定。
(2) 调用ADK中的API开发USB应用程序。
ADK中与USB配件模式相关的两个类是Usb Manager和Usb Accessory。Usb Manager用于枚举连接的USB配件并与其通信, Usb Accessory代表Android配件并包含获取配件描述信息的方法。
在编写程序前, 需要为Android工程做以下设置工作[6]:
(1) 配置Android Mainfest文件, 声明使用配件模式, 指定最低SDK版本, 并设置配件过滤意图。
(2) 配置accessory_filter.xml文件。accessory_filter.xml文件用于描述希望Android设备检测的USB配件的描述信息, 包含manufacturer、model、version 3个属性。在Android配件的固件程序中, 同样包含以上3个属性值。根据AOA协议, 当Android配件连接到Android设备上时, 配件会发送该属性值到Android设备。Android程序将唯一响应与其accessory_filter.xml中指定的属性值匹配的Android配件。
Android设备端程序开发的流程如下:
(1) 发现配件并过滤。
(2) 获取与配件通信的权限。通过广播接收器 (Broadcast Receiver) 的方式以弹出授权对话框的形式询问用户是否允许与Android配件通信。
(3) 开始与配件通信。创建文件输入输出流代表USB批量传输端点, 通过独立线程以流传输的方式实现USB通信。
(4) 终止与配件通信。通过广播接收器侦听USB配件与Android设备的断开操作, 当事件发生时, 关闭文件输入/输出流。
2.2 Android配件端开发
Android配件端需进行以下两项工作:
(1) 根据ADK中的硬件设计文档设计具有USB主控制器的硬件电路, 并支持USB协议。
(2) 将AOA协议以固件代码的形式下载至Android配件的主芯片中。
目前, 已有多家公司为Android设备的配件模式开发提供专门的ADK板, ADK板将AOA协议以程序的方式烧写至芯片中, ADK板也即Android配件。目前常见的ADK板有Arduino的Arduino Mega ADK板、Spark Fun的IOIO板, 此外还有DIY Drones、Microchip、RT Corp、Seeed Studio、Troido等公司生产的ADK板。采用ADK板将可节省Android配件端的开发时间。
3 系统设计
3.1 总体设计
构建的系统框图如图3所示。
采用的ADK板是由英国飞特蒂亚FTDI (Future Technology Devices International Ltd.) 公司生产的Android平台USB主控模块 (USB Android Host Module) [7], 型号为UMFT311EV, 于2012年7月31日推出。UMFT311EV板具有USB主控功能和USB接口桥接功能, 其特性如下:
(1) 采用USB Android主控芯片FT311D, 单芯片内集成USB协议。
(2) 兼容USB 2.0全速模式 (最大传输速率12 Mb/s, 即1.5 MB/s, 最大输出电流500 m A) 。
(3) 6种接口类型, 即GPIO (7路) 、UART、PWM (4路) 、I2C Master、SPI Master、SPI Slave。
(4) 6种接口只能单一工作, 通过跳线帽和3个接口类型选择引脚选择接口类型。
UMFT311EV板支持AOA协议, 作为Android配件无需用户做配件端的开发, 而且为Android设备端的程序开发提供Java驱动包。因此采用UMFT311EV板能够实现Android手机、平板与其他设备的通信, 进行设备控制和数据采集, 并能与现有系统快速集成, 降低开发难度和开发时间。
在此, 以Android手机小米MI2和步进电机28BYJ48为例, 通过UMFT311EV板的4路GPIO口实现Android手机USB控制步进电机。
3.2 软件设计
在设计Android手机端软件时, 采用FTDI公司为Android平台提供的驱动包。根据该驱动包, 架构如图4所示的应用程序。
FT311驱动层提供驱动UMFT311EV板上接口的方法和实现Android应用程序与UMFT311EV板USB通信的方法。该层为用户层提供封装的方法, 为用户开发程序屏蔽底层编程细节。用户层通过调用FT311驱动层的方法实现对UMFT311EV板上接口的控制。
本实验编程采用FT311驱动层提供的配置GPIO、读GPIO、写GPIO、重置GPIO 4个方法实现对步进电机的控制, 程序流程如图5所示。
4 系统测试
本设计中将Android手机作为脉冲信号源和脉冲分配器, 通过软件编程为步进电机提供脉冲信号, 并通过驱动芯片ULN2003驱动步进电机。系统测试过程如下:
(1) 用跳线帽设置ADK板的接口类型为GPIO, 将步进电机与其驱动板连接, 驱动板与ADK板的GPIO口连接, 并给ADK板上电。
(2) 将软件安装至手机上, 然后通过USB线将ADK板与手机连接。
(3) 连接后, 手机将弹出授权对话框, 提示用户打开 (2) 中安装的软件。
(4) 进入软件界面后, 点击“设定输出”按钮, 设定GPIO口的数据传输方向;点击“启动”、“停止”、“正转”、“反转”, 拖动速度调节滑块, 可实现对电机的控制。
本文介绍了一种基于AOA协议实现Android设备USB通信的方案。该方案利用ADK开发板UMFT311EV实现外围设备与Android设备的USB连接, 通过Android USB配件模式编程实现了Android设备对外围设备的控制。实际测试表明, 该方案设计简单, 能够实现Android设备对外设的控制。
参考文献
[1]Google.USB host and accessory[EB/OL].[2013-03-02].http://developer.android.com/guide/topics/connectivity/usb/index.html.
[2]USB.USB On-The-Go and embedded host[EB/OL].[2013-03-02].http://www.usb.org/developers/onthego.
[3]HARMON D.哪种USB接口适合您的应用[J].今日电子, 2013 (2) :29-31.
[4]Google.Accessory development kit 2011 guide[EB/OL].[2013-03-02].http://developer.android.com/tools/adk/adk.html.
[5]Google.Android open accessory protocol 1.0[EB/OL].[2013-03-02].http://source.android.com/tech/accessories/aoap/aoa.html.
[6]Google.USB accessory[EB/OL].[2013-03-02].http://developer.android.com/guide/topics/connectivity/usb/accessory.html.
USB通信 第8篇
关键词:Android,USB,串口
一、总体设计
安卓操作系统,是谷歌公司于2007年11月在全球正式发布的最新智能手机软件开发平台。该系统内核心模块全部来自linux技术,整个系统的与以前的所有手机系统不同之处在于它是一个全新并且全部开放式的开发方式,直至今天,安卓系统俨然已是全世界应用最广、用户最多、最受手机应用开发商推崇的智能系统之首。随着智能家居、物联网的飞速发展,目前使用智能手机来实现实时了解家居信息,跟踪了解信息动态的需求越来越大。尤其是要实现多个通信接口之间的信息通联成为拓展应用空间、延伸应用领域的基本途径和手段。本文提出了一种基于安卓开发平台,实现usb接口与串口之间通信转换的硬件连接方式,特别是在现代工业以及智能家居控领域,usb接口、RS485、RS232等接口最为普遍,由于这些接口的发展历史较为悠久,目前绝大部分领域都在普遍应用,如:常用的程序烧写接口、机械类控制系统、云台操作系统等等,都将此类接口用于必要的通讯使用。
二、硬件设计
系统的硬件部分一共分为两个部分,一个是实现系统的主要控制芯片,另外一个是实现USB和串口转换电路。
2.1主控芯片选择
在本设计中,我们把主控芯片定为韩国Samsung公司生产的S5P4418,(基于Cortex-A9的微处理器芯片)。整个芯片多达180个管脚,它采取“邮票孔”的核心板和底板相结合的设计方式,并且核心板扩展性很强,总体来看有一下几个特点:1.工作稳定可靠,采用8层沉金PCB工艺设计,电气特性和抗干扰性能较好。2.可扩展性好,核心板板载了PMU,带库仑计的充电管理,可以广泛应用于MID,POS,PDA,PND,智能家居,手机,车机,学习机,游戏机以及其他各种工控领域。3.运行速度快,其整体运行速度最高可达到1.4GHZ,能够满足大多工业控制上的需求。4.设计集成度高,在电平上,S5P4418为3.3V(GPIO),而与以往的1.8V相比,更便于客户设计使用。
2.2接口转换电路
转换电路设计采用的是FTDI公司生产的FT232RL作为主要接口转换芯片,此芯片可以实现USB到串行UART接口的转换,甚至可转换到同步、异步Bit-Bang接口模式。FTDI公司提供各种操作系统(os)下的驱动程序,电路设计容易上手,内部整合了上电复位电路,在芯片内部自身能产生时钟,不用外挂晶振,而且电源去耦RC电路在芯片内部集成,操作使用方便;整合了电平转换器,其输入/输出电平在2.8V到5V范围之内,整体兼容性较好;此外,输入/输出引脚驱动能力强,能够驱动较长数据线路甚至可驱动多个设备。
三、系统软件实现
在安卓操作系统上研发的大多应用程序,基本上是使用java语言实现的,而要在本设计中使用C或是C++来实现,就必须采用NDK。NDK的全称为Native Development Kit。这是工具集,主要用途是集成了安卓的交叉编译环境,为并提供了一套比较方便的makefile,主要有两个优点:一是合理的使用现有代码。二是提高程序的执行效率。需要注意的是,在使用NDK前,我们必须先安装SDK。此外,在Windows环境下研发,则需要使用cygwin(Win环境下linux模拟器)
安卓NDK开发一般有以下四个步骤:一是实现接口设计;二是采用C或者C++实现本地方法;三是进一步生成动态链接库;四是把动态链接库拷贝到java工程中,直接生成apk的文件。其中需要注意的是:在创建一个NDK工程中,必须在这个文件夹下同时建立名为src和jni的2个目录,其中src作为调用c库的java接口文件,而jni则是用来保存c文件。紧接着再创建文件名为jni/serial Port.c,主要用途是实现串口的关闭跟打开。
结束语:本文提出一种基于安卓平台的USB接口与串口通信的设计,在系统硬件设计上提出了方案,在软件设计中指出了注意事项以及方式方法,由于版面原因,未一一列出开发程序,总体来看,本设计能够为以后开发人员实现通信接口转换有一定现实指导意义。
参考文献
[1]杨丰盛.Android应用开发揭秘[M]北京:机械工业出版社.2010:484







