因為我需要隨時切換主從,所以我的做法是在主循環(huán)中檢測當(dāng)前USB從的電壓,來切換到主還是從。每次從切換到主都會:CH375復(fù)位0.5s->等待100ms->寫復(fù)位命令->等50ms->設(shè)置工作模式為6。幾乎沒有出現(xiàn)過優(yōu)盤插在上面開不了機的,倒是有熱插拔不行的,但是極少。
不是開不機,是不能正常讀寫文件,可以檢測到U盤啊,只是讀文件或者寫文件,一操作就沒反映了死在了函數(shù) void xQueryInterrupt( void )里面! 你說的那樣操作,我試過了,行不通! ?。裕蟞cn 你們公司一直都強調(diào)說是電源的問題,能否詳細(xì)一點?到底是電源什么東西會影響到支持率不高?而且只能支持熱插拔呢? 在做這個項目前,我只是擔(dān)心可能不能支持熱插拔,因為看很多資料,很多人做的都是熱插拔就重啟系統(tǒng)了,但是沒有想到我做的卻只支持熱插拔,怪怪的! 在這之前我也在這個論壇發(fā)了很多相關(guān)的帖子,也打了好多次電話咨詢貴公司,但是一直都沒有得到處理! 希望有人能幫幫忙!謝謝!
估計他們所謂的電源問題,應(yīng)該是電源的純凈,比如說CH375上他們提及的去耦電容一定要加,優(yōu)盤的供電你一直強調(diào)供電電流已經(jīng)很強,實際上我現(xiàn)在是一個7805拉了CPU,CH375,還有其它外圍電路,還拉了優(yōu)盤,目前沒有見不夠的優(yōu)盤.這個用示波器看看電源是不是比較純凈.只要電源線的幅度變化基本上能控制在0.1V左右就算OK了.
如果是電源不純的問題,那么我就不明白了,為什么熱插拔就可以正常操作,而先插上U盤再上代內(nèi)就不能正常操作呢?不明白!去藕電源的話已經(jīng)加了,完全是按照貴公司的技術(shù)文件設(shè)計的硬件和PCB?。《遥担衷谟布弦呀?jīng)采用了單獨供電處理??! 另外我覺得支持率根本沒有所胃的90%,所以不知道他這個90%是測試了多少U盤來計算的,我測試了10款U盤有三款是不行的!如果就這個數(shù)據(jù)來看是應(yīng)該是70%,但是在客戶那里卻反饋回來很多U盤都不支持,也就是說連70%都沒有!這個問題如果也歸咎為電源的問題,我覺得沒有那么單純! 所以請各位幫個忙,看看是不是還有其他的可能性!
你也知道別人大多是插上開機沒有問題,熱插拔有問題,你偏偏是個特例,所以你先不要懷疑CH375,如果CH375有問題,那其它人就會遇到和你一樣的問題.我們公司現(xiàn)在還沒有大范圍在產(chǎn)品中使用CH375,主要是內(nèi)部測試,用來做Flash燒錄器(直接將優(yōu)盤中的文件燒錄進去),穩(wěn)定性相當(dāng)好,雖然有部分優(yōu)盤不支持,但是絕對沒有你說的夸張.如果不信我可以發(fā)段使用視頻給你. 你說的插上開機會死在中斷檢測中,到底為什么死在中斷檢測中?是沒有產(chǎn)生中斷還是中斷值出乎意料導(dǎo)致處理錯誤,這些問題你先解決了再來發(fā)牢騷吧. 我在剛開始做CH375時就遇到過死機,有部分原因是有些中斷值開始認(rèn)為不會出現(xiàn),而出現(xiàn)這個中斷值時系統(tǒng)死機.當(dāng)然,如果你使用的是沁恒的庫,當(dāng)我沒講,人家是賣芯片的,你量不夠人家不給源程序你也沒有辦法. 關(guān)于支持率,你不支持的優(yōu)盤有哪些型號?我最近又試了一個SD讀卡器和清華紫光的垃圾優(yōu)盤,居然讀卡器沒有讀出來,清華紫光的讀出來了.所以支持率這東西,碰運氣吧.不過我自己寫的底層,還有可能性提高.
我使用的是沁恒的庫,難道是內(nèi)部處理有問題?Skunk你是自己做的庫嗎?能否給我參考一下? 支持率的問題我也覺得是在碰運氣,同樣是清華紫光的U盤,我用過四款,有三個可以很好的使用,基本上很少很少出異常,而有一款卻從來就沒有成功操作過!所以我才覺得支持率沒有他們說的90%那么高! 至于我做的U盤只支持熱插拔,跟蹤測試了以下,初始化順序如下: (1)發(fā)送命令0x06(檢測CH375工作是否正常),寫入數(shù)據(jù)0x65,讀到數(shù)據(jù)為0x9A; (2)發(fā)送命令0x06(檢測CH375工作是否正常),寫入數(shù)據(jù)0x9A,讀到數(shù)據(jù)為0x65; (3)發(fā)送命令0x01(讀取芯片及固件版本),讀到數(shù)據(jù)為0xA4; (4)發(fā)送命令0x15(設(shè)置U盤工作模式),寫入數(shù)據(jù)0x06; (5)連續(xù)10次延時xDelay100uS (6)讀到數(shù)據(jù)為0x15(檢測到USB設(shè)備連接事件). (7)產(chǎn)生USB中斷 當(dāng)然這個是調(diào)用沁恒的庫的到的結(jié)果!Skunk你幫我看看這個過程有問題嗎?
你上面所說的初始化順序是指插在上面開機的優(yōu)盤初始化順序?這幾步是沒有什么實際意義的,關(guān)鍵是后面的處理?,F(xiàn)在就是搞不清這個中斷處理函數(shù)是不是在內(nèi)部直接把中斷給處理了,如果是這樣的話,你在得到源程序前幾乎沒有什么好查的了,他們也只是承認(rèn)在量大的情況下會針對不支持的優(yōu)盤添加代碼。 我使用的是非常規(guī)單片機,源程序給你也幾乎沒有用,因為我是實時系統(tǒng)的。我在這兒發(fā)過好幾次不使用庫的初始化優(yōu)盤,但也只是可以對扇區(qū)進行操作,沒有到文件系統(tǒng)層。 不過我想起一種可能性,你一開機加一個比較長的延時看看。會不會你CPU已經(jīng)開始工作時,優(yōu)盤供電沒有好,導(dǎo)致出現(xiàn)錯誤。
這一段時間有空的就時候就搞這個東西,至于支持率,我覺得是沒有90%,我們用了很多U盤,估計一下支持率不到70%,這個支持率還可以接收啦,不過也只是測試了20多個左右的U盤,呵呵~~ 現(xiàn)在最最關(guān)心的問題,還是為什么別人不支持熱插拔,而我的項目為什么只支持熱插拔,先插上再上電讀文件就是會失敗!有時候可以讀一個緩存的數(shù)據(jù)就死了,有時候是讀出好一個緩存就死了,反正就是不能讀完數(shù)據(jù)! 根據(jù)跟蹤程序,我發(fā)現(xiàn)如果不插U盤的時候,初始化的時候為我在22樓所說的那樣的步驟,只是沒有中斷信號,而有U盤再上電的時候,初始化多了一個中斷,中斷信號得到的狀態(tài)是已經(jīng)連接狀態(tài).只有一次中斷就沒有了! 而如果是熱插拔的時候,有多次中斷信號發(fā)生,前面兩次都是告訴設(shè)備U盤已經(jīng)連接,后面大概是六次吧,得到的的中斷狀態(tài)為"0X14"--應(yīng)該是表示USB事務(wù)或者傳輸操作成功! 難道這里面有什么貓膩??有哪位知道的朋友,能否解答一下!非常感謝! T0:Skunk 你說的增加延時,我試過,沒有什么作用!也許說的對,可能還是中斷處理的問題!我調(diào)用的都是庫函數(shù),是不是需要改什么東西才行?
T0:Anna 我使用的是 CH375A 做并口主機通訊接口,現(xiàn)在遇到了和您一樣的問題: 可以檢測到U盤,但是不能正常讀寫文件,一操作讀文件或者寫文件就沒反映了,死在了函數(shù) void xQueryInterrupt( void )里面! 請問您現(xiàn)在這個問題解決了嗎?是如何解決的?