YZ明 发表于 2020-5-15 15:03:47

USB f_opendir卡死

大家好,用v6板子的时候遇到个问题,用的v6-106c_FatFS文件系统例程(U盘),可以挂载U盘但是到了f_opendir就卡死了,请问下是什么原因呢?我用的是读卡器插得SD卡。

eric2013 发表于 2020-5-15 16:19:42

卡在了什么地方。

YZ明 发表于 2020-5-15 17:26:08

eric2013 发表于 2020-5-15 16:19
卡在了什么地方。

卡在函数disk_read();的while (status == USBH_MSC_BUSY );


                                if (HCD_IsDeviceConnected(&USB_OTG_Core))
                                {
                                        do
                                        {
                                                status = USBH_MSC_Read10(&USB_OTG_Core, buff,sector,512 * count);
                                                USBH_MSC_HandleBOTXfer(&USB_OTG_Core ,&USB_Host);

                                                if (!HCD_IsDeviceConnected(&USB_OTG_Core))
                                                {
                                                        break;
                                                }
                                        }
                                        while (status == USBH_MSC_BUSY );
                                }

YZ明 发表于 2020-5-15 17:38:41

eric2013 发表于 2020-5-15 16:19
卡在了什么地方。

如果用出厂程序加上v6-106c_FatFS文件系统例程(U盘)的U盘读取部分,不会卡死在f_opendir,会返回0x03(FR_NOT_READY)

eric2013 发表于 2020-5-15 19:04:02

YZ明 发表于 2020-5-15 17:38
如果用出厂程序加上v6-106c_FatFS文件系统例程(U盘)的U盘读取部分,不会卡死在f_opendir,会返回0x03( ...
兼容性问题,使用我这个案例测试,如果也无法正常识别,的确是无法正常识别了,这个是USB标准库最新版。
http://www.armbbs.cn/forum.php?mod=viewthread&tid=17658&extra=page%3D1




YZ明 发表于 2020-5-16 10:49:25

eric2013 发表于 2020-5-15 19:04
兼容性问题,使用我这个案例测试,如果也无法正常识别,的确是无法正常识别了,这个是USB标准库最新版。
...

我又试了下v5的开发板,也是同样的结果。您那边是否可以帮忙看看是不是也有这样的现象

eric2013 发表于 2020-5-16 10:52:04

YZ明 发表于 2020-5-16 10:49
我又试了下v5的开发板,也是同样的结果。您那边是否可以帮忙看看是不是也有这样的现象
我这里杠杠的。

STM32移植USB库2.2.0版本----USB Host之外挂U盘移植步骤及其注意事项,识别率很高,
http://www.armbbs.cn/forum.php?m ... id=19754&fromuid=58
(出处: 硬汉嵌入式论坛)


手头4个U盘全部成功正常读写:

https://img.anfulai.cn/dz/attachment/forum/pw/Fid_47/47_58_ca0e5ffd31b6881.png

YZ明 发表于 2020-5-16 16:01:41

eric2013 发表于 2020-5-16 10:52
我这里杠杠的。

STM32移植USB库2.2.0版本----USB Host之外挂U盘移植步骤及其注意事项,识别率很高,


我的问题找到了,是因为为屏蔽了,直接运行了ViewRootDir();        /* 显示SD卡根目录下的文件名 */
只要按正常的窗口发送就可以了

//if (comGetChar(COM1, &cmd))        /* 从串口读入一个字符(非阻塞方式) */
{
                        printf("\r\n");
                        cmd = '1';
                        switch (cmd)
                        {
                                case '1':
                                        printf("【1 - ViewRootDir】\r\n");
                                        ViewRootDir();                /* 显示SD卡根目录下的文件名 */
                                        break;

                                case '2':
                                        printf("【2 - CreateNewFile】\r\n");
                                        CreateNewFile();                /* 创建一个新文件,写入一个字符串 */
                                        break;

                                case '3':
                                        printf("【3 - ReadFileData】\r\n");
                                        ReadFileData();                /* 读取根目录下armfly.txt的内容 */
                                        break;

                                case '4':
                                        printf("【4 - CreateDir】\r\n");
                                        CreateDir();                /* 创建目录 */
                                        break;

                                case '5':
                                        printf("【5 - DeleteDirFile】\r\n");
                                        DeleteDirFile();        /* 删除目录和文件 */
                                        break;

                                case '6':
                                        printf("【6 - TestSpeed】\r\n");
                                        WriteFileTest();        /* 速度测试 */
                                        break;

                                default:
                                        DispMenu();
                                        break;
                        }
}



顺带问个网口的问题,用的v5开发板 V5-1004_RL-TCPnet实验_调试方法(裸机)例程,只有一个网口(DM9161 PHY电路)可以出口输出一些IP地址什么的,换一个就不可以了,是因为没有配置还是什么呢。DM9000 网卡电路和DM9161 PHY电路区别是什么呢

eric2013 发表于 2020-5-16 16:07:40

YZ明 发表于 2020-5-16 16:01
我的问题找到了,是因为为屏蔽了,直接运行了ViewRootDir();      /* 显示SD卡根目录下的文件名 */
只要按正 ...
你跑的这个例子就是针对DM9161/9162的。没有DM9000。
两个的区别看此教程学习:

http://www.armbbs.cn/forum.php?mod=viewthread&tid=26034&extra=page%3D1

YZ明 发表于 2020-5-16 16:19:35

eric2013 发表于 2020-5-16 16:07
你跑的这个例子就是针对DM9161/9162的。没有DM9000。
两个的区别看此教程学习:



那有DM9000 网口的配套例程么

eric2013 发表于 2020-5-16 16:27:23

YZ明 发表于 2020-5-16 16:19
那有DM9000 网口的配套例程么
出厂程序支持,下载溜溜即可。

你的问题就聊这么多吧,结帖。

YZ明 发表于 2020-5-16 17:17:41

eric2013 发表于 2020-5-16 16:27
出厂程序支持,下载溜溜即可。

你的问题就聊这么多吧,结帖。

好的,十分感谢!
页: [1]
查看完整版本: USB f_opendir卡死