C8051F340的USBXpress开发包USB通信设计

[09-13 16:55:32]   来源:http://www.88dzw.com  接口定义   阅读:8254

文章摘要:②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,则

C8051F340的USBXpress开发包USB通信设计,标签:接口技术,微机原理与接口技术,http://www.88dzw.com

  ②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通信应用的设计和编程。


上一页  [1] [2] 


Tag:接口定义接口技术,微机原理与接口技术接口定义
分类导航
最新更新
热门排行