• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32F4系列自身内部FLASH模拟U盘怎么实现

hangtao 2019-03-19 浏览量:1774
STM32F4系列自身内部FLASH模拟U盘怎么实现
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 首先要实现STM32与PC之间USB通信,然后使用U盘的设备描述符,这样PC会将它识别为一个大容量存储设备,然后STM32按照PC发过来的命令读写flash即可
    • 发布于 2019-03-19
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:8
  • 通过读写内部Flash的驱动函数,调用文件系统的函数,模拟文件系统的操作
    • 发布于2019-03-19
    • 举报
    • 评论 0
    • 1
    • 0

  • 可以在jlink里面设置,要是能USB外设,配置大容量存储设备,配置USB时钟,修改程序堆栈大小,创建U盘空间,最后是显示读写

    /*******************************************************************************
    * Function Name  : STORAGE_Read_FS
    * Description    : 
    * Input          : None.
    * Output         : None.
    * Return         : None.
    *******************************************************************************/
    int8_t STORAGE_Read_FS (uint8_t lun 
                            uint8_t *buf 
                            uint32_t blk_addr                       
                            uint16_t blk_len)
    {
      /* USER CODE BEGIN 6 */ 
    uint32_t nii;
    for(n = 0;n < blk_len;n++)
    {
    for(ii = 0;ii<STORAGE_BLK_SIZ;ii++)
    {
    buf[n*STORAGE_BLK_SIZ + ii] = msc_data[blk_addr+n][ii];
    }
    }
      return (USBD_OK);
      /* USER CODE END 6 */ 
    }


    /*******************************************************************************
    * Function Name  : STORAGE_Write_FS
    * Description    :
    * Input          : None.
    * Output         : None.
    * Return         : None.
    *******************************************************************************/
    int8_t STORAGE_Write_FS (uint8_t lun 
                             uint8_t *buf 
                             uint32_t blk_addr
                             uint16_t blk_len)
    {
      /* USER CODE BEGIN 7 */ 
    uint32_t nii;
    for(n = 0;n < blk_len;n++)
    {
    for(ii = 0;ii<STORAGE_BLK_SIZ;ii++)
    {
    msc_data[blk_addr+n][ii] = buf[n*STORAGE_BLK_SIZ+ii];
    }
    }
      
    return USBD_OK;
      /* USER CODE END 7 */ 
    }


    • 发布于2019-03-19
    • 举报
    • 评论 0
    • 1
    • 0

  • 可以的,但是这样做寿命不长,而且容量小,可以用25系列flash做,例程就是用这个的
    • 发布于2019-03-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 那么 U盘的大小是很小的了,是不是mbed的烧写方式呢,这里是要有一个内部的bootloader来做个文件系统的
    • 发布于2019-03-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 是在Flash中做一个文件系统,能够用来储存不同的文件类型。
    • 发布于2019-03-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以是可以的,只是能存储Flash大小的文件,

    应该是在芯片中有一个bootloader进行转换的。

    • 发布于2019-03-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 是将FLASH作为一种介质,挂接文件系统,然后模拟U盘。


    • 发布于2019-03-20
    • 举报
    • 评论 0
    • 0
    • 0

  • Flash也是一种存储,也是可以当U盘的,要使用USB接口把Flash模拟成U盘的标识符
    • 发布于2019-03-21
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32F4系列自身内部FLASH模拟U盘怎么实现