- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STM32自定义USB设备开发详细流程讲解及全套资料源码下载(基 libusb)
一、前言
USB 的用途就不多说了,下面的内容主要就是讲解如何利用ST提供的USB驱动库和libusb上位机驱动库实现
一个USB数据传输功能,为了降低开发难度,我们仅仅讲解Bulk传输模式,当然这也是用得比较多的传输模式。
二、开发流程
1. 完成STM32单片机端的USB程序;
2. 利用linusb 自带的inf-wizard工具生成USB驱动;
3. 基于libusb编写USB通信程序;
4. 测试PC和单片机的数据通信。
三、STM32程序编写
1. 完成描述符的修改,修改后的描述符如下 (在usb_desc.c文件中)。配置描述符就包含了端点描述符,我们
用了4个端点,两个BULK-OUT端点,两个BULK-IN端点。
A. 设备描述符
01 const uint8_t CustomHID_DeviceDescriptor[CUSTOMHID_SIZ_DEVICE_DESC] =
02 {
03 0x12, /*bLength */
04 USB_DEVICE_DESCRIPTOR_TYPE, /*bDescriptorType*/
05 0x00, /*bcdUSB */
06 0x02,
07 0x00, /*bDeviceClass*/
08 0x00, /*bDeviceSubClass*/
09 0x00, /*bDeviceProtocol*/
10 0x40, /*bMaxPacketSize40*/
11 LOBYTE(USBD_VID), /*idVendor*/
12 HIBYTE(USBD_VID), /*idVendor*/
13 LOBYTE(USBD_PID), /*idVendor*/
14 HIBYTE(USBD_PID), /*idVendor*/
15 0x00, /*bcdDevice rel. 2.00*/
16 0x02,
17 1, /*Inde of string descriptor describing manufacturer */
18 2, /*Inde of string descriptor describing product*/
19 3, /*Inde of string descriptor describing the device serial number */
20 0x01 /*bNumConfigurations*/
21 }; /* CustomHID_DeviceDescriptor */
B. 配置描述符
01 const uint8_t CustomHID_ConfigDescriptor[CUSTOMHID_SIZ_CONFIG_DESC] =
02 {
03 0x09, /* bLength: Configuation Descriptor size */
04 USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */
05 CUSTOMHID_SIZ_CONFIG_DESC,
06 /* wTotalLength: Bytes returned */
07 0x00,
08 0x01, /* bNumInterfaces: 1 interface */
09 0x01, /* bConfigurationValue
文档评论(0)