云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 如何修改USBCDC成为自定义USBBulk批量传输设备(精)

如何修改USBCDC成为自定义USBBulk批量传输设备(精)

  • 62 次阅读
  • 3 次下载
  • 2026/4/23 19:53:19

如何实现自定义 USB Bulk批量传输设备

厂商自定义设备的开发除了要完成设备硬件以及固件程序开发外,还需要开发操作系统端 的设备驱动程序,还要开发设备应用程序。

厂商自定义 USB 设备的端点可以自由地选择采用哪种传输方式(control transaction控制传 输、 bulk transaction批量传输、 interrupt transaction中断传输、 isochronous transfer实时传 输,当然控制端点只能用控制传输。标准设备类可能只支持除了控制端点外的其中一种 传输方式,比如前面的 HID 实例,除了控制端点外,只支持中断传输,而由于中断传输有 其固有特点,有时并不能满足应用要求,如传输速率方面,由于决定因素在于中断时间, 但中断时间最快是 1ms ,而批量传输可以随时发生(受带宽限制,理论上传输速率可以 比中断传输快。

Freescale USB Stack 4.1.1协议栈 (http://www.freescale.com/usb已经提供了标准的设备类驱 动。为了实现自定义的 bulk 批量传输设备,我们可以参考现有的 CDC 通信设备类,在 CDC 的源代码基础上进行修改,快速实现自定义 USB Bulk批量传输设备。

1. 修改设备的 PID 和 VID

对于不同产品需要不同的 PID 和 VID ,可用通过修改设备描述符中的 PID 和 VID 字段。 修改文件 usb_descriptor.c的设备描述符:

const uint8 Device_Descriptor[18]= {

0x12, //bLength域,描述符的长度:18字节

0x01, //bDescriptorType域,描述符类型:0x01表示本描述符为设备描述符 0x00,0x02, //bcdUSB域, USB 规范版本号(采用 BCD 码:2.0

0xFF, //bDeviceClass域,设备类代码 ,0xFF 为自定义设备类

0x00, //bDeviceSubClass域,设备子类代码

0x00, //bDeviceProtocol域,设备协议代码(0x00表示不使用任何设备类协议 0x20, //bMaxPacketSize0域,端点 0支持最大数据包的长度:32字节

0xA2,0x15, //idVendor域,供应商 ID (VID 0x0F,0xA5, //idProduct域,产品 ID (PID

0x00,0x00, //bcdDevice域,设备版本号(采用 BCD 码 0x01, //iManufacturer域,供应商的字符串描述符索引:1 0x02, //iProduct域,产品的字符串描述符索引:2

0x03, //iSerialNumber域,设备序号的字符串描述符索引:3 0x01 //bNumConfigurations域,该 USB 设备支持的配置数目:1个 };

2. 修改端点描述符

端点是设备与主机之间进行数据传输的逻辑接口,除配置使用的端点 0(控制端点, 一般一个设备只有一个控制端点为双向端口外,其它均为单向。端点描述符描述了 数据的传输类型、传输方向、数据包大小和端点号(也可称为端点地址等。

除了描述符中描述的端点外,每个设备必须要有一个默认的控制型端点,地址为 0, 它的数据传输为双向,而且没有专门的描述符,只是在设备描述符中定义了它的最大 包长度。主机通过此端点向设备发送命令,获得设备的各种描述符的信息,并通过它 来配置设备。

/* structure containing details of all the endpoints used by this device */ USB_EP_STRUCT ep[CDC_DESC_ENDPOINT_COUNT] =

{ {

CIC_NOTIF_ENDPOINT, USB_INTERRUPT_PIPE, USB_SEND,

CIC_NOTIF_ENDP_PACKET_SIZE } , {

DIC_BULK_IN_ENDPOINT, USB_BULK_PIPE, USB_SEND,

DIC_BULK_IN_ENDP_PACKET_SIZE } , {

DIC_BULK_OUT_ENDPOINT, USB_BULK_PIPE, USB_RECV,

DIC_BULK_OUT_ENDP_PACKET_SIZE } };

3. 修改字符串描述符

字符串描述符是一种可选的 USB 标准描述符,描述了如制商、设备名称或序列号等信 息。如果一个设备无字符串描述符,则其它描述符中与字符串有关的索引值都必须为 0。字符串使用的是 Unicode 编码。

uint8_t USB_STR_2[USB_STR_2_SIZE+USB_STR_DESC_SIZE] = { sizeof(USB_STR_2,

USB_STRING_DESCRIPTOR, 'B',0, 'U',0, 'L',0, 'K',0, ' ',0, 'T',0, 'R',0, 'A',0, 'N',0, 'S',0,

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

如何实现自定义 USB Bulk批量传输设备 厂商自定义设备的开发除了要完成设备硬件以及固件程序开发外,还需要开发操作系统端 的设备驱动程序,还要开发设备应用程序。 厂商自定义 USB 设备的端点可以自由地选择采用哪种传输方式(control transaction控制传 输、 bulk transaction批量传输、 interrupt transaction中断传输、 isochronous transfer实时传 输,当然控制端点只能用控制传输。标准设备类可能只支持除了控制端点外的其中一种 传输方式,比如前面的 HID 实例,除了控制端点外,只支持中断传输,而由于中断传输有 其固有特点,有时并不能满足应用要求,如传输速率方面,由于决定因素在于中断时间, 但中断时间最快是 1ms ,而批量传输可以随时发生(受带宽限制,理论上传输速率可

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com