[求助]CH375DiskConnect

VCC供電5V,插上U盤后,UD+為3.1V

U盤插入后,INT#不變低,但xQueryInterrupt有返回,CH375DiskStatus為1


有沒有嘗試過不定義中斷信號(hào)線而直接查詢命令端口的方式(詳細(xì)見頭文件中xQueryInterrupt()函數(shù)).


你好好測試一下.說的現(xiàn)象根本就不對(duì).如果不變低怎么會(huì)返回的呢?你仔細(xì)看一下這個(gè)函數(shù)xQueryInterrupt. 仔細(xì)測試一下,別一會(huì)這樣的現(xiàn)象一會(huì)那樣的現(xiàn)象,我們也沒辦法解決了


測試一上午,結(jié)果如下“ 1、在程序未調(diào)用xQueryInterrupt時(shí)/之前,U盤插入后,INT#變低,調(diào)用xQueryInterrupt后,INT#不變低 2、在程序里自己添加的xQueryInterrupt子程序,無論是否定義INT引腳,都能檢測到U盤的連接/斷開,但示波器檢測不到INT#變低,程序如下: MxQueryInterrupt: ; MOV DPTR, #CH375_CMD_PORT ; MOVX A, @DPTR ; JB ACC.7, MxQueryInterrupt ;ACC.7=1,INT#=1等待

JB CH375_INT_WIRE, $

MOV DPTR, #CH375_CMD_PORT MOV A, #CMD_GET_STATUS MOVX @DPTR, A LCALL D1MS MOV DPTR, #CH375_DAT_PORT MOVX A, @DPTR MOV DPTR, #CH375IntStatus MOVX @DPTR, A MOV DPTR, #CH375DiskStatus CJNE A, #ERR_USB_DISCON,MQUERY_INT_DISCON MOV A, #DISK_DISCONNECT ;檢測到USB設(shè)備斷開事件 MOVX @DPTR, A CPL P1.7 RET MQUERY_INT_DISCON: CJNE A, #ERR_USB_CONNECT,MQUERY_INT_CONNECT MOV A, #DISK_CONNECT ;檢測到USB設(shè)備連接事件 MOVX @DPTR, A CPL P1.6 RET MQUERY_INT_CONNECT: RET

3、調(diào)用CH375DiskConnect不能檢測到U盤的連接/斷開,還未插U盤時(shí),就返回U盤已連接。

4、在發(fā)送測試命令,測試數(shù)據(jù)時(shí),D1 D2的信號(hào)與其他位不同,但測試命令返回?cái)?shù)據(jù)正確。 D1 D2波形圖:

http: 中間多了一次翻轉(zhuǎn)


CH375LibInit之后,死循環(huán)等待,插入U(xiǎn)盤,INT是否為0.自己寫的函數(shù)是查詢的命令端口,沒有去查詢INT引腳. 所以可以查詢到U盤連接 INT引腳沒有變?yōu)?,可能是外部電路導(dǎo)致的,比如被強(qiáng)上拉為1.可以把CH375的INT引腳翹起來,不和PCB相連,看是否正常. D1,D2波形不對(duì),測試命令通過,有很多可能,有沒有訪問XRAM?總線上有沒有其他器件?是否為其他器件比如外部RAM的數(shù)據(jù)?看D0--D7要和CS結(jié)合一起,如果多反轉(zhuǎn)一次是在CS為高時(shí)反轉(zhuǎn),則不影響. 可以進(jìn)行兩次測試,測試數(shù)據(jù)為0X55,返回0XAA,測試0XAA,返回0X55,確保每個(gè)數(shù)據(jù)線都可以正常測試出來. 如果這兩個(gè)數(shù)據(jù)均可以測試通過,則說明讀寫沒有問題


1、一直發(fā)送測試命令時(shí),死循環(huán),插入U(xiǎn)盤,INT變?yōu)? 2、自己寫的函數(shù)中,JB CH375_INT_WIRE, $ 不是查詢INT腳嗎?也可以查詢到U盤連接 3、允許訪問XRAM,總線上還有另一片單片機(jī),但目前那個(gè)單片機(jī)沒有接 4、CS一直為低電平 5、循環(huán)發(fā)0x55 0xAA,只測試到P1.5的翻轉(zhuǎn),即第一個(gè)數(shù)據(jù)測試通過,P1.6沒有翻轉(zhuǎn) 不知道程序有沒有錯(cuò)誤,如下:單片機(jī)STC12C5A60S2,庫CH375HFA.LIB CHECK_CH375: MOV DPTR, #CH375_CMD_PORT ;命令口地址 MOV A, #CMD_CHECK_EXIST MOVX @DPTR, A ;測試CH375是否正常工作,可選操作 MOV DPTR, #CH375_DAT_PORT ;數(shù)據(jù)口地址 MOV A, #0AAH MOVX @DPTR, A ;寫入測試數(shù)據(jù) CPL A MOV R7, A ;取反數(shù)據(jù) MOVX A, @DPTR ;返回?cái)?shù)據(jù)應(yīng)該是測試數(shù)據(jù)取反 XRL A, R7 JNZ CHECK_CH375 CPL P1.5 MOV DPTR, #CH375_CMD_PORT ;命令口地址 MOV A, #CMD_CHECK_EXIST MOVX @DPTR, A ;測試CH375是否正常工作,可選操作 MOV DPTR, #CH375_DAT_PORT MOV A, #055H MOVX @DPTR, A CPL A MOV R7, A MOVX A, @DPTR XRL A, R7 JNZ CHECK_CH375 CPL P1.6 SJMP CHECK_CH375


STC12C5A60S2多少M(fèi)晶振? 讀寫函數(shù)之間要有延時(shí).命令與命令之間,命令與數(shù)據(jù)之間,.數(shù)據(jù)與數(shù)據(jù)之間都需要延時(shí),具體時(shí)間參考CH375DS1 這樣吧,建議你電話技術(shù)支持02552638370


1、32M晶振,增加延時(shí)后,循環(huán)發(fā)測試命令,都正常 2、在xQueryInterrupt中,用JB CH375_INT_WIRE, $ 可以檢測到U盤的連接/斷開,但I(xiàn)NT不變低 3、CH375LibInit之后,死循環(huán)等待,插入U(xiǎn)盤,INT可以變低 4、CH375DiskConnect的函數(shù)原型是什么? 5、除了調(diào)用CH375DiskConnect,如何才能隨時(shí)檢測U盤狀態(tài),不是等待連接或斷開時(shí)才有返回? 6、GET_STATUS命令能檢測到U盤的連接/斷開,能否不調(diào)用 CH375DiskConnect或xQueryInterrupt,也不考慮INT腳變化,用此命令查詢U盤狀態(tài)? 用此命令時(shí),INT腳會(huì)變低 MOV DPTR, #CH375_CMD_PORT MOV A, #CMD_GET_STATUS MOVX @DPTR, A


2、在xQueryInterrupt中,用JB CH375_INT_WIRE, $ 可以檢測到U盤的連接/斷開,但I(xiàn)NT不變低 JB CH375_INT_WIRE, $ 不變低,那你怎么檢測到U盤連接的呢?要么你寫的程序不對(duì),要么INT引腳測試不對(duì),既然你發(fā)現(xiàn)矛盾的地方了,那就檢查你這兩點(diǎn).我們只能提供思路.不能提供具體的方法.沒有實(shí)物.

3、CH375LibInit之后,死循環(huán)等待,插入U(xiǎn)盤,INT可以變低 那就說明CH375工作很正常. 4,因?yàn)楝F(xiàn)在你的程序有問題才導(dǎo)致不正常.并不是CH375DiskConnect函數(shù)的問題,所以要把問題解決 5:GET_STATUS不調(diào)用中斷就無法取消.必須調(diào)用.絕對(duì)不會(huì)出現(xiàn)不調(diào)用這個(gè)命令的情況. 像2、在xQueryInterrupt中,用JB CH375_INT_WIRE, $ 可以檢測到U盤的連接/斷開,但I(xiàn)NT不變低 這類問題,明顯矛盾的,建議您自己思考去解決.硬件在你手里面.我們無能為力. 現(xiàn)在的現(xiàn)象很明顯.CH375LibInit( )可以正常,INT在插入后變低.xQueryInterrupt后如果有中斷的話,并且發(fā)送了GET_STATUS命令I(lǐng)NT就會(huì)變?yōu)楦?所以如果你在GET_STATUS后測試,那么肯定會(huì)是高. 現(xiàn)在你的意思是JB CH375_INT_WIRE, $死機(jī)了?


謝謝您的耐心解答,我又仔細(xì)檢查了電路和程序,現(xiàn)在問題如下: 1、可以調(diào)用xQueryInterrupt函數(shù),檢測U盤連接狀態(tài),INT在未調(diào)用GET_STATUS前變低,調(diào)用后變高,此函數(shù)沒問題。 2、調(diào)用CH375DiskConnect函數(shù)時(shí),還未連接U盤,CH375DiskStatus卻總返回02H。我使用的庫HFA.LIB,不用內(nèi)部RAM,不知和此有沒有關(guān)系。實(shí)在不知道為什么CH375DiskConnect函數(shù)不成功。 3、之前我不是說不調(diào)用GET_STATUS命令,而是不調(diào)用CH375DiskConnect或xQueryInterrupt函數(shù),只調(diào)用GET_STATUS命令,來檢測U盤的連接狀態(tài),不知是否可以? 4、我調(diào)用CH375DiskConnect的程序如下: WAIT_DISK_IN: LCALL D200MS LCALL CH375DiskConnect MOV DPTR, #CH375DiskStatus MOVX A, @DPTR XRL A, #DISK_CONNECT JZ DISK_IN_N ; U盤已經(jīng)插入 SJMP WAIT_DISK_IN DISK_IN_N:


謝謝您的耐心解答,我又仔細(xì)檢查了電路和程序,現(xiàn)在問題如下: 1、可以調(diào)用xQueryInterrupt函數(shù),檢測U盤連接狀態(tài),INT在未調(diào)用GET_STATUS前變低,調(diào)用后變高,此函數(shù)沒問題。 2、調(diào)用CH375DiskConnect函數(shù)時(shí),還未連接U盤,CH375DiskStatus卻總返回02H。我使用的庫HFA.LIB,不用內(nèi)部RAM,不知和此有沒有關(guān)系。實(shí)在不知道為什么CH375DiskConnect函數(shù)不成功。 3、之前我不是說不調(diào)用GET_STATUS命令,而是不調(diào)用CH375DiskConnect或xQueryInterrupt函數(shù),只調(diào)用GET_STATUS命令,來檢測U盤的連接狀態(tài),不知是否可以? 4、我調(diào)用CH375DiskConnect的程序如下: WAIT_DISK_IN: LCALL D200MS LCALL CH375DiskConnect MOV DPTR, #CH375DiskStatus MOVX A, @DPTR XRL A, #DISK_CONNECT JZ DISK_IN_N ; U盤已經(jīng)插入

SJMP WAIT_DISK_IN

DISK_IN_N:


1、可以調(diào)用xQueryInterrupt函數(shù),檢測U盤連接狀態(tài),INT在未調(diào)用GET_STATUS前變低,調(diào)用后變高,此函數(shù)沒問題。 2、調(diào)用CH375DiskConnect函數(shù)時(shí),還未連接U盤,CH375DiskStatus卻總返回02H。我使用的庫HFA.LIB,不用內(nèi)部RAM,不知和此有沒有關(guān)系。實(shí)在不知道為什么CH375DiskConnect函數(shù)不成功。 3、之前我不是說不調(diào)用GET_STATUS命令,而是不調(diào)用CH375DiskConnect或xQueryInterrupt函數(shù),只調(diào)用GET_STATUS命令,來檢測U盤的連接狀態(tài),不知是否可以? 4、我調(diào)用CH375DiskConnect的程序如下: WAIT_DISK_IN: LCALL D200MS LCALL CH375DiskConnect MOV DPTR, #CH375DiskStatus MOVX A, @DPTR XRL A, #DISK_CONNECT JZ DISK_IN_N U盤已經(jīng)插入

SJMP WAIT_DISK_IN

DISK_IN_N:


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频