硬汉嵌入式论坛

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

[ThreadX全家桶] 基本完成使用USBX+FileX来读写U盘的文件

  [复制链接]

17

主题

84

回帖

135

积分

初级会员

积分
135
QQ
发表于 2021-10-29 15:54:24 | 显示全部楼层 |阅读模式
本帖最后由 linminghui 于 2021-11-2 11:03 编辑

2021.10.30
参考的STM32的例程Ux_Host_Msc(H743),在《18.ThreadX+Filex+GUIX+NetXDUO+USBX综合模板,含MDK AC5,AC6,IAR和GCC》综合模板的基础上改的,用的是V7的板。
U盘是FAt32的格式,用裸机例程《V7-026_FatFS文件系统例子(外挂U盘)》测试了U盘可以进行操作的。

插入U盘的话确实会进中断OTG_HS_IRQHandler,但是不知道在哪里进行U盘的识别操作。
例程里是有一个U盘操作的函数,但是只有在一个奇怪的地方调用了,也不是我想的在中断或者周期性的查询。

QQ截图20211029154923.png

QQ截图20211029154954.png

2021.11.02
已经可以实现在U盘中的文件创建读写等。
使用的是IAR9.1  ,V7板  ,参考例程有STM32Cube的《Ux_Host_Msc(H743)》和安富莱的《V7-026_FatFS文件系统例子(外挂U盘)》,在《18.ThreadX+Filex+GUIX+NetXDUO+USBX综合模板,含MDK AC5,AC6,IAR和GCC》为基础。
需要注意的地方有一下几点:
(1)记得添加中断函数
void OTG_HS_IRQHandler(void)
{
    HAL_HCD_IRQHandler(&hhcd_USB_OTG_HS);
}
在插入U盘时需要进入这个中断。
(2)USBX部分主体为《Ux_Host_Msc(H743)》,但是USB的IO口配置,可以参考《V7-026_FatFS文件系统例子(外挂U盘)》例程,注意使用全速模式,使用的IO口味PB14、PB15,记得USB的时钟打开;
(3)需要用UX中的 HAL_HCD_Connect_Callback替代掉HAL库中的同名函数,通常放进程序并且添加了头文件就会生效,我是因为把UX编译成了库所以最初出错了;




回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107028
QQ
发表于 2021-10-29 16:09:34 | 显示全部楼层
近期就更新个外挂U盘的案例。
回复

使用道具 举报

17

主题

84

回帖

135

积分

初级会员

积分
135
QQ
 楼主| 发表于 2021-11-2 11:41:11 | 显示全部楼层
基本完成了使用USBX+FileX来读写U盘的文件
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107028
QQ
发表于 2021-11-2 11:42:56 | 显示全部楼层
linminghui 发表于 2021-11-2 11:41
基本完成了使用USBX+FileX来读写U盘的文件

刚才后台的时候,还以你这个帖子没有审核通过呢,错看成新发的帖子了,原来是编辑了下
回复

使用道具 举报

17

主题

84

回帖

135

积分

初级会员

积分
135
QQ
 楼主| 发表于 2021-11-2 14:46:53 | 显示全部楼层
原来不需要配置IO口,在初始化里面设置完高速全速,就会自动分配USB的IO口了,只要设置时钟就行了
回复

使用道具 举报

10

主题

32

回帖

62

积分

初级会员

积分
62
发表于 2021-11-3 19:25:06 | 显示全部楼层
USBX的源码是开放的吗?公司用了个MAX3421E,难搞死了,官方没有协议栈,其他的协议栈都不兼容,只能硬啃USB协议和别人家的协议栈,自己实现
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107028
QQ
发表于 2021-11-4 09:01:09 | 显示全部楼层
紫苑Yoo梦 发表于 2021-11-3 19:25
USBX的源码是开放的吗?公司用了个MAX3421E,难搞死了,官方没有协议栈,其他的协议栈都不兼容,只能硬啃US ...

开源的。

ThreadX全家桶源码和文档下载,含GUIX,Filex,NetX,USBX,GUIX Studio,TraceX等,全部升级至V6.1.9(2021-10-19)
http://www.armbbs.cn/forum.php?m ... 7925&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

1

主题

49

回帖

52

积分

初级会员

积分
52
发表于 2021-12-16 16:05:51 | 显示全部楼层
请问一下 楼主  USBX+FILEX来读写U盘的例子可以共享一下吗
回复

使用道具 举报

610

主题

3062

回帖

4912

积分

至尊会员

积分
4912
发表于 2021-12-17 10:03:32 | 显示全部楼层
iamarookie 发表于 2021-12-16 16:05
请问一下 楼主  USBX+FILEX来读写U盘的例子可以共享一下吗

x-cube-azrtos-h7-main v2.0.1   这个里面有例程,你可以去下载一个看看
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2022-1-3 09:53:22 | 显示全部楼层
硬汉哥,我想用usbx+levelx+filex实现将nand虚拟usb msc设备,请问有例程吗?
回复

使用道具 举报

24

主题

122

回帖

194

积分

初级会员

积分
194
发表于 2022-1-3 13:04:36 | 显示全部楼层
iar,楷体,一样一样。
iar字体怎么调看着都别扭。一般字体不清晰费眼。关键是行间距太小。
RT1052没有hal库,但有很多SDK例程。
usbx最好还是挂threadx更方便。host模式跟这个差不多,反正是插上u盘就送给你设备号。剩下的就是遍历找文件。
device模式测试过官方的ram虚拟U盘,但移植flash驱动没有成功,反而是lfs跑的稳稳地。
回复

使用道具 举报

40

主题

113

回帖

233

积分

高级会员

积分
233
发表于 2022-1-19 21:38:54 | 显示全部楼层
eric2013 发表于 2021-10-29 16:09
近期就更新个外挂U盘的案例。

硬汉哥有外挂U盘的案例了吗?
回复

使用道具 举报

40

主题

113

回帖

233

积分

高级会员

积分
233
发表于 2022-1-19 21:40:43 | 显示全部楼层
H743没有“Ux_Host_Msc(H743)”这个例程啊,从哪里下载呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107028
QQ
发表于 2022-1-20 09:35:32 | 显示全部楼层
yihang1004 发表于 2022-1-19 21:40
H743没有“Ux_Host_Msc(H743)”这个例程啊,从哪里下载呢?

这个就是所有H7系列是通用的。

https://github.com/STMicroelectr ... ns/USBX/Ux_Host_MSC
回复

使用道具 举报

1

主题

49

回帖

52

积分

初级会员

积分
52
发表于 2022-3-4 15:13:43 | 显示全部楼层
读写U盘的例子可以发一下,学习一下吗,目前调试老是有问题,Q1732960781,感谢
回复

使用道具 举报

17

主题

84

回帖

135

积分

初级会员

积分
135
QQ
 楼主| 发表于 2022-3-8 11:41:43 | 显示全部楼层
iamarookie 发表于 2022-3-4 15:13
读写U盘的例子可以发一下,学习一下吗,目前调试老是有问题,Q1732960781,感谢

因为不是我个人的项目所以不能传播
回复

使用道具 举报

40

主题

113

回帖

233

积分

高级会员

积分
233
发表于 2022-10-21 19:37:46 | 显示全部楼层
eric2013 发表于 2021-10-29 16:09
近期就更新个外挂U盘的案例。

硬汉哥,有USBX外挂U盘的例子了吗?
回复

使用道具 举报

1

主题

30

回帖

33

积分

新手上路

积分
33
发表于 2022-10-21 23:06:00 | 显示全部楼层
yihang1004 发表于 2022-10-21 19:37
硬汉哥,有USBX外挂U盘的例子了吗?

兄dei能加个qq聊聊嘛最近也用这个,,,1454014228谢谢
回复

使用道具 举报

40

主题

113

回帖

233

积分

高级会员

积分
233
发表于 2022-10-24 10:10:56 | 显示全部楼层
eric2013 发表于 2021-10-29 16:09
近期就更新个外挂U盘的案例。

安富莱开发板外挂U盘IOC
回复

使用道具 举报

40

主题

113

回帖

233

积分

高级会员

积分
233
发表于 2022-10-24 10:14:23 | 显示全部楼层
eric2013 发表于 2021-10-29 16:09
近期就更新个外挂U盘的案例。

1.安富莱开发板得IOC文件,生成后就可以直接插入U盘,目前只是是fat32格式U盘;2.exfat目前没有成功,待研究;

ThreadX_USBX_H743XIH6.zip

2.7 KB, 下载次数: 20

回复

使用道具 举报

40

主题

113

回帖

233

积分

高级会员

积分
233
发表于 2022-10-24 10:23:27 | 显示全部楼层
ldd69arm 发表于 2022-10-21 23:06
兄dei能加个qq聊聊嘛最近也用这个,,,1454014228谢谢

我上传了一个开发板的IOC,你下载生成就可以识别U盘了
回复

使用道具 举报

40

主题

113

回帖

233

积分

高级会员

积分
233
发表于 2022-10-24 19:05:21 | 显示全部楼层
eric2013 发表于 2022-1-20 09:35
这个就是所有H7系列是通用的。

https://github.com/STMicroelectronics/x-cube-azrtos-h7/tree/main/P ...

硬汉哥,你好!
1.用USBX、filex用开发板写了一个外挂U盘的程序,使能exfat,32G以下的U盘,无论FAT32还是exFAT格式的U盘读写都没有问题;
2.只要超过32G就不正常,问题应该出在哪里呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107028
QQ
发表于 2022-10-25 10:37:53 | 显示全部楼层
yihang1004 发表于 2022-10-24 19:05
硬汉哥,你好!
1.用USBX、filex用开发板写了一个外挂U盘的程序,使能exfat,32G以下的U盘,无论FAT32还 ...

使能了exFAT也不正常吗,如果不正常的话,可以考虑换个U盘试试了。
回复

使用道具 举报

40

主题

113

回帖

233

积分

高级会员

积分
233
发表于 2022-10-26 11:32:26 | 显示全部楼层
eric2013 发表于 2022-10-25 10:37
使能了exFAT也不正常吗,如果不正常的话,可以考虑换个U盘试试了。

使能exFAT情况下
1.32G以下的U盘,无论是USB3.0高速的,还是USB2.0的,无论FAT32,还是exFAT格式的U盘读写都没有问题;
2.手里一个USB3.0的MOVE SPEED的64G高速的U盘, 这段代码报错,status =  fx_media_flush(fx_media);,最后跟踪到这里_fx_utility_exFAT_bitmap_flush(media_ptr);报错。
3.又买了一个USB2.0的海康威视的全速64G的U盘, 可以正常读写操作。
可能USBX+FileX对大容量的U盘兼容性不好。
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
发表于 2023-5-6 14:59:12 | 显示全部楼层
你好,第三步用UX中的 HAL_HCD_Connect_Callback替代掉HAL库中的同名函数可以说得再清楚点吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107028
QQ
发表于 2023-5-7 11:54:24 | 显示全部楼层
lzf 发表于 2023-5-6 14:59
你好,第三步用UX中的 HAL_HCD_Connect_Callback替代掉HAL库中的同名函数可以说得再清楚点吗?

HAL库里面有个此函数的,是弱定义的。用户再定义这个函数,弱定义就不起作用了。

楼主的意思是直接使用UX定义好的。
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
发表于 2023-5-8 13:51:38 | 显示全部楼层
eric2013 发表于 2023-5-7 11:54
HAL库里面有个此函数的,是弱定义的。用户再定义这个函数,弱定义就不起作用了。

楼主的意思是直接使 ...

噢噢,好的谢谢,我以为还需要修改什么的,从跳转定义确实看到了替换成UX同名函数的效果了。
回复

使用道具 举报

3

主题

12

回帖

21

积分

新手上路

积分
21
发表于 2023-6-27 10:20:05 | 显示全部楼层
你好,我使用的STM32H562芯片,也是USBX+FLIEX,参考的官方例程,使用CUBEMAX生成的,但是插入U盘却进不了中断,时钟PLL3Q和HSI48都试过,是不是还有什么要注意的地方?另外是否进中断是不是只和引脚配置有关,和USB协议栈无关
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107028
QQ
发表于 2023-6-27 13:47:40 | 显示全部楼层
gyh 发表于 2023-6-27 10:20
你好,我使用的STM32H562芯片,也是USBX+FLIEX,参考的官方例程,使用CUBEMAX生成的,但是插入U盘却进不了 ...

直接参考ST提供的例子试试:

ThreadX全家桶原生支持的STM32H5软件包来了(2023-03-16)
https://www.armbbs.cn/forum.php? ... 8364&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

3

主题

12

回帖

21

积分

新手上路

积分
21
发表于 2023-6-27 14:12:39 | 显示全部楼层
eric2013 发表于 2023-6-27 13:47
直接参考ST提供的例子试试:

ThreadX全家桶原生支持的STM32H5软件包来了(2023-03-16)

我参考的正是这个软件包的H573中的Ux_Host_MSC,USB配置和例程中的IOC一样,USB时钟也是HSI48,USB接口也是正常的,插入U盘后D+会被拉高。理论上说只要配置好了,应该就能进中断,和USBX没关系吧
回复

使用道具 举报

3

主题

12

回帖

21

积分

新手上路

积分
21
发表于 2023-6-27 15:59:30 | 显示全部楼层
eric2013 发表于 2023-6-27 13:47
直接参考ST提供的例子试试:

ThreadX全家桶原生支持的STM32H5软件包来了(2023-03-16)

原因找到了,PWR_USBSCR寄存器中的USB33SV这一位要使能,这个是控制是否给USB收发器供电的,使能后就能进入中断了。CUBEMAX的USB生成代码中没有这个,要手动添加,从HAL库中调用这个函数HAL_PWREx_EnableVddUSB();就可以了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107028
QQ
发表于 2023-6-28 07:38:58 | 显示全部楼层
gyh 发表于 2023-6-27 15:59
原因找到了,PWR_USBSCR寄存器中的USB33SV这一位要使能,这个是控制是否给USB收发器供电的,使能后就能进 ...

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 14:54 , Processed in 0.332141 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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