0X81為硬件錯(cuò)誤,請先做測試命令.是否通過,如果不通過檢查硬件.
單獨(dú)一條命令,測試都能通過。幾個(gè)命令先后執(zhí)行后,輸出狀態(tài)就不對,不知什么原因?我懷疑是串口同步問題,可是應(yīng)該怎樣判斷呢?
你直接做測試命令就可以了,簡單的就是首先發(fā)送0X55,讀取到的數(shù)據(jù)是0XAA的話在發(fā)送0XAA,看下讀取到的數(shù)據(jù)是不是 0X55
單獨(dú)一條命令,測試都能通過。先發(fā)送0X55,讀取到的數(shù)據(jù)是0X55,再發(fā)送0XAA,讀取到的數(shù)據(jù)是0XAA.
上面說的發(fā)送測試命令的數(shù)據(jù),發(fā)送0X55,返回0X55還是0XAA??
只發(fā)送一條測試命令,如果發(fā)送0X55,返回是0XAA。但是如果先發(fā)送0X55,再發(fā)送0XAA,讀取到的數(shù)據(jù)是先是0X55后是0XAA.
正確的測試方法: 1:發(fā)送一條測試命令,送0X55,返回是0XAA 2:發(fā)送一條測試命令,送0XAA,返回是0X55 不知道是不是這樣測試的.如果是上述返回的數(shù)據(jù),說明測試通過. 可以把完整程序貼出來看看
void xWriteCH375Cmd( unsigned char mCmd ) { usdelay(20); UTCTL1|=TXWAKE; // 發(fā)送地址位,375第9位為1時(shí)寫命令 TXBUF1=mCmd; while((UTCTL1&0X01)==0); usdelay(20); }
/* 發(fā)送一個(gè)字節(jié)數(shù)據(jù)給CH375模塊 */ void mSendByte( unsigned char c ) { //usdelay(20); UTCTL1&=~TXWAKE; //第9位為0時(shí)寫數(shù)據(jù) TXBUF1 = c; while((UTCTL1&0X01)==0); usdelay(20); }
/* 從CH375模塊接收一個(gè)字節(jié)數(shù)據(jù) */ unsigned char mRecvByte( ) { return( RXBUF1 ); } xWriteCH375Cmd(0x06); mSendByte(0x78); data[0] = mRecvByte(); xWriteCH375Cmd(0x06); mSendByte(0xaa); data[1] = mRecvByte(); 測試出來的值 data[0]和data[1]剛好交換