没有合适的资源?快使用搜索试试~ 我知道了~
STM32自定义USB设备开发详细流程讲解
2星 需积分: 45 138 下载量 110 浏览量
2017-03-31
08:39:22
上传
评论 4
收藏 729KB PDF 举报
温馨提示
1. 完成 STM32 单片机端的 USB 程序; 2. 利用 linusb 自带的 inf-wizard 工具生成 USB 驱动; 3. 基于 libusb 编写 USB 通信程序; 4. 测试 PC 和单片机的数据通信。
资源推荐
资源详情
资源评论
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
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
const uint8_t CustomHID_DeviceDescriptor[CUSTOMHID_SIZ_DEVICE_DESC] =
{
0x12, /*bLength */
USB_DEVICE_DESCRIPTOR_TYPE, /*bDescriptorType*/
0x00, /*bcdUSB */
0x02,
0x00, /*bDeviceClass*/
0x00, /*bDeviceSubClass*/
0x00, /*bDeviceProtocol*/
0x40, /*bMaxPacketSize40*/
LOBYTE(USBD_VID), /*idVendor*/
HIBYTE(USBD_VID), /*idVendor*/
LOBYTE(USBD_PID), /*idVendor*/
HIBYTE(USBD_PID), /*idVendor*/
0x00, /*bcdDevice rel. 2.00*/
0x02,
1, /*Index of string descriptor describing manufacturer */
2, /*Index of string descriptor describing product*/
3, /*Index of string descriptor describing the device serial number */
0x01 /*bNumConfigurations*/
}; /* CustomHID_DeviceDescriptor */
B. 配置描述符
01
02
03
04
05
06
07
08
09
10
const uint8_t CustomHID_ConfigDescriptor[CUSTOMHID_SIZ_CONFIG_DESC] =
{
0x09, /* bLength: Configuation Descriptor size */
USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */
CUSTOMHID_SIZ_CONFIG_DESC,
/* wTotalLength: Bytes returned */
0x00,
0x01, /* bNumInterfaces: 1 interface */
0x01, /* bConfigurationValue: Configuration value */
0x00, /* iConfiguration: Index of string descriptor describing the configuration*/
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
0xE0, /* bmAttributes: Bus powered */
/*Bus powered: 7th bit, Self Powered: 6th bit, Remote wakeup: 5th bit, reserved: 4..0 bits */
0xFA, /* MaxPower 500 mA: this current is used for detecting Vbus */
/************** Descriptor of Custom HID interface ****************/
/* 09 */
0x09, /* bLength: Interface Descriptor size */
USB_INTERFACE_DESCRIPTOR_TYPE,/* bDescriptorType: Interface descriptor type */
0x00, /* bInterfaceNumber: Number of Interface */
0x00, /* bAlternateSetting: Alternate setting */
0x04, /* bNumEndpoints */
0xDC, /* bInterfaceClass: Class code = 0DCH */
0xA0, /* bInterfaceSubClass : Subclass code = 0A0H */
0xB0, /* nInterfaceProtocol : Protocol code = 0B0H */
0, /* iInterface: Index of string descriptor */
/******************** endpoint descriptor ********************/
/* 18 */
0x07, /* endpoint descriptor length = 07H */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* endpoint descriptor type = 05H */
0x81, /* endpoint 1 IN */
0x02, /* bulk transfer = 02H */
0x40,0x00, /* endpoint max packet size = 0040H */
0x00, /* the value is invalid when bulk transfer */
0x07, /* endpoint descriptor length = 07H */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* endpoint descriptor type = 05H */
0x01, /* endpoint 1 OUT */
0x02, /* bulk transfer = 02H */
0x40,0x00, /* endpoint max packet size = 0040H */
0x00, /* the value is invalid when bulk transfer */
0x07, /* endpoint descriptor length = 07H */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* endpoint descriptor type = 05H */
0x82, /* endpoint 2 IN */
0x02, /* bulk transfer = 02H */
0x40,0x00, /* endpoint max packet size = 0040H */
0x00, /* the value is invalid when bulk transfer */
0x07, /* endpoint descriptor length = 07H */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* endpoint descriptor type = 05H */
0x02, /* endpoint 2 OUT */
0x02, /* bulk transfer = 02H */
0x40,0x00, /* endpoint max packet size = 0040H */
0x00, /* the value is invalid when bulk transfer */
}; /* CustomHID_ConfigDescriptor */
C. 其他的描述符
01
02
03
04
05
06
07
/* USB String Descriptors (optional) */
const uint8_t CustomHID_StringLangID[CUSTOMHID_SIZ_STRING_LANGID] =
{
CUSTOMHID_SIZ_STRING_LANGID,
USB_STRING_DESCRIPTOR_TYPE,
0x09,
0x04
剩余12页未读,继续阅读
资源评论
- zhengxiaoxiong2018-09-05不是我需要的,浪费积分
- wode8766093932017-08-01这东西只能呵呵
新手菜鸟
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功