用AT51單片機(jī)以并口方式連接CH375V,主機(jī)方式,
初始化、讀U盤容量都能成功,也能執(zhí)行DISK_READ和DISK_RD_GO命令,一次讀出1個扇區(qū)或2個扇區(qū)的數(shù)據(jù)。但讀完數(shù)據(jù)后,最后一個中斷收到1F。然后就不能進(jìn)行任何操作。
不知道是什么原因,請高手指點(diǎn):)
用AT51單片機(jī)以并口方式連接CH375V,主機(jī)方式,
初始化、讀U盤容量都能成功,也能執(zhí)行DISK_READ和DISK_RD_GO命令,一次讀出1個扇區(qū)或2個扇區(qū)的數(shù)據(jù)。但讀完數(shù)據(jù)后,最后一個中斷收到1F。然后就不能進(jìn)行任何操作。
不知道是什么原因,請高手指點(diǎn):)
這是我的讀扇區(qū)程序 void ReadPage(unsigned long add,unsigned char *buf) { unsigned char data Blknum,i;
CMD(); USB = DISK_READ; //read sector DATA(); USB = (unsigned char)(add); //LBA USB = (unsigned char)(add>>8); USB = (unsigned char)(add>>16); USB = (unsigned char)(add>>24); USB = 1; //sector number
for(Blknum=0;Blknum<8;Blknum++) { if( GetInt()==USB_INT_DISK_READ ) { CMD(); USB = RD_USB_DATA; DATA(); D(1); //delay to avoid read 1D i=USB; printuf("i=%x\n",i);//rest data number while(i) //read a block data { *buf=USB; //printuf("data:%x\n",*buf); buf++; i--; } CMD(); USB = DISK_RD_GO; } else printu("no read signal!\n"); } if( (Blknum==8)&&(GetInt()==USB_INT_SUCCESS) ) printu("read sector ok!\n"); else printu("read sector error\n"); }
你給我們CH375V供的電壓是多少?
3.3V,但實(shí)際測得3.38V,應(yīng)該不會有影響吧
我換了一個U盤,就沒有問題了,可以連續(xù)讀扇區(qū)。
開始用用CH375V讀一個KINGSTONE 1G的U盤,初始化就不認(rèn),只能檢測到插入和拔出狀態(tài)。我自己分析可能是U盤不支持?jǐn)?shù)據(jù)端點(diǎn)包長度為64字節(jié),不知道是不是這個原因;
后來換了一個U盤(SD卡+讀卡器),能復(fù)位、初始化設(shè)置主機(jī)狀態(tài),并能讀出容量大小,但讀扇區(qū)時(shí),讀完后返回失敗操作狀態(tài)1F,然后CH375就沒反應(yīng)了。我換了一個U盤就好了,能返回操作陳功的狀態(tài)。不知道問題出在哪,怎樣去找問題。
還請高手指點(diǎn):)
你實(shí)際使用的時(shí)候建議你換CH375B我們的最新的芯片來操作,或者你在把電壓抬高點(diǎn)到3。6V左右你看下可以不可以操作