CH375初始化,用DISK_INIT命令,返回中斷0x15,這是為什么?
UINT8 mInitDisk( void ) { /* 初始化磁盤 */ UINT8 Status,i,j=0; CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷, 獲取中斷狀態(tài) */ Status = CH375_RD_DAT_PORT( ); if ( Status == USB_INT_DISCONNECT ) return( Status ); /* USB設(shè)備斷開 */ CH375_WR_CMD_PORT( CMD_DISK_INIT ); /* 初始化USB存儲(chǔ)器 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status != USB_INT_SUCCESS ) return( Status ); /* 出現(xiàn)錯(cuò)誤 */ while(1){j++; CH375_WR_CMD_PORT( CMD_DISK_SIZE ); /* 獲取USB存儲(chǔ)器的容量 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ) break; /* 出現(xiàn)錯(cuò)誤 */ else { mDelaymS( 250 ); CH375_WR_CMD_PORT( CMD_DISK_R_SENSE ); /* 獲取USB存儲(chǔ)器的容量 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ) /* 出現(xiàn)錯(cuò)誤 */ continue; else return (Status); } if(j==5) return(Status); } for(i=0;i!=5;i++){ printf("Ready\n"); CH375_WR_CMD_PORT( CMD_DISK_READY ); /* 獲取USB存儲(chǔ)器的容量 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ) break; /* 出現(xiàn)錯(cuò)誤 */ } return( 0 ); /* U盤已經(jīng)成功初始化 */ } 你用上面的這段初始化函數(shù)試下看還會(huì)不會(huì)出現(xiàn)你說的問題
我用的是這段函數(shù),和你的差不多
unsigned char InitDisk(void) { unsigned char stat; unsigned char *buff; unsigned char i; buff = DataBuff; WriteCmd(CMD_GET_STATUS); stat = ReadData(); if(stat == USB_INT_DISCONNECT) return(stat); //USB設(shè)備斷開 WriteCmd(CMD_DISK_INIT); //初始化USB存儲(chǔ)器 stat = GetInt(); if(stat != USB_INT_SUCCESS) //!!我調(diào)試的時(shí)候,發(fā)現(xiàn)程序是在這里返回的?。? return(stat); WriteCmd(CMD_DISK_SIZE); //獲取USB存儲(chǔ)器容量 stat = GetInt(); if(stat != USB_INT_SUCCESS) { delay_ms(250); WriteCmd(CMD_DISK_SIZE); //再次嘗試 stat = GetInt(); } if(stat != USB_INT_SUCCESS) return(stat); WriteCmd(CMD_RD_USB_DATA); i = ReadData(); for(; i > 0; i--) *buff++ = ReadData(); //容量數(shù)據(jù),參看數(shù)據(jù)手冊(cè)5-6 return(0); //初始化成功 }
如果有USB設(shè)備插著,返回0X15是正確的
有USB設(shè)備插著,返回0X15是正確的,但如果發(fā)送命令了DISK_INIT,返回中斷還會(huì)是0x15么?
應(yīng)該返回的是0X14。
試了一下,還是不行 我用的是mega8,串口方式的 前面的版本號(hào)查詢。測(cè)試工作狀態(tài),都可以完成 U盤插上,也返回中斷0x15 就是初始化DISK_INIT,返回仍舊是0x15,換了其他U盤,仍是無(wú)果 ......