2015-10-20
無(wú)線手柄也能穩(wěn)定接收到數(shù)據(jù)了,串口方式每次返回27個(gè)字節(jié),分析了一下只有前7個(gè)字節(jié)有用,其他20個(gè)字節(jié)都是垃圾數(shù)據(jù)。
用bushund5.0抓到的數(shù)據(jù),確實(shí)是7字節(jié)。
以前用并行方式接收的數(shù)據(jù)只有7個(gè),為什么用串口方式會(huì)接收到這么多垃圾數(shù)據(jù)。
?
2015-10-20
現(xiàn)在接無(wú)線鼠標(biāo)已經(jīng)正常,效果很好,但是接無(wú)線手柄的時(shí)候,issue_token()會(huì)返回一個(gè)錯(cuò)誤值0x2B,但我查遍你公司有關(guān)ch375的手冊(cè)上可以找到的資料都沒(méi)有定義這個(gè)返回值是什么含義。有高手知道嗎?
?
/* 主機(jī)接收usb數(shù)據(jù)操作 */
unsigned char issue_token( unsigned char endp_and_pid )?? /* 執(zhí)行USB事務(wù) */
{
?
?/* 執(zhí)行完成后, 將產(chǎn)生中斷通知單片機(jī), 如果是USB_INT_SUCCESS就說(shuō)明操作成功 */
?CH375_WR_CMD( CMD_ISSUE_TOKEN );
?CH375_WR_DAT( endp_and_pid ); /* 高4位目的端點(diǎn)號(hào), 低4位令牌PID */
?return(wait_interrupt()); /* 等待CH375操作完成 */
?
}
?
/* 主機(jī)端等待操作完成, 返回操作狀態(tài) */
unsigned char wait_interrupt(void)
{??
?CH375_INT_WIRE = 1;
?while( CH375_INT_WIRE );
?CH375_WR_CMD( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷, 獲取中斷狀態(tài) */
?return( CH375_RD_DAT() );?
}
?
?
?
?
2015-10-17
又有了新的問(wèn)題,串口host方式連鼠標(biāo),用有線的鼠標(biāo)連接,能讀到鼠標(biāo)數(shù)據(jù),連接狀況非常好,但換成無(wú)線鼠標(biāo)連接狀況卻不理想,十次大概有兩、三次能連上,不知道什么原因,希望路過(guò)的各位神仙能點(diǎn)撥下小弟。
?
原帖:?
我用stc89C52和ch375b串行通信,一直卡在取反測(cè)試過(guò)不去,返回的值不對(duì),我用T2定時(shí)器做串行通信的波特率,感覺(jué)是串口初始化不對(duì),也不知道錯(cuò)在哪里,望大神指點(diǎn)一下,如果有測(cè)試過(guò)的例子,還望能提供一個(gè),不勝感激。
硬件連接如下
?C51???? ????????????? CH375B?? ?
?P3^0(RXD)???????TXD????
?P3^1(TXD)??????? RXD????
?P1^5??????????????? ?INT#???
?
執(zhí)行到下面代碼時(shí)過(guò)不去
CH375_WR_CMD( CMD_CHECK_EXIST );? /* 測(cè)試單片機(jī)與CH375之間的通訊接口 */
CH375_WR_DAT( 0x65 );
retChar = CH375_RD_DAT( );
if ( retChar != 0x9A )
{
?????#ifdef?ENABLE_DEBUG
?????SendString("CH375 test fail!\nretChar = \n");?? //通過(guò)IO模擬串口向PC發(fā)送監(jiān)視信息
?????SendHex(retChar);
?????#endif
?????while(1)????? //阻塞
?????{
??????????flash_led(); //錯(cuò)誤
?????}??
}
?
我的串口初始化如下
void UartInit(void)??? /* 串行口初始化 */
{
?? SCON = 0xD0;??? //串口方式1,1個(gè)起始位,1個(gè)停止位,9位數(shù)據(jù)
?? T2CON = 0x30;?? //計(jì)數(shù)器2,T2用做發(fā)送接收時(shí)鐘,作為串口波特率發(fā)生器
?? RCAP2H = 0xFF;???? //9600波特率,11.0592Mhz晶振
?? RCAP2L = 0 - 11059200/32/9600;?? /* (0xDC)????? 11.0592MHz晶振 */
?? TH2 = RCAP2H;????
?? TL2 = RCAP2L;
?? TR2 = 1;???????????? //啟動(dòng)T2
?? RI = 0;
}
?
訪問(wèn)ch375b的三個(gè)基本函數(shù)如下
/* 向CH375的串口寫入命令 */
void?CH375_WR_CMD( unsigned char mCmd )? /* 向CH375寫命令 */
{
?????TI = 0;
?????TB8 = 1;
?????SBUF = mCmd;
?????while ( TI == 0 );
}
/* 向CH375的串口寫入數(shù)據(jù) */
void?CH375_WR_DAT( unsigned char mData )? /* 向CH375寫數(shù)據(jù) */
{
?????TI = 0;
?????TB8 = 0;
?????SBUF = mData;
?????while ( TI == 0 );
}
/* 通過(guò)串口從CH375讀出數(shù)據(jù) */
unsigned char?CH375_RD_DAT( void )?
{
?????while ( RI == 0 );
?????RI = 0;
?????return( SBUF );
}
?