如何修改usb cdc成为自定义usb bulk批量传输设备

如何修改usb cdc成为自定义usb bulk批量传输设备

ID:34085519

大小:531.43 KB

页数:9页

时间:2019-03-03

如何修改usb cdc成为自定义usb bulk批量传输设备_第1页
如何修改usb cdc成为自定义usb bulk批量传输设备_第2页
如何修改usb cdc成为自定义usb bulk批量传输设备_第3页
如何修改usb cdc成为自定义usb bulk批量传输设备_第4页
如何修改usb cdc成为自定义usb bulk批量传输设备_第5页
资源描述:

《如何修改usb cdc成为自定义usb bulk批量传输设备》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、如何实现自定义USBBulk批量传输设备厂商自定义设备的开发除了要完成设备硬件以及固件程序开发外,还需要开发操作系统端的设备驱动程序,还要开发设备应用程序。厂商自定义USB设备的端点可以自由地选择采用哪种传输方式(controltransaction控制传输、bulktransaction批量传输、interrupttransaction中断传输、isochronoustransfer实时传输),当然控制端点只能用控制传输。标准设备类可能只支持除了控制端点外的其中一种传输方式,比如前面的HID实例,除了控制端点外,只支持中断传输,而由于中

2、断传输有其固有特点,有时并不能满足应用要求,如传输速率方面,由于决定因素在于中断时间,但中断时间最快是1ms,而批量传输可以随时发生(受带宽限制),理论上传输速率可以比中断传输快。FreescaleUSBStack4.1.1协议栈(http://www.freescale.com/usb)已经提供了标准的设备类驱动。为了实现自定义的bulk批量传输设备,我们可以参考现有的CDC通信设备类,在CDC的源代码基础上进行修改,快速实现自定义USBBulk批量传输设备。1.修改设备的PID和VID对于不同产品需要不同的PID和VID,可用通过修改

3、设备描述符中的PID和VID字段。修改文件usb_descriptor.c的设备描述符:constuint8Device_Descriptor[18]={0x12,//bLength域,描述符的长度:18字节0x01,//bDescriptorType域,描述符类型:0x01表示本描述符为设备描述符)0x00,0x02,//bcdUSB域,USB规范版本号(采用BCD码):2.00xFF,//bDeviceClass域,设备类代码,0xFF为自定义设备类0x00,//bDeviceSubClass域,设备子类代码0x00,//bDevic

4、eProtocol域,设备协议代码(0x00表示不使用任何设备类协议)0x20,//bMaxPacketSize0域,端点0支持最大数据包的长度:32字节0xA2,0x15,//idVendor域,供应商ID(VID)0x0F,0xA5,//idProduct域,产品ID(PID)0x00,0x00,//bcdDevice域,设备版本号(采用BCD码)0x01,//iManufacturer域,供应商的字符串描述符索引:10x02,//iProduct域,产品的字符串描述符索引:20x03,//iSerialNumber域,设备序号的字符

5、串描述符索引:30x01//bNumConfigurations域,该USB设备支持的配置数目:1个};2.修改端点描述符端点是设备与主机之间进行数据传输的逻辑接口,除配置使用的端点0(控制端点,一般一个设备只有一个控制端点)为双向端口外,其它均为单向。端点描述符描述了数据的传输类型、传输方向、数据包大小和端点号(也可称为端点地址)等。除了描述符中描述的端点外,每个设备必须要有一个默认的控制型端点,地址为0,它的数据传输为双向,而且没有专门的描述符,只是在设备描述符中定义了它的最大包长度。主机通过此端点向设备发送命令,获得设备的各种描述符

6、的信息,并通过它来配置设备。/*structurecontainingdetailsofalltheendpointsusedbythisdevice*/USB_EP_STRUCTep[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},{D

7、IC_BULK_OUT_ENDPOINT,USB_BULK_PIPE,USB_RECV,DIC_BULK_OUT_ENDP_PACKET_SIZE}};3.修改字符串描述符字符串描述符是一种可选的USB标准描述符,描述了如制商、设备名称或序列号等信息。如果一个设备无字符串描述符,则其它描述符中与字符串有关的索引值都必须为0。字符串使用的是Unicode编码。uint8_tUSB_STR_2[USB_STR_2_SIZE+USB_STR_DESC_SIZE]={sizeof(USB_STR_2),USB_STRING_DESCRIPTOR,

8、'B',0,'U',0,'L',0,'K',0,'',0,'T',0,'R',0,'A',0,'N',0,'S',0,'A',0,'C',0,'T',0,'I',0,'O',0,'N',0};

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。