硬汉嵌入式论坛

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

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

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2016-6-22 10:41:58 | 显示全部楼层 |阅读模式
这个库是去年11月份官方升级的,U盘识别率很高,热插拔也好用。配套的例子含F407和F429,下周
FreeRTOS教程发布后贴到这个帖子里面
例子下载: V5-348-FreeRTOS实验_FreeRTOS+STemWin+FatFS+USB Host综合.rar (12.16 MB, 下载次数: 3903)
==========================================================================
文件名:U盘挂载模块移植和使用说明

----Eric2013整理于2016-02-26

【移植说明】
安富莱移植的U盘挂载应用说明:
usb_mass_storage 文件夹的文件主要来自于ST的USB固件库2.2.0版本中的范例
官方下载地址:
http://www.st.com/web/catalog/to ... 961/SS1743/PF257882
安富莱电子对齐进行了整理。使其可以方便地添加到不同的工程中去。

---------------------当前的SD卡模拟U盘是用的MicrUSB接口---------------------

移植步骤如下:
1. 在工程中添加USB固件库:STM32_USB_Host_Library 和 STM32_USB_OTG_Driver
    STM32_USB_Host_Library\Core\Core
    STM32_USB_Host_Library\Class\msc
    STM32_USB_OTG_Driver\src   

   具体添加的文件参考此工程,就不一一详述了,注意部分文件在软件包的工程文件夹下。

2. 添加usbd_usr.c,usb_bsp.c和相应的.h文件到User文件夹下的usbd_mass_storage文件夹下。
   usb_conf.h和usbh_conf.h文件也添加到这个路径下。
   -----
   其中usb_bsp.c此文件做较大修改,具体看此文件实现即可。这几个文件是在官方工程的具体实现文件夹下。

3. 整理USB的中断到一个专门新建的usb_it.c文件里,具体参考源文件即可。


4. 整理并修改usbd_usr.c文件。
   (1)USB相关全局变量定义在 usbd_usr.c 文件
        #ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED
          #if defined ( __ICCARM__ )  /*!< IAR Compiler */
            #pragma data_alignment=4   
          #endif
        #endif

        /* USB HOST使用 */
        __ALIGN_BEGIN USB_OTG_CORE_HANDLE   USB_OTG_Core  __ALIGN_END;
        __ALIGN_BEGIN USBH_HOST   USB_Host   __ALIGN_END;

        /* USB Devie使用 */
        __ALIGN_BEGIN USB_OTG_CORE_HANDLE   USB_OTG_dev   __ALIGN_END ;

   (2)添加两个新函数,方便调用。
        /* 挂载U盘 ****************************/
        void usbh_OpenMassStorage(void)
        {
            USBH_Init(&USB_OTG_Core,
                      #ifdef USE_USB_OTG_FS  
                         USB_OTG_FS_CORE_ID,
                      #else
                         USB_OTG_HS_CORE_ID,
                      #endif
                      &USB_Host,
                      &USBH_MSC_cb,
                      &USRH_cb);
        }

        /* 卸载U盘 ****************************/
        void usbh_CloseMassStorage(void)
        {
            /* Host de-initializations */
            USBH_DeInit(&USB_OTG_Core, &USB_Host);

            USB_OTG_BSP_DisableInterrupt();    /* 关闭USB相关的所有中断 */
        }
   (3)添加如下调试:
        //#define usb_printf    printf
        #define usb_printf(...)

        这个文件的源文件是LCD调试的,故将其修改为了串口打印的形式。
    (5) 修改USBH_Usr_cb_TypeDef USR_cb为USBD_Usr_cb_TypeDef USRH_cb。
         此文件的.h文件也要做相应的extern修改。


6. 新建一个usbh_bsp_msc.h文件,专门供用户调用。

7. usb_conf.h文件
   1. 删除官方评估板宏定义
   2. 选择使能Host模式,其中Device模式也使能,方便兼容usb_bsp.c中修改的函数
       #define USE_HOST_MODE
       #define USE_DEVICE_MODE

9. 工程中添加预编译宏定义:USE_USB_OTG_HS, USE_EMBEDDED_PHY, 其中 VBUS_SENSING_ENABLED 是可选的



【使用方法】
1. 用户直接调用usbh_OpenMassStorage即可,在主程序中循环调用
   USBH_Process(&USB_OTG_Core, &USB_Host);
   就可以支持热插拔,无需再调用usbh_OpenMassStorage,这个函数初始化时调用一次即可。


2. 动态移除USB连接调用:
    usbh_CloseMassStorage;


==========================================================================
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2016-7-1 07:51:17 | 显示全部楼层
已经更新例子。
回复

使用道具 举报

1

主题

33

回帖

36

积分

新手上路

积分
36
发表于 2017-4-10 15:06:21 | 显示全部楼层
新的2.2库,外挂U盘,还是无法百分百兼容吧
回复

使用道具 举报

1

主题

33

回帖

36

积分

新手上路

积分
36
发表于 2017-4-10 16:58:45 | 显示全部楼层

回 eric2013 的帖子

eric2013:已经更新例子。 (2016-07-01 07:51)
调试发现,应该是U盘枚举成功,但是还是存在U盘兼容性问题,手中有一个U盘执行
if ( f_mount( &amp;fatfs, &quot;2:/&quot;, 1 ) != FR_OK )
后失败,然后就没法继续了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2017-4-11 11:33:20 | 显示全部楼层
修改为裸机要修改的地方:
1.png




2.png



888.png



7777.png
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
发表于 2017-7-29 13:21:53 | 显示全部楼层
教程里用的是 USE_USB_OTG_HS端口吧,我要用 USE_USB_OTG_FS  端口要怎么改呢
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
发表于 2017-7-29 14:21:49 | 显示全部楼层
串口不停的收到这样的信息,那里有问题。按理说应该只收到一次这样的信息就够了吧

[14:16:53.965]收←◆> UNRECOVERED ERROR STATE
[14:16:54.387]收←◆> USBH_USR_ResetDevice
[14:16:54.638]收←◆> Device Attached
[14:16:54.760]收←◆> USBH_USR_ResetDevice
> Full speed device detected
[14:16:56.366]收←◆> VID : 1908h
> PID : 1320h
[14:16:58.569]收←◆> Mass storage device connected
[14:16:59.373]收←◆> Manufacturer : Genericr
[14:17:00.175]收←◆> Product : Mass storage
[14:17:00.977]收←◆> Serial Number : 3858332209
[14:17:01.678]收←◆> Enumeration completed
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
发表于 2017-7-29 16:57:58 | 显示全部楼层
不停的执行这句  

case HOST_CLASS:   
    /* process class state machine */
    status = phost-&gt;class_cb-&gt;Machine(pdev, phost);
    USBH_ErrorHandle(phost, status);
    break;  

换了个U盘后就不会不停的执行了。但还是显示
【1 - ViewR-ootDir】
挂载文件系统失败 (11)
打开根目录失败 (12)
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
发表于 2017-7-29 17:02:46 | 显示全部楼层
不停的产生 USBH_UNRECOVERED_ERROR 错误
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2017-7-30 15:29:54 | 显示全部楼层

回 zerone 的帖子

zerone:教程里用的是 USE_USB_OTG_HS端口吧,我要用&#160;USE_USB_OTG_FS&#160; 端口要怎么改呢&#160;&#160;&#160;(2017-07-29 13:21)&#160;
下载官方的软件包,里面有。

主要是修改MDK-&gt;Option-&gt;c/c++里面的预定义宏
修改初始化函数
修改使用的引脚。

跟我上面写的修改套路基本一样的。
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2017-8-5 16:12:12 | 显示全部楼层
请问我用的是 USE_USB_OTG_FS端口,下载本程序,修改了MDK-&gt;Option-&gt;c/c++里面的预定义宏后,编译总是提示有四个错误,提示usb_core.c文件中的
TX0_FIFO_FS_SIZE,TX1_FIFO_FS_SIZE,TX2_FIFO_FS_SIZE,TX3_FIFO_FS_SIZE这四个变量没有定义。

但是下载安富莱之前的例程,也用的USE_USB_OTG_FS端口,TX0_FIFO_FS_SIZE~TX3_FIFO_FS_SIZE的几个变量也是没有定义涉及,但是程序确并不报错,不知道啥原因
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2017-8-5 16:39:42 | 显示全部楼层

回 莓可儿 的帖子

莓可儿:请问我用的是 USE_USB_OTG_FS端口,下载本程序,修改了MDK-&gt;Option-&gt;c/c++里面的预定义宏后,编译总是提示有四个错误,提示usb_core.c文件中的
TX0_FIFO_FS_SIZE,TX1_FIFO_FS_SIZE,TX2_FIFO_FS_SIZE,TX3_FIFO_FS_SIZE这四个变量没有定义。

但是下载安富莱之前的例程,也 ..&#160;(2017-08-05 16:12)&#160;
我们的V5和V6板子的例子都是FS做Device,HS做Host了。

下载官方的那个例子,里面有FS对应的Host
回复

使用道具 举报

2

主题

10

回帖

16

积分

新手上路

积分
16
发表于 2018-5-30 15:43:36 | 显示全部楼层
请问移植后,容量支持64g的么?
回复

使用道具 举报

95

主题

297

回帖

582

积分

金牌会员

123

积分
582
发表于 2018-8-3 11:09:26 | 显示全部楼层
经典教程学习学习
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2018-8-7 11:18:16 | 显示全部楼层
这个说明文档有个错误,所有“usbd_usr.c”都应该为“usbh_usr.c”。例子中都是usb host,没有device
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2018-8-7 11:27:55 | 显示全部楼层
再问一个问题:
        result = f_mount(&fs, "2:", 0);        /* Mount a logical drive */
这里为什么盘符是"2:"   ???
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2018-8-7 11:30:23 | 显示全部楼层
caicaptain2 发表于 2018-8-7 11:27
再问一个问题:
        result = f_mount(&fs, "2:", 0);        /* Mount a logical drive */
这里为什么盘符是"2:"   ...

看下diskio.c文件里面的接口函数就明白了。多个存储设备时,设置的不同盘符。
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2018-8-7 11:32:48 | 显示全部楼层
eric2013 发表于 2018-8-7 11:30
看下diskio.c文件里面的接口函数就明白了。多个存储设备时,设置的不同盘符。


/* Definitions of physical drive number for each media */
#define FS_SD                0
#define FS_NAND                1
#define FS_USB                2

是这里定义的吗?   我以为这个例子都是SD卡的文件操作,以为是"0:" ?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2018-8-7 11:37:08 | 显示全部楼层
caicaptain2 发表于 2018-8-7 11:32
/* Definitions of physical drive number for each media */
#define FS_SD                0
#define FS_NAND                1
...

SD卡是0,USB是2
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2018-8-8 08:47:38 | 显示全部楼层
本帖最后由 caicaptain2 于 2018-8-8 09:35 编辑

成功切换到PA11-12脚的Full-speed USB,此处来汇报一下,其中RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); 必须删除,不知何故??
我修改的初始化部分代码:
void USB_OTG_BSP_Init(USB_OTG_CORE_HANDLE *pdev)
{
GPIO_InitTypeDef GPIO_InitStructure;

/*USB HOST */
if (pdev ==  &USB_OTG_Core)
{
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA , ENABLE);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  GPIO_PinAFConfig(GPIOA,GPIO_PinSource11,GPIO_AF_OTG1_FS);
  GPIO_PinAFConfig(GPIOA,GPIO_PinSource12,GPIO_AF_OTG1_FS);
  //RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);  //此行代码必须删除掉,不知何故? 请版主帮忙解释一下?
  RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_OTG_FS, ENABLE);
}
}

void USB_OTG_BSP_EnableInterrupt(USB_OTG_CORE_HANDLE *pdev)
{
NVIC_InitTypeDef NVIC_InitStructure;
/* 先关闭所有和USB相关的中断 */
USB_OTG_BSP_DisableInterrupt();
/* USB Host */
if (pdev == &USB_OTG_Core)
{
  NVIC_InitStructure.NVIC_IRQChannel = OTG_FS_IRQn; //此处有修改
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
  NVIC_Init(&NVIC_InitStructure);
}
}

使用的RTTview监控:
Snipaste_2018-08-08_09-33-46.png

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2018-8-8 10:30:26 | 显示全部楼层
caicaptain2 发表于 2018-8-8 08:47
成功切换到PA11-12脚的Full-speed USB,此处来汇报一下,其中RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCF ...

这个SYSCFG主要是配置外部中断用的,应该没有影响的,你放在其它地方初始化看看。
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2018-8-8 10:53:32 | 显示全部楼层
"    (5) 修改USBH_Usr_cb_TypeDef USR_cb为USBD_Usr_cb_TypeDef USRH_cb。
         此文件的.h文件也要做相应的extern修改。"

这句话是什么意思? 看例程里面,没有这样子更改啊?
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2018-8-8 16:03:23 | 显示全部楼层
很奇怪的现象,不解中。。。以下代码来自usb_conf.h文件。 它们应该是设置缓存的。 如果所有数据都设置大一点,比如4倍,然后程序就死机了。。。
/****************** USB OTG FS CONFIGURATION **********************************/
#ifdef USB_OTG_FS_CORE
#define RX_FIFO_FS_SIZE                          128 //512
#define TX0_FIFO_FS_SIZE                         32  //128
#define TX1_FIFO_FS_SIZE                         32  //128
#define TX2_FIFO_FS_SIZE                         0
#define TX3_FIFO_FS_SIZE                         0
#define TXH_NP_FS_FIFOSIZ                         96 //128
#define TXH_P_FS_FIFOSIZ                          96 //128
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2018-8-8 18:01:59 | 显示全部楼层
caicaptain2 发表于 2018-8-8 10:53
"    (5) 修改USBH_Usr_cb_TypeDef USR_cb为USBD_Usr_cb_TypeDef USRH_cb。
         此文件的.h文件也要 ...

这个没事,估计是我有些地方记录有误。
QQ截图20180808180139.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2018-8-8 18:07:15 | 显示全部楼层
caicaptain2 发表于 2018-8-8 16:03
很奇怪的现象,不解中。。。以下代码来自usb_conf.h文件。 它们应该是设置缓存的。 如果所有数据都设置大一 ...

F4系列的FIFO是固定大小的一块空间,不可超了。
1.png
QQ截图20180808180707.png
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2018-8-9 10:11:28 | 显示全部楼层
本帖最后由 caicaptain2 于 2018-8-9 10:43 编辑

感谢Eric的细心答复,已经可以正常跑起来了。接的PA口,Full-speed的。 实测,
64G USB3.0的U盘也可以正常识别和操作;4G普通U盘也没有问题。
文件格式可以识别exfat。
读写速度基本在500kB/s左右
USBH_Process(&USB_OTG_Core, &USB_Host)这个函数很敏感,必须非常快速的频繁调用。 比如10ms一次。用了FreeRTOS。如果设定100ms一次调用,易死在此函数里面。
实际,系统已含Emwin,RTOS,USB,Fatfs,设置的stack为0x0c00即可,demofat的任务stack设定1024即可(实测占用462word)。毕竟,demo例程中使用的RAM太豪放。
一点遗憾,键入文件指令太快,或者太频繁(<0.5s),(比如列文件清单,)易死机,卡在USB的函数USBH_MSC_Read10(),原因不详。。。。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2018-8-9 13:47:50 | 显示全部楼层
caicaptain2 发表于 2018-8-9 10:11
感谢Eric的细心答复,已经可以正常跑起来了。接的PA口,Full-speed的。 实测,
64G USB3.0的U盘也可以正常 ...

一定要实时调用这个USBH_Process(&USB_OTG_Core, &USB_Host),USB要消息不能得到及时处理。

另外你说的键入文件指令太快问题,换个U盘也许会好很多,现在的这个USB协议栈还是不太给力,不过比之前好很多了。
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2018-8-10 11:20:00 | 显示全部楼层
再提一个问题:如果把usbh_OpenMassStorage(); 放在FreeRTOS创建任务和启动调度器之前,会死在里面。

这是什么原因?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2018-8-10 12:02:20 | 显示全部楼层
caicaptain2 发表于 2018-8-10 11:20
再提一个问题:如果把usbh_OpenMassStorage(); 放在FreeRTOS创建任务和启动调度器之前,会死在里面。

这 ...

打开后,函数USBH_Process(&USB_OTG_Core, &USB_Host)没有得的实时调用。
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2018-8-16 11:02:08 | 显示全部楼层
本帖最后由 caicaptain2 于 2018-8-16 11:13 编辑

继续总结一下子。。。 使用的fatfs13b版本,可以支持exfat

曾经把USBH_Process(&USB_OTG_Core, &USB_Host)和fatfs的文件处理放在两个不同的任务中,如果两个任务优先级不同,U盘识别枚举可以100%成功,但是100%出现FR_DISK_ERR。也就是无法读写文件。如果两个任务优先级相同,U盘识别枚举可以100%成功,但是偶尔FR_DISK_ERR。


参考ST的案列后,把fatfs的文件处理任务放在USBH_Process同一任务中,比如全部文件加载读写,全部放在函数 USBH_USR_MSC_Application中,一切就都OK了。。。。。。。

这说明,USBH_Process和fatfs的函数必须顺序操作,不能互相打断。 另外,函数 USBH_USR_MSC_Application()中可以插入vtaskdelay()之类的阻塞函数,不影响usb的识别和操作。

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2018-8-18 01:31:39 | 显示全部楼层
caicaptain2 发表于 2018-8-16 11:02
继续总结一下子。。。 使用的fatfs13b版本,可以支持exfat

曾经把USBH_Process(&USB_OTG_Core, &USB_Hos ...

回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2019-3-14 15:50:51 | 显示全部楼层
Mark学习了!!
回复

使用道具 举报

36

主题

1445

回帖

1553

积分

至尊会员

积分
1553
发表于 2019-3-14 16:43:40 | 显示全部楼层
caicaptain2 发表于 2018-8-16 11:02
继续总结一下子。。。 使用的fatfs13b版本,可以支持exfat

曾经把USBH_Process(&USB_OTG_Core, &USB_Hos ...

最近移植GD的USB库也是这个现象,最好USB应用放在USBH_USR_MSC_Application()这个函数内部执行,稳定可靠。
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
发表于 2019-3-22 09:44:31 | 显示全部楼层
我有个STM32F105的产品,用官网的老资源,只能识别2GB以下的U盘。怎样可以让F105识别大一点的U盘?

Eric,麻烦给些idea,谢谢。
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2019-3-22 14:21:03 | 显示全部楼层
廷润 发表于 2019-3-22 09:44
我有个STM32F105的产品,用官网的老资源,只能识别2GB以下的U盘。怎样可以让F105识别大一点的U盘?

Eric ...

更换文件系统版本。 Fatfs可以用013b版本
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2019-3-23 02:43:18 | 显示全部楼层
廷润 发表于 2019-3-22 09:44
我有个STM32F105的产品,用官网的老资源,只能识别2GB以下的U盘。怎样可以让F105识别大一点的U盘?

Eric ...

你用的FAT16吗,如果是FAT16,的确是只能2GB。
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
发表于 2019-3-23 09:00:02 | 显示全部楼层
eric2013 发表于 2019-3-23 02:43
你用的FAT16吗,如果是FAT16,的确是只能2GB。

默认那一套是关联FAT16的驱动。
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
发表于 2019-3-23 09:06:22 | 显示全部楼层
caicaptain2 发表于 2019-3-22 14:21
更换文件系统版本。 Fatfs可以用013b版本

官网的老工程找到efsl,是替换这个模块吗?
\Loader\Utilities\Third_Party\efsl
回复

使用道具 举报

2

主题

32

回帖

38

积分

新手上路

积分
38
发表于 2019-3-28 14:32:03 | 显示全部楼层
硬汉!我用的V5的USB-OTG-HS例程俢改成USB-OTG-FS,显示如下:
请选择操作命令:

1 - 显示根目录下的文件列表

2 - 创建一个新文件armfly.txt

3 - 读armfly.txt文件的内容

4 - 创建目录

5 - 删除文件和目录

6 - 读写文件速度测试

> Device Attached

> USBH_USR_ResetDevice

> Full speed device detected

> VID : 090Ch

> PID : 1000h

> Mass storage device connected

> Manufacturer : Kingstonr

> Product : DataTraveler G2

> Serial Number : AA000000000000000148

> Enumeration completed



【2 - CreateNewFile】

程序貌似就卡在这儿了,是还有什么地方没修改好吗?
回复

使用道具 举报

0

主题

12

回帖

12

积分

新手上路

积分
12
发表于 2022-3-1 09:15:30 | 显示全部楼层
caicaptain2 发表于 2018-8-9 10:11
感谢Eric的细心答复,已经可以正常跑起来了。接的PA口,Full-speed的。 实测,
64G USB3.0的U盘也可以正常 ...

插入64G  U盘   写着写着会卡一段时间   再写  
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 13:04 , Processed in 0.389861 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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