用FPGA連接CH376,輸入SET_USB_MODE后,輸入02H,選擇模式2。 延遲2秒后,a0=0,rd=0,wr=1能讀出51H,但是a0=1,rd=0,wr=1讀出來(lái)的卻是C1。
另外,從PC下傳數(shù)據(jù),中斷后輸入GET_STATUS后,a0=1,rd=0,wr=1讀出來(lái)的是41H。 請(qǐng)問這應(yīng)該是出現(xiàn)什么錯(cuò)誤了嗎?
用FPGA連接CH376,輸入SET_USB_MODE后,輸入02H,選擇模式2。 延遲2秒后,a0=0,rd=0,wr=1能讀出51H,但是a0=1,rd=0,wr=1讀出來(lái)的卻是C1。
另外,從PC下傳數(shù)據(jù),中斷后輸入GET_STATUS后,a0=1,rd=0,wr=1讀出來(lái)的是41H。 請(qǐng)問這應(yīng)該是出現(xiàn)什么錯(cuò)誤了嗎?
當(dāng)A0=1時(shí)可以寫命令,當(dāng)A0=0時(shí)可以讀寫數(shù)據(jù),所以你要讀數(shù)據(jù)的話A0=0。 你的讀寫時(shí)序應(yīng)該還有問題,請(qǐng)參考以下單片機(jī)的時(shí)序: void xWriteCH375Cmd( UINT8 mCmd ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,向CH375寫命令 */ { mDelay1_2uS( ); mDelay1_2uS( ); /* 至少延時(shí)1uS */ P0 = mCmd; /* 向CH375的并口輸出數(shù)據(jù) */ CH375_A0 = 1; CH375_CS = 0; CH375_WR = 0; /* 輸出有效寫控制信號(hào), 寫CH375芯片的命令端口 */ CH375_CS = 0; /* 該操作無(wú)意義,僅作延時(shí),CH375要求讀寫脈沖寬度大于100nS */ CH375_WR = 1; /* 輸出無(wú)效的控制信號(hào), 完成操作CH375芯片 */ CH375_CS = 1; CH375_A0 = 0; P0 = 0xFF; /* 禁止數(shù)據(jù)輸出 */ mDelay1_2uS( ); mDelay1_2uS( ); /* 至少延時(shí)2uS */ }
void xWriteCH375Data( UINT8 mData ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,向CH375寫數(shù)據(jù) */ { P0 = mData; /* 向CH375的并口輸出數(shù)據(jù) */ CH375_A0 = 0; CH375_CS = 0; CH375_WR = 0; /* 輸出有效寫控制信號(hào), 寫CH375芯片的數(shù)據(jù)端口 */ CH375_CS = 0; /* 該操作無(wú)意義,僅作延時(shí),CH375要求讀寫脈沖寬度大于100nS */ CH375_WR = 1; /* 輸出無(wú)效的控制信號(hào), 完成操作CH375芯片 */ CH375_CS = 1; P0 = 0xFF; /* 禁止數(shù)據(jù)輸出 */ mDelay1_2uS( ); /*至少延時(shí)1.2uS */ }
UINT8 xReadCH375Data( void ) /* 外部定義的被CH375程序庫(kù)調(diào)用的子程序,從CH375讀數(shù)據(jù) */ { UINT8 mData; mDelay1_2uS( ); /* 至少延時(shí)1.2uS */ P0 = 0xFF; /* 輸入 */ CH375_A0 = 0; CH375_CS = 0; CH375_RD = 0; /* 輸出有效寫控制信號(hào), 讀CH375芯片的數(shù)據(jù)端口 */ CH375_CS = 0; /* 該操作無(wú)意義,僅作延時(shí),CH375要求讀寫脈沖寬度大于100nS */ mData = P0; /* 從CH375的并口輸入數(shù)據(jù) */ CH375_RD = 1; /* 輸出無(wú)效的控制信號(hào), 完成操作CH375芯片 */ CH375_CS = 1; return( mData ); }
謝謝。 那就是說讀取中斷狀態(tài)和操作狀態(tài)時(shí),a0也是要置0了? 我就是這里搞不清楚。