我連接好硬件后,用i = CH375LibInit( );i返回的是0x81,請問該如何排查。 晶振也起振,25和26也一高一低,2號復(fù)位引腳,我用電源串接了0.47u的電容。 還需要排查哪里,謝謝?。?/p>
(1)正常情況下,25應(yīng)為低電平,26應(yīng)為高電平 (2)0x81表示硬件連接或接口程序有問題,在LibInit前做測試2次命令,數(shù)據(jù)分別為0x55、0xaa。
25為低電平,26為高電平 您是說先 xWriteCH375Cmd(0x06); xWriteCH375Data(0x55); pp=xReadCH375Data(); 返回pp為00
首先需要看下你三個讀寫子函數(shù)是否有問題即寫命令,寫數(shù)據(jù)和讀數(shù)據(jù)三個函數(shù)是否符合我們的時序要求。 其次你需要用示波器去看下在你寫數(shù)據(jù)和寫命令的時候,在WR的下降延數(shù)據(jù)是否有沒有發(fā)送出來。同時在RD的低電平的時候CH375有沒有把數(shù)據(jù)給你送出來。
我程序在另外一個板子上能用,都沒有問題,換了塊板子就不行了哈
如果程序完全一樣的的話,換了板子,那應(yīng)該硬件問題了,做個測試程,循環(huán)調(diào)用: xWriteCH375Data( 0x55 ); xWriteCH375Data( 0xAA ); 用示波器看看375的各個信號線的電平是否正確
如何查看那些引腳正常否? d0-d7應(yīng)該為方波,示波器顯示高電平:低電平為4:1 連A0都為4:1
按道理A0應(yīng)該都為低電平才對吧
是否是CH375B壞了?
不是方波不方波的問題,你發(fā)數(shù)據(jù)0X55.CS,WR為0是采樣,并且A0=0; 正確的時序為 CS = 0 WR = 0 D0 = 1 A0 = 0 也就是說CS,WR為0的時候,D0=1,A0=0.方法類似看其他的數(shù)據(jù)線.
CS與WR波形完全重合 WR與D0波形不完全重合,D0變化緩慢,WR是D0的二倍,也就是WR為0時,D0有時候為0,有時候不為0
按前面所說的,程序完全一樣,一快板子好用,另一塊不能用,那么應(yīng)該是硬件上的原因,所以通過上述實驗,分析375的各個信號腳上是否有信號來驗證硬件連接和接口程序時序是否正確,請再確認(rèn)一下2塊板子的軟硬件是否完全一致
DO有沒有上拉?有的話去掉.還有就是你的讀寫時序明顯出現(xiàn)問題了,WR應(yīng)該先變?yōu)楦?這個你去檢查一下.按照同樣的方法去測試其他函數(shù).把你的讀寫375函數(shù)的代碼貼出來吧,做好注釋,說明硬件連接.
謝謝哈,是硬件連接出現(xiàn)錯誤了哈,,呵呵
for(m=0;m<10;m++) { i = sprintf( mCmdParam.ByteWrite.mByteBuffer, "%d\xd\xa",m); mCmdParam.ByteWrite.mByteCount = i; i = CH375ByteWrite( ); } 我用這段測試的話,U盤里應(yīng)該是從1到10吧,怎么我的U盤里顯示的是0,256,512,768,每次都增加256,望能給出指點。
原因是i = sprintf( mCmdParam.ByteWrite.mByteBuffer, "%d\xd\xa",m);有問題,具體原因請察看這個函數(shù)的解釋,可以這么做: for(m=0;m<10;m++) { mCmdParam.ByteWrite.mByteBuffer[ 0 ] = m + '0'; mCmdParam.ByteWrite.mByteBuffer[ 1 ] = 0x0d; mCmdParam.ByteWrite.mByteBuffer[ 2 ] = 0x0a; mCmdParam.ByteWrite.mByteCount = 3; i = CH375ByteWrite( ); } 這樣U盤中就是從0-9了