硬汉嵌入式论坛

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

threadx使用USBX+FileX来读写U盘的文件

[复制链接]

1

主题

6

回帖

9

积分

新手上路

积分
9
发表于 2024-5-8 10:24:18 | 显示全部楼层 |阅读模式
使用的是stm32f429,参考的STM32的例程Ux_Host_Msc。
插入U盘后,U盘是fat32格式的,板子串口输出信息如下:

**** USB OTG FS MSC Host ****

USB Host library started.

Starting MSC Application
Connect your MSC Device

ERROR: !! Unsupported MSC_Device plugged !!

这是什么原因?有知道的大神指点一下。


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107156
QQ
发表于 2024-5-8 15:01:36 | 显示全部楼层
可能U盘不兼容。换个U盘试试。

也不行的话,得程序上找下问题了。
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2024-5-8 15:43:46 | 显示全部楼层
eric2013 发表于 2024-5-8 15:01
可能U盘不兼容。换个U盘试试。

也不行的话,得程序上找下问题了。

你好,我重新用fatfs+usb_host做,程序死在if(f_open(&MyFile, "STM32.TXT", FA_CREATE_ALWAYS | FA_WRITE) != FR_OK)还是失败了。是什么原因呢?

程序如下:
if(f_mount(&USBDISKFatFs, (TCHAR const*)USBDISKPath, 0) != FR_OK)
  {
    /* FatFs Initialization Error */
    Error_Handler();
  }
  else
  {
      /* Create and Open a new text file object with write access */
      if(f_open(&MyFile, "STM32.TXT", FA_CREATE_ALWAYS | FA_WRITE) != FR_OK)
      {
              printf("444\n");
        /* 'STM32.TXT' file Open for write Error */
        Error_Handler();
      }
      else
      {
        /* Write data to the text file */
        res = f_write(&MyFile, wtext, sizeof(wtext), (void *)&byteswritten);

        if((byteswritten == 0) || (res != FR_OK))
        {
          /* 'STM32.TXT' file Write or EOF Error */
          Error_Handler();
        }
        else
        {
          /* Close the open text file */
          f_close(&MyFile);

        /* Open the text file object with read access */
        if(f_open(&MyFile, "STM32.TXT", FA_READ) != FR_OK)
        {
          /* 'STM32.TXT' file Open for read Error */
          Error_Handler();
        }
        else
        {
          /* Read data from the text file */
          res = f_read(&MyFile, rtext, sizeof(rtext), (void *)&bytesread);

          if((bytesread == 0) || (res != FR_OK))
          {
            /* 'STM32.TXT' file Read or EOF Error */
            Error_Handler();
          }
          else
          {
            /* Close the open text file */
            f_close(&MyFile);

            /* Compare read data with the expected data */
            if((bytesread != byteswritten))
            {
              /* Read data is different from the expected data */
              Error_Handler();
            }
            else
            {

            }
          }
        }
      }
    }
  }

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107156
QQ
发表于 2024-5-9 08:41:05 | 显示全部楼层
sun664019227 发表于 2024-5-8 15:43
你好,我重新用fatfs+usb_host做,程序死在if(f_open(&MyFile, "STM32.TXT", FA_CREATE_ALWAYS | FA_WRIT ...

枚举成功了吗,成功了看下f_open返回值多少
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2024-5-9 09:12:54 | 显示全部楼层
eric2013 发表于 2024-5-9 08:41
枚举成功了吗,成功了看下f_open返回值多少

fopen返回值是1
下面a的输出值为1
     /* Create and Open a new text file object with write access */
      if(f_open(&MyFile, "STM32.txt", FA_CREATE_ALWAYS | FA_WRITE) != FR_OK)
      {
              uint16_t a = f_open(&MyFile, "STM32.txt", FA_CREATE_ALWAYS | FA_WRITE);
              printf("a=%d\n", a);
        /* 'STM32.TXT' file Open for write Error */
        Error_Handler();
      }
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2024-5-9 10:58:12 | 显示全部楼层
eric2013 发表于 2024-5-9 08:41
枚举成功了吗,成功了看下f_open返回值多少

硬件设计上,不是usb线直接连接到处理器芯片的USB管脚的,而是中间加了hub芯片,这个有影响吗?hub芯片的型号是TUSB2036VFRG,这个芯片的时钟用的6m的晶振接入的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107156
QQ
发表于 2024-5-10 09:12:50 | 显示全部楼层
sun664019227 发表于 2024-5-9 10:58
硬件设计上,不是usb线直接连接到处理器芯片的USB管脚的,而是中间加了hub芯片,这个有影响吗?hub芯片的 ...

要直连,使用USB HUB,还需要USB HUB类的支持才行。
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 4 天前 | 显示全部楼层
eric2013 发表于 2024-5-10 09:12
要直连,使用USB HUB,还需要USB HUB类的支持才行。

直连是可以的,感谢。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107156
QQ
发表于 4 天前 | 显示全部楼层
sun664019227 发表于 2024-5-16 07:59
直连是可以的,感谢。

好的,USB HUB有专门的类,如果要支持的话,ThreadX USBX也是支持的。
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 3 天前 | 显示全部楼层
eric2013 发表于 2024-5-16 14:41
好的,USB HUB有专门的类,如果要支持的话,ThreadX USBX也是支持的。

这个应该如何移植呢?有demo参考一下吗?
还有个问题顺便咨询一下,usb插U盘,然后同时SDIO接口使用SD卡,threadx支持吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107156
QQ
发表于 前天 11:53 | 显示全部楼层
sun664019227 发表于 2024-5-17 10:56
这个应该如何移植呢?有demo参考一下吗?
还有个问题顺便咨询一下,usb插U盘,然后同时SDIO接口使用SD卡 ...

1、这个ThreadX没有提供Demo,之前有网友添加过,将相应的类添加,并初始化就可以使用。
2、没问题,可以挂载多个设备的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 16:59 , Processed in 0.370434 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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