硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4639|回复: 27
收起左侧

[ThreadX全家桶] 请问下,群里有没有哪位大神使用 usbx 来读写 u盘成功的(单片机)

  [复制链接]

615

主题

3070

回帖

4935

积分

至尊会员

积分
4935
发表于 2021-7-20 16:46:24 | 显示全部楼层 |阅读模式
请问下,群里有没有哪位大神使用 usbx 来读写 u盘成功的(单片机) ?

不是 模拟 u盘,然后在电脑上读写的那种
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107585
QQ
发表于 2021-7-20 18:43:16 | 显示全部楼层
回复

使用道具 举报

615

主题

3070

回帖

4935

积分

至尊会员

积分
4935
 楼主| 发表于 2021-7-21 10:45:38 | 显示全部楼层
eric2013 发表于 2021-7-20 18:43
https://github.com/STMicroelectronics/x-cube-azrtos-h7/tree/main/Projects/STM32H735G-DK/Applications ...

搞了半天,网页也没有打开呀,纠结的网络
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107585
QQ
发表于 2021-7-21 10:53:11 | 显示全部楼层
hpdell 发表于 2021-7-21 10:45
搞了半天,网页也没有打开呀,纠结的网络

这个就是。

ThreadX全家桶软件包X-CUBE-AZRTOS-H7升级,发布动态应用加载,低功耗和USB DFU案例
http://www.armbbs.cn/forum.php?m ... 7945&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

615

主题

3070

回帖

4935

积分

至尊会员

积分
4935
 楼主| 发表于 2021-7-21 11:15:18 | 显示全部楼层
eric2013 发表于 2021-7-21 10:53
这个就是。

ThreadX全家桶软件包X-CUBE-AZRTOS-H7升级,发布动态应用加载,低功耗和USB DFU案例

貌似还是 st 的生态给力呀,
回复

使用道具 举报

615

主题

3070

回帖

4935

积分

至尊会员

积分
4935
 楼主| 发表于 2021-7-24 13:48:05 | 显示全部楼层
本帖最后由 hpdell 于 2021-7-24 15:37 编辑
eric2013 发表于 2021-7-21 10:53
这个就是。

ThreadX全家桶软件包X-CUBE-AZRTOS-H7升级,发布动态应用加载,低功耗和USB DFU案例

貌似按照历程提供的程序,捣鼓移植了一下,结果很悲催的失败,
貌似是 usb 的中断函数没有反应 ?

相关配置如下:
void MX_USB_OTG_HS_HCD_Init(void)
{

                hhcd_USB_OTG_HS.Instance = USB2_OTG_FS;     // USB_OTG_HS; USB_OTG_FS;  USB2_OTG_FS
                hhcd_USB_OTG_HS.Init.Host_channels = 16;
                hhcd_USB_OTG_HS.Init.speed = HCD_SPEED_FULL;
                hhcd_USB_OTG_HS.Init.dma_enable = DISABLE;
                hhcd_USB_OTG_HS.Init.phy_itface = USB_OTG_EMBEDDED_PHY;
                hhcd_USB_OTG_HS.Init.Sof_enable = DISABLE;
                hhcd_USB_OTG_HS.Init.low_power_enable = DISABLE;
                hhcd_USB_OTG_HS.Init.use_external_vbus = DISABLE;
                if (HAL_HCD_Init(&hhcd_USB_OTG_HS) != HAL_OK)
                {
                 
                }
}


void HAL_HCD_MspInit(HCD_HandleTypeDef * hhcd)
{
        GPIO_InitTypeDef GPIO_InitStruct = {0};

        if (hhcd->Instance == USB2_OTG_FS)
        {
                /* Configure USB FS GPIOs */
                __HAL_RCC_GPIOA_CLK_ENABLE();

                /* Configure DM DP Pins */
                GPIO_InitStruct.Pin = (GPIO_PIN_11 | GPIO_PIN_12);
                GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
                GPIO_InitStruct.Pull = GPIO_NOPULL;
                GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
                GPIO_InitStruct.Alternate = GPIO_AF10_OTG1_FS;
                HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

                /* Enable USB FS Clocks */
                __HAL_RCC_USB2_OTG_FS_CLK_ENABLE();

    /* Disable USB clock during CSleep mode */
    __HAL_RCC_USB2_OTG_FS_ULPI_CLK_SLEEP_DISABLE();

                /* Set USBFS Interrupt priority */
                HAL_NVIC_SetPriority(OTG_FS_IRQn, 0x6, 0);  

                /* Enable USBFS Interrupt */
                HAL_NVIC_EnableIRQ(OTG_FS_IRQn);
        }

}

void OTG_FS_IRQHandler(void)
{
  HAL_HCD_IRQHandler(&hhcd_USB_OTG_HS);
}



正常来说,这样配置后,不管能否初始化成功,最起码都能够进入到 中断函数里面来吧 ?  目前仿真 程序根本就没有进入中断函数里面来呀 ????????????


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107585
QQ
发表于 2021-7-25 09:25:30 | 显示全部楼层
hpdell 发表于 2021-7-24 13:48
貌似按照历程提供的程序,捣鼓移植了一下,结果很悲催的失败,
貌似是 usb 的中断函数没有反应 ?

仅你发的这部分代码,没问题。
回复

使用道具 举报

615

主题

3070

回帖

4935

积分

至尊会员

积分
4935
 楼主| 发表于 2021-7-25 11:14:00 | 显示全部楼层
本帖最后由 hpdell 于 2021-7-26 09:30 编辑
eric2013 发表于 2021-7-25 09:25
仅你发的这部分代码,没问题。

貌似刚刚已经捣鼓基本成功了哟,在 usb 初始化时需要调用HAL_PWREx_EnableUSBVoltageDetector();     // 使用 usbx 驱动库 ,必须调用此函数

这个函数貌似在使用 st 提供的 usb 库,并且使用 PA11/PA12 管脚时是可以不用调用的,

现在 读写 32g u 盘,格式为 fat32 是没有问题,但是使用 exfat 貌似不行,错误提示  FX_MEDIA_NOT_OPEN  对应的代码为 0x11

a. u盘格式为 fat32 则不会,而且读写也很正常

b. fx 也已经宏定义 FX_ENABLE_EXFAT 启用 extaf 了 ,但是读写u盘时还是会提示错误,是神马原因啊 ???



回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107585
QQ
发表于 2021-7-26 12:21:48 | 显示全部楼层
hpdell 发表于 2021-7-25 11:14
貌似刚刚已经捣鼓基本成功了哟,在 usb 初始化时需要调用HAL_PWREx_EnableUSBVoltageDetector();     //  ...

32GB及其以下用的FAT32,找个64GB的试试

回复

使用道具 举报

615

主题

3070

回帖

4935

积分

至尊会员

积分
4935
 楼主| 发表于 2021-7-26 14:43:32 | 显示全部楼层
eric2013 发表于 2021-7-26 12:21
32GB及其以下用的FAT32,找个64GB的试试

已经找了个 64g 的试过了,结果还是一样的,u盘系统为 exfat 格式的就不行,fat32就没有问题,
回复

使用道具 举报

615

主题

3070

回帖

4935

积分

至尊会员

积分
4935
 楼主| 发表于 2021-7-26 19:27:28 | 显示全部楼层
eric2013 发表于 2021-7-26 12:21
32GB及其以下用的FAT32,找个64GB的试试

使用 64GB  的 u盘,错误提示如下

001.png


可以识别到 u盘 pid, vid ,只是在创建文件时出现错误 , 仿真时,貌似是 什么 id 没有赋值,始终都 为 0, ???????

但是使用 fat32 格式的u盘 就没有什么问题了


回复

使用道具 举报

615

主题

3070

回帖

4935

积分

至尊会员

积分
4935
 楼主| 发表于 2021-7-27 15:21:54 | 显示全部楼层
eric2013 发表于 2021-7-26 12:21
32GB及其以下用的FAT32,找个64GB的试试


使用 fat32 格式与 exfat 格式数据 截图如下,
--- 1  --- 使用 fat32 控制句柄文件截图
fat32-2.png



********************************************************************************
--- 2  --- 使用 exfat 控制句柄文件截图

exfat-2.png




回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107585
QQ
发表于 2021-7-28 08:57:35 | 显示全部楼层
hpdell 发表于 2021-7-27 15:21
使用 fat32 格式与 exfat 格式数据 截图如下,
--- 1  --- 使用 fat32 控制句柄文件截图

有没有可能是exFAT没有正常开启。
回复

使用道具 举报

615

主题

3070

回帖

4935

积分

至尊会员

积分
4935
 楼主| 发表于 2021-7-28 09:16:32 | 显示全部楼层
本帖最后由 hpdell 于 2021-7-28 10:18 编辑
eric2013 发表于 2021-7-28 08:57
有没有可能是exFAT没有正常开启。

exfat 木有正常启动的可能不大,之前使用 st 提供的 usb 库 + filex 组合,使用 exfat 功能是正常可以读写 >= 64GB 的 u盘都是木有问题的,设置都是一样的,现在使用的是 微软的 usbx + filex 组合,读写 >= 64GB 的u盘读写就不行了,

+++++++++++++++++++++++++++++++++++++++++++++
usbx + filex 组合,读写<= 32GB 的u盘,使用 fat32 格式读写也是没有问题的

usbx v6.1.7
filex v6.1.7
估计应该是跟 usbx 库有关,目前只是还没有找到 具体的问题所在
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107585
QQ
发表于 2021-7-28 16:32:44 | 显示全部楼层
hpdell 发表于 2021-7-28 09:16
exfat 木有正常启动的可能不大,之前使用 st 提供的 usb 库 + filex 组合,使用 exfat 功能是正常可以读 ...

回头我试试。
回复

使用道具 举报

615

主题

3070

回帖

4935

积分

至尊会员

积分
4935
 楼主| 发表于 2021-7-28 19:04:55 | 显示全部楼层

多谢多谢啊, 期待大神的作品啊,
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2021-8-11 13:00:57 | 显示全部楼层
USBX中会检测分区表并挂载FX_MEDIA,由于exFAT和FAT32的Boot sector格式不同,没有检测到exFAT并加载FX_MEDIA所以无法识别。
在今后的版本中会fix。
回复

使用道具 举报

615

主题

3070

回帖

4935

积分

至尊会员

积分
4935
 楼主| 发表于 2021-8-11 17:15:02 | 显示全部楼层
xiaocq2001 发表于 2021-8-11 13:00
USBX中会检测分区表并挂载FX_MEDIA,由于exFAT和FAT32的Boot sector格式不同,没有检测到exFAT并加载FX_MED ...

那就好哇,期待期待呀
回复

使用道具 举报

17

主题

84

回帖

135

积分

初级会员

积分
135
QQ
发表于 2021-10-27 16:20:54 | 显示全部楼层
大佬,你之前的usbx完善了吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107585
QQ
发表于 2021-10-28 01:22:14 | 显示全部楼层
linminghui 发表于 2021-10-27 16:20
大佬,你之前的usbx完善了吗

你现在遇到了什么问题。
回复

使用道具 举报

17

主题

84

回帖

135

积分

初级会员

积分
135
QQ
发表于 2021-10-28 10:53:38 | 显示全部楼层
eric2013 发表于 2021-10-28 01:22
你现在遇到了什么问题。

打算用USBX来做升级功能,我是根据STM32官方 USBX的例程(H735的例程 Ux_Host_MS)基础上做的,用的是V7的开发板,但是初始化的时候识别不到U盘,中断可以进去,不知道是不是IO口配置的不对,但是没有在例程里找到USBX IO口配置相关的。
回复

使用道具 举报

17

主题

84

回帖

135

积分

初级会员

积分
135
QQ
发表于 2021-10-29 10:14:19 | 显示全部楼层
hpdell 发表于 2021-7-25 11:14
貌似刚刚已经捣鼓基本成功了哟,在 usb 初始化时需要调用HAL_PWREx_EnableUSBVoltageDetector();     //  ...

大佬,能分享一下吗,我也在鼓捣这个
回复

使用道具 举报

8

主题

26

回帖

50

积分

初级会员

积分
50
发表于 2021-11-4 22:00:07 | 显示全部楼层
linminghui 发表于 2021-10-28 10:53
打算用USBX来做升级功能,我是根据STM32官方 USBX的例程(H735的例程 Ux_Host_MS)基础上做的,用的是V7 ...

用H750遇到同样的问题,有时候识别不到U盘,用F407每次都能正确识别。另外在F407上使用sd卡开启容错功能,有时候容错会开启失败
回复

使用道具 举报

8

主题

26

回帖

50

积分

初级会员

积分
50
发表于 2021-11-4 23:42:48 | 显示全部楼层
老鸟kkk 发表于 2021-11-4 22:00
用H750遇到同样的问题,有时候识别不到U盘,用F407每次都能正确识别。另外在F407上使用sd卡开启容错功能 ...

USBX下H750VB有时候识别不到U盘,把主频由480M降低到400M解决,测试了几十次没有复现,具体原因未知
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107585
QQ
发表于 2021-11-5 08:41:58 | 显示全部楼层
老鸟kkk 发表于 2021-11-4 23:42
USBX下H750VB有时候识别不到U盘,把主频由480M降低到400M解决,测试了几十次没有复现,具体原因未知

480MHz和400MHz的时候,你的USB主频配置的都是48MHz吗
回复

使用道具 举报

8

主题

26

回帖

50

积分

初级会员

积分
50
发表于 2021-11-5 09:42:31 | 显示全部楼层
eric2013 发表于 2021-11-5 08:41
480MHz和400MHz的时候,你的USB主频配置的都是48MHz吗

是的,都是从时钟树的RC48直接过来的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107585
QQ
发表于 2021-11-6 09:34:56 | 显示全部楼层
老鸟kkk 发表于 2021-11-5 09:42
是的,都是从时钟树的RC48直接过来的

那估计其它的地方有点问题,下次我也试试。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-7 05:09 , Processed in 0.253075 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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