求助,检测不到USB容量大小

当我插入U盘是,连接24脚的ACT亮,说明USB设备连接。但是无法检测容量,当执行到 i = CH375DiskSize( )时错误,返回2C.此时我的VD-为0V,VD+为3V,USB的VCC为4.82V。试过IBM 的U盘和一杂牌U盘,效果一样,请帮忙,不知道怎么办?

CH375_WR_CMD_PORT( CMD_GET_STATUS ); Status = CH375_RD_DAT_PORT( ); 返回值是2C,我想是没有连接上,USB连接上VD-,VD+为多少?


CH375_WR_CMD_PORT(CMD_SET_USB_MODE ); CH375_WR_DAT_PORT(0X06);

CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 产生操作完成中断, 获取中断状态 */ Status = CH375_RD_DAT_PORT( ); 现在返回是15H了


可是执行了

CH375_WR_CMD_PORT( CMD_DISK_INIT ); /* 初始化USB存储器 */ CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 产生操作完成中断, 获取中断状态 */ Status = CH375_RD_DAT_PORT( );

返回值还是15H,没有对USB设备配置,为什么?


超时错误,再次置工作模式为6,会重新检测到优盘,即跳转到CH375初始化再来一次。


刚上电VD-电压为0,VD+为3V,检测到连接VD-电压为0,VD+为3V,配置USB也是VD-电压为0,VD+为3V


CH375_WR_CMD_PORT( CMD_DISK_INIT ); /* 初始化USB存储器 */ CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 产生操作完成中断, 获取中断状态 */ Status = CH375_RD_DAT_PORT( ); 返回是2C,超时


不是说过了吧,超时就再置一次工作模式6。会重新检测到优盘插入


CH375_WR_DAT_PORT(0X07);mDelay100mS( ); mDelay100mS( ); mDelay100mS( ); mDelay100mS( ); mDelay100mS( ); mDelay100mS( ); mDelay100mS( ); mDelay100mS( ); mDelay100mS( ); mDelay100mS( ); mDelay100mS( ); mDelay100mS( ); mDelay100mS( ); mDelay100mS( ); mDelay100mS( ); CH375_WR_CMD_PORT(CMD_SET_USB_MODE ); CH375_WR_DAT_PORT(0X06);

CH375_WR_CMD_PORT( CMD_DISK_INIT ); /* 初始化USB存储器 */ CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 产生操作完成中断, 获取中断状态 */ Status = CH375_RD_DAT_PORT( ); 是这样吗?可是返回还是2C?请高手帮忙


你有点搞笑啊,你写完工作模式后,要等待0x15中断后才可以写DISK_INIT命令啊。去面壁思过。估计你开始也是这样子的。优盘我没有遇到过超时错误。


要等待0x15中断后才可以写DISK_INIT命令啊。我没发前面的程序,上面的程序是在0x15中断后发的


CH375_WR_CMD_PORT(CMD_SET_USB_MODE ); CH375_WR_DAT_PORT(0X06); 等待中断,必须为0x15 CH375_WR_CMD_PORT( CMD_DISK_INIT ); /* 初始化USB存储器 */ 等待中断->你的程序中看不出等待中断这个过程。 CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 产生操作完成中断, 获取中断状态 */ Status = CH375_RD_DAT_PORT( );


等待中断->你的程序中看不出等待中断这个过程。 等待中断,只要在这加延时就可以吗?多长时间的延时?


天,你这个结构的话这儿必须是死等中断产生.你有没有看过官方提供的示例代码?如果没有看过的话建议你去看看再来写.否则我真的说不清.


能看看你的程序吗?看看你是怎么写的,谢谢了


自己去置顶贴下示例代码!!!如果你想搞开发,不要轻易问别人要源程序,求人不如求己.你连这个芯片如何运作,该如何写程序都没有概念就在这儿问人,还直接问人要代码,给了你那还不是你的.


只有登录才能回复,可以选择微信账号登录