在stm32 USB MSC设备应用程序中使用闪存驱动器而不是microSD

问题描述

我想使用闪存而不是SD卡替换stm32 msc设备实例。 为此,我在示例中对usbd_storage.c文件进行了一些更改。 我尝试使用USBH_MSC_Read函数,而不是CubeMX应用程序中使用的BSP_SD_WriteBlocks_DMA函数,但没有得到任何结果。 当我使用USB电缆连接到PC时,我将设备视为新驱动程序,但收到警告“请在USB驱动器中插入磁盘”。

我该怎么做才能解决此问题?我正在等待您的帮助。

////////
#define STORAGE_LUN_NBR                  1
#define STORAGE_BLK_NBR                  0x64 
#define STORAGE_BLK_SIZ                  0x200 //512

int8_t STORAGE_GetCapacity(uint8_t lun,uint32_t * block_num,uint16_t * block_size)
{

  int8_t ret = -1;
  *block_num  = STORAGE_BLK_NBR;
  *block_size = STORAGE_BLK_SIZ;

  return ret = 0;
}

int8_t STORAGE_IsReady(uint8_t lun)
{
  static int8_t prev_status = 0;
  int8_t ret = -1;
  if(USBH_MSC_IsReady(&hUSBHostFS))
  {
   ret = 0;
  } 
  return ret;
}

int8_t STORAGE_Read(uint8_t lun,uint8_t * buf,uint32_t blk_addr,uint16_t blk_len)
{
  int8_t ret = -1;
  USBH_StatusTypeDef  status = USBH_OK;
  status = USBH_MSC_Read(&hUSBHostFS,lun,blk_addr,buf,blk_len);
  if(status == USBH_OK)
  {
    ret = 0;
  }
  return ret; 
}

int8_t STORAGE_Write(uint8_t lun,uint16_t blk_len)
{
  int8_t ret = -1; 
  USBH_StatusTypeDef  status = USBH_OK;
  status = USBH_MSC_Write(&hUSBHostFS,blk_len);
  if(status == USBH_OK)
  {
   ret = 0;
  }
  return ret;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)