1、U盤連接后,ACT引腳的LED亮一下后就滅,帶U盤復(fù)位后,LED常亮
2、程序在調(diào)用某些庫函數(shù)后好象不返回,例如xQueryInterrupt,CH375FileOpen。在調(diào)用這些函數(shù)的前后增加了檢測信息,發(fā)現(xiàn)進(jìn)入調(diào)用,但沒有返回
3、RSTI引腳懸空是否可以,CH375不接任何復(fù)位電路,是否可以正常復(fù)位。
謝謝
1、U盤連接后,ACT引腳的LED亮一下后就滅,帶U盤復(fù)位后,LED常亮
2、程序在調(diào)用某些庫函數(shù)后好象不返回,例如xQueryInterrupt,CH375FileOpen。在調(diào)用這些函數(shù)的前后增加了檢測信息,發(fā)現(xiàn)進(jìn)入調(diào)用,但沒有返回
3、RSTI引腳懸空是否可以,CH375不接任何復(fù)位電路,是否可以正常復(fù)位。
謝謝
xQueryInterrupt是沒有返回,你可以看下頭文件的聲明,里面是改變了全局變量.CH375FileOpen是有返回值的,你所說的沒有返回是不指無法返回出現(xiàn)死機(jī)現(xiàn)象?CH375FileOpen有沒有執(zhí)行成功? RSTI引腳可以懸空.可以正常的復(fù)位.
CH375FileOpen沒有執(zhí)行成功,是死機(jī)現(xiàn)象 xQueryInterrupt也是這樣
那就從剛開始查起,既然xQueryInterrupt都無法通過,就不用去做CH375FileOpen了,函數(shù)原型: void xQueryInterrupt( void ) /* 查詢CH375中斷并更新中斷狀態(tài) */ { #ifdef CH375_INT_WIRE /* 查詢中斷引腳 */ while ( CH375_INT_WIRE ); /* 如果CH375的中斷引腳輸出高電平則等待 */ #else /* 對于CH375B芯片還可以查詢命令端口的位7 */ while ( CH375_CMD_PORT & 0x80 ); /* 查詢CH375B的命令端口的位7為1說明中斷引腳輸出高電平則等待 */ #endif CH375_CMD_PORT = CMD_GET_STATUS; /* 獲取當(dāng)前中斷狀態(tài) */ CH375IntStatus &= 0x80; if ( CH375IntStatus ) CH375IntStatus = 0; /* 操作無意義,用于至少延時(shí)2uS */ CH375IntStatus = CH375_DAT_PORT; /* 獲取中斷狀態(tài) */ if ( CH375IntStatus == USB_INT_DISCONNECT ) CH375DiskStatus = DISK_DISCONNECT; /* 檢測到USB設(shè)備斷開事件 */ else if ( CH375IntStatus == USB_INT_CONNECT ) CH375DiskStatus = DISK_CONNECT; /* 檢測到USB設(shè)備連接事件 */ } 出現(xiàn)死機(jī)現(xiàn)象要么中斷引腳一直是高電平,要么命令端口第7為一直為1 否則不會(huì)出現(xiàn)死機(jī)現(xiàn)象. 測試命令能不能通過?CH375LibInit( )函數(shù)是否能通過?檢查中斷引腳是否一直為高電平,測試插入U(xiǎn)盤后UD+,UD-電壓為多少.
能通過CH375LibInit 連接U盤后,INT一直為高電平,UD+ UD-電壓為3.2V
因?yàn)橹袛嘁_其實(shí)一直在使用的,問題就出現(xiàn)中斷引腳一直為高. 你做一下測試,把CH375 中斷引腳翹起來后,當(dāng)你插入U(xiǎn)盤后是否會(huì)變低.
把CH375 中斷引腳翹起來?是不是不連接這個(gè)引腳?
對,懸空.
懸空后為高電平,連接U盤后為低電平 INT引腳連接STC89C58的INT0
現(xiàn)在連接U盤后,INT狀態(tài)不變,INT懸空后,連接U盤可變?yōu)榈碗娖? 這個(gè)問題如何解決,是哪的問題呢?
如果單片機(jī)檢測不到中斷的話,那可能是你單片機(jī)的INT0引腳有問題,檢查焊接上面有沒有問題.
檢查過了,焊接沒有問題 INT懸空后可以低電平,是不是程序中出了問題? 我看其他帖子中有這個(gè)問題: 1、試試不定義CH375_INT_WIRE,這樣編譯會(huì)出錯(cuò),因?yàn)閤QueryInterrupt里會(huì)判斷這個(gè)位,是否要修改這個(gè)判斷?
2、如何用測試命令測試硬件是否好用?是CHECK_EXIST命令嗎?不知如何用這個(gè)命令,怎么測試?請指教。
3、MCU的IO設(shè)置有問題,我的MCU不用設(shè)置IO的。
4、是否是硬件強(qiáng)制將INT拉高,這個(gè)不知道怎么判斷,INT直接連接STC89C58的INT0,沒有其他的連接。
若程序不掃描中斷狀態(tài),比如出錯(cuò)后,無操作,等待復(fù)位時(shí),連接U盤后,INT為低電平,U盤拔出后仍為低電平,但ACT引腳狀態(tài)隨U盤的連接或拔出變化。
程序不查詢中斷,U盤連接后一直為低電平,是否能說明硬件無問題。INT一直為高,是程序的原因?
上面你自己也說了INT腳懸空之后可以是低電平,那就說明肯定是你軟件上面有問題,要么你的I/O引腳配置出錯(cuò)要么就是中斷引腳定義有問題.
I/O配置,是指哪些相關(guān)引腳?MCU沒有I/O配置 中斷引腳定義:CH375_INT_WIRE EQU INT0
進(jìn)入xQueryInterrupt后,查詢不到中斷
請幫忙檢查下程序,謝謝