当我插入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( );
等待中断->你的程序中看不出等待中断这个过程。 等待中断,只要在这加延时就可以吗?多长时间的延时?
天,你这个结构的话这儿必须是死等中断产生.你有没有看过官方提供的示例代码?如果没有看过的话建议你去看看再来写.否则我真的说不清.
能看看你的程序吗?看看你是怎么写的,谢谢了
自己去置顶贴下示例代码!!!如果你想搞开发,不要轻易问别人要源程序,求人不如求己.你连这个芯片如何运作,该如何写程序都没有概念就在这儿问人,还直接问人要代码,给了你那还不是你的.