- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何实现自定义USB Bulk 批量传输设备
厂商自定义设备的开发除了要完成设备硬件以及固件程序开发外,还需要开发操作系统端
的设备驱动程序,还要开发设备应用程序。
厂商自定义USB 设备的端点可以自由地选择采用哪种传输方式(control transaction 控制传
输、bulk transaction 批量传输、interrupt transaction 中断传输、isochronous transfer 实时传
输),当然控制端点只能用控制传输。标准设备类可能只支持除了控制端点外的其中一种
传输方式,比如前面的HID 实例,除了控制端点外,只支持中断传输,而由于中断传输有
其固有特点,有时并不能满足应用要求,如传输速率方面,由于决定因素在于中断时间,
但中断时间最快是1ms,而批量传输可以随时发生(受带宽限制),理论上传输速率可以
比中断传输快。
Freescale USB Stack 4.1.1 协议栈(/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
}
您可能关注的文档
最近下载
- 项目一 任务三 认识餐饮设备(课件)《餐饮服务与管理》(高教版第二版)同步课堂.pptx
- 16S122图集—水加热器选用及安装.pdf
- 第12课《短文二篇——记承天寺夜游》课件++2025-2026学年八年级语文统编版上册.pptx VIP
- 《中国心理学会临床咨询心理学工作伦理守则》考试题库及答案解析(共200题).docx VIP
- 《抗病毒药和抗寄生虫药》课件.ppt
- 翼科ES500系列专用伺服驱动器用户手册.pdf
- 高等职业技术学院辅导员工作手册.pdf VIP
- JBT 7361-2007 滚动轴承 零件硬度试验方法.docx VIP
- 小学生必背古诗75首80首!家长收藏必备,附带文档打印版.pdf VIP
- 入党积极分子培养考察表1.doc VIP
文档评论(0)