当前位置:首页 > 通信技术 > 通信技术
[导读] 传统的USB设备驱动程序编写异常复杂,程序员往往很难入手。Silicon Laboratories公司提供的USBXpress开发包大大简化了USB通信的应用和相关驱动程序的开发,只要做好开发前的准备工作,USBXpress开发包完全可以实

    传统的USB设备驱动程序编写异常复杂,程序员往往很难入手。Silicon Laboratories公司提供的USBXpress开发包大大简化了USB通信的应用和相关驱动程序的开发,只要做好开发前的准备工作,USBXpress开发包完全可以实现USB通信的所有功能。本文介绍USB通信开发的全过程,以及在开发过程中需要注意的事项。(主要针对设备端USB通信进行讲解)

1 USBXpress简介
    由Silicon Laboratories公司推出的USBXpress开发包涵盖了主机端和设备端的所有函数功能,支持C8051F32X、C8051F34X和CP210X设备的USB通信。USBXpress开发包中包含主机端的设备驱动、主机端设备驱动安装程序、主机端的动态链接库(DLL)和设备端的函数库文件。
    设备端的函数库文件提供了支持C805IF32X和C8051F34X设备USB通信的API函数,这些函数可以在Keil uVision3编译环境下被编译通过。编译前需要在工程中添加相关的文件,详见下文。
    设备端函数库中主要的API函数如下:
    USB Clock Start()         -初始化USB时钟
    USB Init()                -USB接口初始化
    Block Write()             -向Buffer中写数据
    Block Read()              -从Buffer中读数据
    Get Interrupt Source()    -获取API函数的中断标志值
    USB Int Enable()          -允许API函数中断
    USB Int Disable()         -不允许API函数中断
    USB Disable()             -不允许USB接口通信
    USB Suspend()             -延缓USB中断

2 设备端的电路设计
    (1)USB插座引脚识别
    在没备端电路设计的过程中,对USB插座引脚必须对应连接,否则将直接影响到与主机端的通信。USB插座一般分为A型插座和B型插座,如图1所示,其引脚说明如表1所列。

             

        (2)基于C8051F340的USB通信电路
    基于C8051F340的USB通信电路如图2所示。

    (3)USB通信电路说明
    ①电路中的D-和D+不应连接其他负载电路,因为任何负载将影响数据线路上的电流,从而影响数据传输,直接后果将导致主机端无法识别设备。
    ②JTAG口线中的VDD引脚为+3 V输入,输入电压过大将损坏器件。USB插口引脚与C8051F340引脚应对应连接,不要有误。
    ③C8051F340的VBUS、REGIN和VDD引脚的连接有多种方式(稳压器配置),详见表2。

3 设备端的驱动程序设计
    在Keil uVision3编译环境下,用USBXpress 工具包中的API函数设计设备端的USB通信,前提是在工程中添加C8051F340.h、USB_API.h和USBX_F34X.LIB文件(USBXpress工具包提供相关文件)。
    下面介绍设备端USB的数据传输。在进行数据传输之前,必须对USB时钟和USB接口初始化:

    (1)USB接口初始化参数定义
    ①USB_VID,16位二进制卖主ID号,一般用SiliconLab的ID号(OXl0C4)。
    ②USB_PID,16位二进制产品ID号,一般USBXpress规定为OXEA61。
    ③USB_MfrStr,BYTE型指针,指向描述厂商的字符串,不能为空。
若定义BYTE USB MfrStr[]={},数组中第1个数说明数组中元素的个数(元素个数=字符串元素个数*2+2),第2个数说明字符串描述符的类型,0起间隔作用。以下的字符串定义同上。
    ④USB_ProductStr,BYTE型指针,指向描述产品的字符串,不能为空。
    ⑤USB_SerialStr,BYTE型指针,指向描述序列号的字符串,不能为空。
    ⑥USB_MaxPower,BYTE型,说明总线最大电流,极限为500 mA。若取值0x32,则表示最大电流为100 mA。
    ⑦USB_PwAttributes,BYTE型,用于供电配置。如果设备自己供电第6位置“1”,若为总线供电则为“O”。如果设备提供弱上拉作用,第5位置“l”,位0~4必须为“O”,位7必须为“1”。
    ⑧USB_bcdDevice,无符号int型,用BCD码表示设备的版本号,如2.13版为Ox0213。
    (2)USB中断函数
    设备端USB通信中API函数的功能,都在一个中断模块里面实现,为此必须提供一个中断向量。其中,0x008B(Interrupt 17)是F34X设备的中断向量。在main函数中,只有允许了USB中断(调用USB Int Enable函数),才能进入中断。一旦进入中断服务程序,必须先获得中断标志(调用Get_Interrupt_Source函数,返回BYTE型中断标志),后续操作根据获得的中断标志值与工具包自定义的中断标志值判断执行。自定义的中断标志值主要有:USB_RESET(复位中断)、TX_COMPLETE(发送完成中断)、RX_COMPLETE(允许接收中断)、DEVICEOPEN(设备实例在主机端打开)、DEVICE SUSPEND(延缓信号)等。
    中断函数如下:

    在main函数中进行初始化之后,若中断允许,通过函数Block_write来发送数据,发送数据的字节数不能超过4096。发送结束后将触发中断,从而进入中断服务程序进行判断操作。如果主机端向设备端的Buffer写入数据完成,也将触发中断,判断执行Block_Read操作将Buffer中的数据存入指定的存储单元。
    发送数据的函数原型为:Block_write(数据存储单元首地址,发送的字节数)。
    (3)主机端USB应用程序设计
    在VC++6.O编译环境下开发主机端的USB通信应用程序,需要注意在编译之前向工程中添加开发包提供的SiUSBXp.dll、SiUSBXp.h和SiUSBXp.lib文件。
    为了能让主机端识别USB设备并与之通信,在运行应用程序之前,要安装主机端的驱动程序(开发包已提供)。安装了驱动程序,主机端才能识别USB设备,在设备管理器中可以找到USB设备的相关描述信息。
    对USB设备的描述信息,除了可以修改设备端发送过来的描述符之外,还可以修改在主机端驱动安装目录下*.inf文件中的信息。

结语
    本文详细介绍了USB通信的开发过程、电路设计和设备端的驱动设计,简单说明了USBXpress开发包在主机端应用的条件设置。所有设计思路和方法都通过了实验验证,可以直接用于工程项目开发。通过此方法,程序员可以很容易地进行一系列USB通信应用的设计和编程。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

说到通信设计院,相信很多人都听说过。平常我们在新闻报道中,经常会看到各家设计院的名字出现,例如联通设计院、中移设计院,等等。最近各地校招启动,有一些同学收到了设计院的offer,于是问我,设计院到底是干啥的?今天,我就给...

关键字: 通信设计

  当前,软件定义网络(SDN)成为业界一个时髦的话题,SDN技术及其可能带来的影响受到了学术界和产业界的高度重视,同时也存在着对SDN不同的理解和认识。近日,从一知名的社交新闻站点&mdash

关键字: sdn 通信设计

linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心

关键字: 进程 通信设计 LINUX操作系统 通信

引言 目前,由北京航空航天大学与冀东发展集团有限责任公司合作研发的科氏粉料流量测控系统(以下简称“测控系统”)已经成功应用到工业现场,运行状况良好,测量精度优于±0.5%。...

关键字: 测控系统 系统设计 USB通信 BSP

以合众达公司的SEED—DIM138开发板作为硬件开发平台,利用SYSLINK驱动设计了一种可用于DSP和ARM之间通信的握手机制。ARM端运行Linux操作系统,进行人机交互;DSP端运行SYSBIOS操作...

关键字: 双核 通信设计 OMAPL138 LINK

  l 引言  随着计算机技术和测控技术的不断发展,在以单片机为核心的数据采集系统中,需要实现单片机和计算机之间的数据交换,并以此来发挥单片机和计算机各自的长处,

关键字: 串行通信 RS485 通信设计 C8051F020单片机

摘要:为了实现对某型机栽武器测控的需求,利用C8051F340单片机和HS3282芯片设计了ARINC429总线和计算机RS-232总线的接口转换电路,通过C语言设计了单片机固件程序,实现了串并数据的转换与传输以及数据传...

关键字: C8051F340 系统设计 机载 测控系统

摘要:为了实现对CAN总线和RS-232串口双向通信需求,提出了一种基于C8051F040单片机的数据通信方案,并完成系统设计。分析了CAN总线和RS-232串口的通信特点,介绍了单片机硬件,并对软件的设计思路与流程做了...

关键字: CAN总线 RS-232 通信设计 C8051F040

摘要:CPLD可编程技术具有功能集成度高、设计灵活、开发周期短、成本低等特点。介绍基于ATMEL 公司的CPLD芯片ATF1508AS设计的串并转换和高速USB及其在高速高精度数据采集系统中的应用。关键词:CPLD 串并...

关键字: 串并转换 CPLD 通信设计 USB通信

北京航空航天大学 任雷 林岩 张沫阳引 言串行外围设备接口(Serial Peripheral InteRFace,SPI)总线技术是Motorola公司推出的一种高速同步串行输入/输出接口,近年来广泛应用于外部移位寄...

关键字: 数据通信 CPLD 通信设计 ADS1

通信技术

120646 篇文章

关注

发布文章

编辑精选

技术子站

关闭