之前測(cè)試通過(guò),單片機(jī)與CH375可通訊?,F(xiàn)U盤還未連接時(shí),調(diào)用CH375DiskConnect,CH375DiskStatus=02H??
USB口的D+,D-線與CH375是直連的,還是做了一些處理 未連接U盤時(shí),用萬(wàn)用表測(cè)量一下D+,D-的電平
USB口的D+,D-線與CH375是直連的 未連接U盤時(shí),D+,D-間電平為0,D+ D-對(duì)地也都是0
這很正常,就是正確的狀態(tài).02表示已經(jīng)連接,但是為進(jìn)行初始化,可以繼續(xù)執(zhí)行CH375DiskReady
U盤還未連接時(shí),調(diào)用CH375DiskConnect,CH375DiskStatus=02H??
這種情況下CH375DiskStatus應(yīng)該是0x00H,DiskConnect的返回值是多少,以這個(gè)返回做為是否連接的依據(jù) 另外,CH375的中斷線定義正確么
不好意思看錯(cuò)了. 你可以查看一下頭文件中函數(shù)的原型: xQueryInterrupt( ) 根據(jù)這個(gè)原型就很好調(diào)試了
1、DiskConnect的返回值是0,CH375DiskStatus為2 2、#define CH375_INT_WIRE INT0 3、應(yīng)如何隨時(shí)判斷U盤連接狀態(tài)? 4、xQueryInterrupt在U盤連接時(shí)無(wú)返回,U盤拔出后才返回
#define CH375_INT_WIRE INT0 根據(jù)自己的硬件情況定義中斷引腳. 插入U(xiǎn)盤后,會(huì)有中斷產(chǎn)生,產(chǎn)生中斷后讀出中斷狀態(tài),如果連接則返回DISK_CONNECT 測(cè)試一下,當(dāng)插入U(xiǎn)盤后,看中斷引腳是否有變化
中斷連接到單片機(jī)的P3.2/INT0
插入U(xiǎn)盤后,INT#變?yōu)榈碗娖?,查詢方式,不中?/p>
插入U(xiǎn)盤后,xQueryInterrupt未返回
WAIT_DISK_IN: LCALL xQueryInterrupt ;該調(diào)用僅在有U盤插拔后才會(huì)返回 MOV DPTR, #CH375DiskStatus ;查詢CH375中斷并更新中斷狀態(tài),等待U盤插入 MOVX A, @DPTR XRL A, #DISK_CONNECT JZ DISK_IN_NOW ;U盤已經(jīng)插入 SJMP WAIT_DISK_IN DISK_IN_NOW: CLR P1.7
U盤插入后,P1.7仍為1
插入U(xiǎn)盤后,INT#變?yōu)榈碗娖?,查詢方? 既然有低電平,說(shuō)明CH375產(chǎn)生中斷信號(hào)了,那應(yīng)該能讀到中斷狀態(tài).發(fā)送查詢中斷的命令,中斷取消.返回中斷狀態(tài) 為什么還沒有返回呢?
是不是和U盤有沒有關(guān)系 換一個(gè)U盤后,INT#變?yōu)榈碗娖?,xQueryInterrupt能返回,測(cè)試中P1.7=0 再換回原來(lái)U盤,INT#也不變低電平了 可以返回的U盤也不穩(wěn)定,有時(shí)候INT#可以變低電平,有時(shí)連接U盤后仍為高電平
USB接口上的VCC上有沒有接47UF--100UF的電容?必須要接,U盤功耗較大,否則檢查插入可能有問題 對(duì)原來(lái)不行的U盤,你可以手動(dòng)復(fù)位一下MCU,看看是否能檢測(cè)到
現(xiàn)在INT#總是不變低電平了……
不知道怎么的,現(xiàn)在INT#總是高電平了
USB接口上的VCC上接了100UF的電容,電路是按CH375的PDF里并口方式接的。
VCC供電多少?UD+在插上U盤后電壓是多少?