打印

USB host例程中的disk_read函数的使用请教

[复制链接]
5257|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wso75839840|  楼主 | 2011-2-13 19:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在官方提供的USB例程中,在调用disk_read函数时,USBH_MSC_Read10函数返回的状态一直是USBH_MSC_BUSY,并不能继续下去。不知道是什么原因?
而调用disk_write却能很好的执行。请知道的朋友指教一下。
DRESULT disk_read (
BYTE drv,  /* Physical drive nmuber (0..) */
BYTE *buff,  /* Data buffer to store read data */
DWORD sector, /* Sector address (LBA) */
BYTE count  /* Number of sectors to read (1..255) */
)
{
  uint8_t status = RES_ERROR;
  if( !count )
  {   
    return RES_PARERR;  /* count不能等于0,否则返回参数错误 */
  }
  switch (drv)
  {
    case 0:  
if(HCD_IsDeviceConnected(&USB_OTG_FS_dev))
{
       if(count==1)            /* 1个sector的读操作 */      
       {            
          do
          {
            status = USBH_MSC_Read10( (uint8_t *)(&buff[0]) ,sector,USBH_MSC_Param.MSPageLength);
            USBH_MSC_HandleBOTXfer();
   //printf("s=%d",status);
          }
          while((status == USBH_MSC_BUSY ) && (HCD_IsDeviceConnected(&USB_OTG_FS_dev)));
       }
       else                    /* 多个sector的读操作 */     
       {
       ;
    }
}                                                                                      
    printf("read over");
if(status == USBH_MSC_OK)
    {
      return RES_OK;
    }
    else
    {
      return RES_ERROR;
    }
case 1:
   break;
    case 2:
   break;
    default:
      break;
  }
  
  return RES_ERROR;
}
沙发
lycanthia| | 2014-1-15 15:47 | 只看该作者
遇到同样的问题了,请问楼主之前怎么解决的.

使用特权

评论回复
板凳
insect2006| | 2014-10-4 16:33 | 只看该作者
我也遇到同样的问题,求高人解答

使用特权

评论回复
地板
想做大牛的小马| | 2014-10-5 09:46 | 只看该作者
diskread是scsi命令通过usb发给device执行并返回sector里的数据,
device是什么?检查一下device的裸读写是否正常

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

39

帖子

0

粉丝