发 帖  
原厂入驻New
申请华秋企业认证 多层板首单免费打样!
30s提交资料,10分钟通过审核(免费赔付+顺丰包邮)>>立即报名
USB_HOST_MSC例程怎么格式化SD卡?
123 SD卡 DSP USB
分享
目前开发的产品已经到后期阶段,有一个功能是格式化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);
  •     }
  • }
0
2019-10-25 08:26:49   评论 分享淘帖 邀请回答

相关问题

14个回答
完整的还应该包括对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:38:26 评论

举报

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


这个应该是需要 USB 读卡器返回相关信息的
来看下吧
2019-10-25 08:46:06 评论

举报



斌哥,能不能请熊工帮我解决一下这个问题?急啊
2019-10-25 09:12:19 评论

举报

建议通过电脑获取这个参数直接添加到程序里,否则还要在USB的驱动里实现这个功能,这样就比较麻烦
2019-10-25 09:32:06 评论

举报



(⊙o⊙)…这不是解决之道吧
我现在是实现产品的功能,不是做实验。
用户用什么容量的卡,根本不可能知道。
麻烦也要实现啊

那只能自己实现这部分驱动 
2019-10-25 09:47:13 评论

举报

ncuweurwre 发表于 2019-10-25 18:38
那只能自己实现这部分驱动 


那只能自己实现这部分驱动
2019-10-25 09:55:54 评论

举报



我要是有能力自己实现,就不会在这里发帖求助了
2019-10-25 10:04:43 评论

举报

.pcb{margin-right:0}问题已经得到解决。
SD卡总扇区数在物理0扇区地址0x01CA~01CD的四个字节。
通过disk_read()函数读取,然后计算即可。

r
2019-10-25 10:16:06 评论

举报

2019-10-25 10:23:48 评论

举报

2019-10-25 10:34:18 评论

举报

我也作这个,做产品,能交流下吗,13417388251r
2019-10-25 10:57:42 评论

举报

只有小组成员才能发言,加入小组>>

32个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

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