硬汉嵌入式论坛

 找回密码
 立即注册
楼主: eric2013
收起左侧

[USB] RL-USB教程开工制作,各种常用USB通信协议和上位机案例统统整出来,更新至第9章(2022-12-05)

  [复制链接]

22

主题

38

回帖

104

积分

初级会员

积分
104
发表于 2022-2-7 02:06:44 来自手机 | 显示全部楼层
下载不了,谁能帮帮忙?  谢谢了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
 楼主| 发表于 2022-2-7 09:32:44 | 显示全部楼层
nmgbtzyf 发表于 2022-2-7 02:06
下载不了,谁能帮帮忙?  谢谢了。

可以到论坛置顶帖相应网盘里面下载,如果这里下载不成功。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2022-7-28 16:03:09 | 显示全部楼层
新人来学习,资料是硬菜~ thanks very much.
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2022-8-18 09:21:52 | 显示全部楼层
最近想自己做一个DAPLINK,做出来只能用HID,不知道怎么弄winUSB,期待教程
回复

使用道具 举报

1

主题

20

回帖

23

积分

新手上路

积分
23
发表于 2022-8-19 09:43:37 | 显示全部楼层
硬汉大佬,强烈建议把USB的例程再做一些,前面的教程讲的是基础,后面应用才重要,网上不系统,研究起来都没有什么图绪
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2022-10-10 15:21:23 | 显示全部楼层
硬汉大佬,USB复合设备的例程有开源吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
 楼主| 发表于 2022-10-11 15:40:07 | 显示全部楼层
Ant2S 发表于 2022-10-10 15:21
硬汉大佬,USB复合设备的例程有开源吗?

还没更新到复合设备章节。
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2022-11-2 10:25:43 | 显示全部楼层
兄弟们,遇到这个报错咋解决 Error #603: 'Keil.MDK-Plus::USB:COREebug:6.16.0': component requires valid MDK-ARM Plus or MDK-ARM Professional license
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
 楼主| 发表于 2022-11-2 10:58:20 | 显示全部楼层
Hacker 发表于 2022-11-2 10:25
兄弟们,遇到这个报错咋解决 Error #603: 'Keil.MDK-Plus::USB:COREebug:6.16.0': component requires va ...

注册MDK PRO
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
 楼主| 发表于 2022-12-5 00:20:13 | 显示全部楼层
加入视频教程地址。
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2023-1-11 17:14:32 | 显示全部楼层
硬汉老兄能不能出一个USB HOST CDC驱动一些usb转串口(比如CP2102/CH340等)的demo?
回复

使用道具 举报

12

主题

217

回帖

253

积分

高级会员

积分
253
发表于 2023-1-12 13:10:11 | 显示全部楼层
把几张图补到描述符中去吧,第九章
image.png
在SETUP事务的数据里,表示了要访问的是什么:Device?Interface?Endpoint?
对于一个USB设备,它可以多种配置(Configuration)。比如4G上网卡就有2种配置:U盘、上网卡。第1次把4G上网卡插入电脑时,它是一个U盘,可以按照里面的程序。装好程序后,把它再次插入电脑,它就是一个上网卡。驱动程序可以选择让它工作于哪种配置,同一时间只能有一种配置。大多数的USB设备只有一种配置。
一个配置下,可以有多个接口(Interface),接口等同于功能(Function)。比如USB耳机有两个接口(功能):声音收发、按键控制。
一个接口,可能有多个设置(Setting),比如默认设置下它使用较低的带宽,可以选择其他设置以使用更高带宽。
一个接口,由一个或多个端点(Endpoint)组成。端点0属于整个设备的,端点0是双向的。接口还可以有其他端点,这些端点是单向的,要么是批量(Bulk)端点、要么是中断(Interrupt)端点、要么是同步(Isochronous)端点。

3. 描述符
怎么描述设备、配置、接口、端点?使用描述符(Descriptors),有设备描述符、配置描述符、接口描述符、端点描述符。所谓描述符,就是一些格式化的数据,用来描述信息。
一个USB设备,

只有一个设备描述符:用来表示设备的ID、它有多少个配置、它的端点0一次最大能传输多少字节数据
可能有多个配置描述符:用来表示它有多少个接口、供电方式、最大电流
一个配置描述符下面,可能有多个接口描述符:用来表示它是哪类接口、有几个设置(Setting)、有几个端点
一个接口描述符符下面,可能有多个端点描述符:用来表示端点号、方向(IN/OUT)、类型(批量/中断/同步)
还有一些字符串描述符(String descriptors),它用可读的文字来描述设备,是可选的。
————————————————
版权声明:本文为CSDN博主「田园诗人之园」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014100559/article/details/127328826

回复

使用道具 举报

12

主题

217

回帖

253

积分

高级会员

积分
253
发表于 2023-1-12 13:11:07 | 显示全部楼层
还有,报告描述符楼主也介绍下?
回复

使用道具 举报

12

主题

217

回帖

253

积分

高级会员

积分
253
发表于 2023-1-12 13:13:37 | 显示全部楼层
粘贴CSDN的数据,您别补了。抱歉,您写的挺全
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
 楼主| 发表于 2023-1-12 13:44:13 | 显示全部楼层
stringer 发表于 2023-1-11 17:14
硬汉老兄能不能出一个USB HOST CDC驱动一些usb转串口(比如CP2102/CH340等)的demo?

有安排。
回复

使用道具 举报

10

主题

253

回帖

288

积分

高级会员

积分
288
发表于 2023-1-12 13:57:29 | 显示全部楼层
其实CherryUSB协议栈也非常好用
回复

使用道具 举报

0

主题

19

回帖

19

积分

新手上路

码农

积分
19
发表于 2023-1-20 15:18:28 | 显示全部楼层
收藏学习,感谢分享
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2023-11-13 13:14:33 | 显示全部楼层
收藏学习,谢谢分享!目前正好想学学USB开发
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
QQ
发表于 2024-4-23 19:40:12 | 显示全部楼层
博主,串口数据如何显示到

的 图形界面上!???


是不是需要一个缓存
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
 楼主| 发表于 2024-4-24 07:18:49 | 显示全部楼层
USB驱动学习 发表于 2024-4-23 19:40
博主,串口数据如何显示到

的 图形界面上!???

串口数据的话,你可以直接搞个虚拟串口就行。
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2024-6-12 14:21:36 | 显示全部楼层
硬汉哥USB复合设备的例程最近有说法没得
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
 楼主| 发表于 2024-6-13 09:46:18 | 显示全部楼层
GXT 发表于 2024-6-12 14:21
硬汉哥USB复合设备的例程最近有说法没得

最近应该没时间更新。
回复

使用道具 举报

2

主题

23

回帖

29

积分

新手上路

积分
29
发表于 2024-7-16 08:42:27 | 显示全部楼层
tinyusb开源协议栈不香吗?也是方便移植,使用简单的。而且基本的类型都支持。
回复

使用道具 举报

2

主题

23

回帖

29

积分

新手上路

积分
29
发表于 2024-7-16 08:43:32 | 显示全部楼层
tinyusb协议栈,开源的,不是很香吗
回复

使用道具 举报

2

主题

23

回帖

29

积分

新手上路

积分
29
发表于 2024-7-16 08:44:23 | 显示全部楼层
tinyusb协议栈也是可以研究一下的,开源的。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
 楼主| 发表于 2024-7-16 08:44:40 | 显示全部楼层
guxiangguo 发表于 2024-7-16 08:42
tinyusb开源协议栈不香吗?也是方便移植,使用简单的。而且基本的类型都支持。

这个RL-USB已经开源免费,使用非常简单的,RTE一键创建

RTX5全家桶源码综合模板发布,含FreeRTOS内核版本,将其打造成直接面向实际项目应用的综合框架(2024-06-19)
https://www.armbbs.cn/forum.php? ... 4516&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

5

主题

39

回帖

54

积分

初级会员

积分
54
发表于 2024-8-30 19:40:55 | 显示全部楼层
大佬,MDK生成报错是怎么回事?请教下MDK版本需要Keil MDK Professional吗?我用的是MDK的社区版芯片用了F072,添加RL-USBS是总是提示图1

图1

图1
,点打开提示图2

图2

图2
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
 楼主| 发表于 2024-8-31 09:06:49 | 显示全部楼层
哲学家 发表于 2024-8-30 19:40
大佬,MDK生成报错是怎么回事?请教下MDK版本需要Keil MDK Professional吗?我用的是MDK的社区版芯片用了F0 ...

这个提示是需要你安装STM32CubeMX

回复

使用道具 举报

5

主题

39

回帖

54

积分

初级会员

积分
54
发表于 2024-9-1 13:19:20 | 显示全部楼层
eric2013 发表于 2024-8-31 09:06
这个提示是需要你安装STM32CubeMX

安装了6.1.2,但貌似mdk不能调用cubemx。大佬有时间能帮看看嘛

STM32F072C8T6.zip

1.13 MB, 下载次数: 2

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
 楼主| 发表于 2024-9-2 08:34:55 | 显示全部楼层
哲学家 发表于 2024-9-1 13:19
安装了6.1.2,但貌似mdk不能调用cubemx。大佬有时间能帮看看嘛

测试了下,可以

234.png
回复

使用道具 举报

5

主题

39

回帖

54

积分

初级会员

积分
54
发表于 2024-9-2 10:05:12 | 显示全部楼层
eric2013 发表于 2024-9-2 08:34
测试了下,可以

看着你的截图,心碎了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
 楼主| 发表于 2024-9-2 11:51:48 | 显示全部楼层
哲学家 发表于 2024-9-2 10:05
看着你的截图,心碎了

应该是测试环境有点问题。
回复

使用道具 举报

5

主题

39

回帖

54

积分

初级会员

积分
54
发表于 2024-9-22 21:05:30 | 显示全部楼层
eric2013 发表于 2024-9-2 11:51
应该是测试环境有点问题。

大佬,按你教程编译成功了。但F072芯片的工程配置描述符请求失败,不论是创建 HID Class 还是 Custom Class 总是无法获取配置描述符


使用用CubeMX生成的USB硬件初始化代码:
[C] 纯文本查看 复制代码
/* Includes ------------------------------------------------------------------*/
#include "usb.h"

PCD_HandleTypeDef hpcd_USB_FS;

/* USB init function */
void MX_USB_PCD_Init(void)
{
  hpcd_USB_FS.Instance = USB;
  hpcd_USB_FS.Init.dev_endpoints = 8;
  hpcd_USB_FS.Init.speed = PCD_SPEED_FULL;
  hpcd_USB_FS.Init.phy_itface = PCD_PHY_EMBEDDED;
  hpcd_USB_FS.Init.low_power_enable = DISABLE;
  hpcd_USB_FS.Init.lpm_enable = DISABLE;
  hpcd_USB_FS.Init.battery_charging_enable = DISABLE;
  if (HAL_PCD_Init(&hpcd_USB_FS) != HAL_OK)
  {
    Error_Handler();
  }
}

void HAL_PCD_MspInit(PCD_HandleTypeDef* pcdHandle)
{
  if(pcdHandle->Instance==USB)
  {
    /* USB clock enable */
    __HAL_RCC_USB_CLK_ENABLE();

    /* USB interrupt Init */
    HAL_NVIC_SetPriority(USB_IRQn, 0, 0);
    HAL_NVIC_EnableIRQ(USB_IRQn);
  }
}

void HAL_PCD_MspDeInit(PCD_HandleTypeDef* pcdHandle)
{
  if(pcdHandle->Instance==USB)
  {
    /* Peripheral clock disable */
    __HAL_RCC_USB_CLK_DISABLE();

    /* USB interrupt Deinit */
    HAL_NVIC_DisableIRQ(USB_IRQn);
  }
}

/**
  * @brief This function handles USB global interrupt / USB wake-up interrupt through EXTI line 18.
  */
void USB_IRQHandler(void)
{
  HAL_PCD_IRQHandler(&hpcd_USB_FS);
}



然后创建了1个线程,对USB进行初始化:

[C] 纯文本查看 复制代码
void app_usb (void *argument)
{
    (void)argument;
    
    MX_USB_PCD_Init();
    
    usb_state = USBD_Initialize (0);
    printf("usb_state-%d\n",usb_state);
    
    usb_state = USBD_Connect(0);
    printf("usb_state-%d\n",usb_state);
	
    while( USBD_Configured(0) != usbOK ) osDelay(10);
    
    for (;;) {
        //printf("app_usb\r\n");
        osDelay(1);
    }
}




USBD_Config_0.c 配置:


USBD_Config_HID_0.h 配置 :



是哪里配置不正确嘛?

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
 楼主| 发表于 2024-9-23 08:37:50 | 显示全部楼层
哲学家 发表于 2024-9-22 21:05
大佬,按你教程编译成功了。但F072芯片的工程配置描述符请求失败,不论是创建 HID Class 还是 Custom Cla ...

最关键的USB时钟配置,是48MHz不
回复

使用道具 举报

5

主题

39

回帖

54

积分

初级会员

积分
54
发表于 2024-9-23 15:09:16 | 显示全部楼层
eric2013 发表于 2024-9-23 08:37
最关键的USB时钟配置,是48MHz不


时钟没问题,用cubenmx的中间件hid可以枚举成功,大佬我把工程传上来吧


cubemx.7z (959.26 KB, 下载次数: 2)



回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
 楼主| 发表于 2024-9-24 09:43:38 | 显示全部楼层
哲学家 发表于 2024-9-23 15:09
时钟没问题,用cubenmx的中间件hid可以枚举成功,大佬我把工程传上来吧

帮你看了,没发现问题,MDK的软件包里面有个F0的例子,你对比下

23.png
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2025-1-3 13:26:07 | 显示全部楼层
可以在stm32cubeide上用吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
 楼主| 发表于 2025-1-4 06:46:32 | 显示全部楼层
zjygwx 发表于 2025-1-3 13:26
可以在stm32cubeide上用吗?

现在可以了,使用新版源码工程

RTX5全家桶源码综合模板发布V3.0,含FreeRTOS内核版本,将其打造成直接面向实际项目应用的综合框架(2024-10-30)
https://www.armbbs.cn/forum.php? ... 4516&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-26 05:51 , Processed in 0.719149 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表