创龙科技
直播中

陈藜文

8年用户 213经验值
私信 关注

USB_HOST_MSC例程怎么格式化SD卡?

目前开发的产品已经到后期阶段,有一个功能是格式化SD卡,不知道怎么实现。
硬件使用了USB HUB芯片,DSP通过USB访问SD卡,配合FATFS读写文件都已经完成。
在例程USB_HOST_MSC的disk_ioctl( )函数中,只提供了一个响应CTRL_SYNC,因此无法完成格式化
  • // 磁盘 IO
  • DRESULT disk_ioctl(BYTE drv, BYTE ctrl, void *buff)
  • {
  •     if(USBStat & STA_NOINIT)
  •     {
  •         return(RES_NOTRDY);
  •     }
  •     switch(ctrl)
  •     {
  •         case CTRL_SYNC:
  •             return(RES_OK);
  •         default:
  •             return(RES_PARERR);
  •     }
  • }

回帖(14)

张虎豹

2019-10-25 08:38:26
完整的还应该包括对GET_SECTOR_COUNT,GET_SECTOR_SIZE,GET_BLOCK_SIZE的响应。代码如下:

  • DRESULT disk_ioctl(BYTE drv, BYTE ctrl, void *buff)
  • {
  •     if(USBStat & STA_NOINIT)
  •     {
  •         return(RES_NOTRDY);
  •     }

  •     switch(ctrl)
  •     {
  •            /* Make sure that no pending write process */
  •         case CTRL_SYNC:
  •             return(RES_OK);
  •             /* Get number of sectors on the disk (DWORD) */
  •         case GET_SECTOR_COUNT:
  •                 *(DWORD*)buff = 0;
  •                 return(RES_OK);
  •                 /* Get R/W sector size (WORD) */
  •         case GET_SECTOR_SIZE:        // 扇区大小固定为512
  •                 *(WORD*)buff = 512;
  •                 return(RES_OK);
  •                 /* Get erase block size in unit of sector (DWORD) */
  •         case GET_BLOCK_SIZE:
  •                 *(DWORD*)buff = 512;
  •                 return(RES_OK);
  •         default:
  •             return(RES_PARERR);
  •     }
  • }

复制代码
已知GET_SECTOR_SIZE和GET_BLOCK_SIZE固定为扇区大小,即512。

我现在遇到的问题是,对GET_SECTOR_COUNT的响应。其功能是获取总扇区数。
切盼高人指点!






这个应该是需要 USB 读卡器返回相关信息的@Lewis 熊工 来看下吧 
举报

王慕涛

2019-10-25 08:46:06
引用: 尼克wo 发表于 2019-10-25 17:29
这个应该是需要 USB 读卡器返回相关信息的@Lewis 熊工 来看下吧 


这个应该是需要 USB 读卡器返回相关信息的
来看下吧
举报

刘英

2019-10-25 08:53:53


,熊工帮帮忙!
举报

宣苗

2019-10-25 09:00:03


@Lewis ,熊工帮帮忙!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分