貴公司的技術(shù)員好,
CH579 串口1設(shè)為9600,串口2設(shè)為115200,中斷模式,
串口1收到的數(shù)據(jù)轉(zhuǎn)發(fā)串口2輸出是沒(méi)問(wèn)題,
但串口2收到的數(shù)據(jù)轉(zhuǎn)發(fā)到串口1輸出,
超過(guò)8個(gè)字符就會(huì)丟失,只輸出了3個(gè)字符,請(qǐng)教是什么引起?
貴公司的技術(shù)員好,
CH579 串口1設(shè)為9600,串口2設(shè)為115200,中斷模式,
串口1收到的數(shù)據(jù)轉(zhuǎn)發(fā)串口2輸出是沒(méi)問(wèn)題,
但串口2收到的數(shù)據(jù)轉(zhuǎn)發(fā)到串口1輸出,
超過(guò)8個(gè)字符就會(huì)丟失,只輸出了3個(gè)字符,請(qǐng)教是什么引起?
不同的波特率是無(wú)法直接通訊的,需要在程序中作相應(yīng)的修改,如串口1接收9600波特率數(shù)據(jù)后,根據(jù)串口2的波特率再將數(shù)據(jù)發(fā)送出去。同時(shí)需要注意中斷優(yōu)先級(jí)。
我們更推薦直接使用串口1接收,使用串口2發(fā)送數(shù)據(jù)。
你可以將相應(yīng)的代碼貼出來(lái),我們也看一下操作。
現(xiàn)在就是串口1設(shè)9600,串口2設(shè)115200,? ?串口2收到的數(shù)據(jù),用串口1輸出, 超過(guò)7個(gè)字就丟失
? case UART_II_RECV_RDY:? ? ? ? ? // 數(shù)據(jù)達(dá)到設(shè)置觸發(fā)點(diǎn)
? ? ? ? ? ? for(i=0; i!=trigB; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? RxBuff[i] = UART1_RecvByte();
? ? ? ? ? ? ? ?UART2_SendByte(RxBuff[i]);? ?
? ? ? ? ? ? }
case UART_II_RECV_RDY:? ? ? ? ? // 數(shù)據(jù)達(dá)到設(shè)置觸發(fā)點(diǎn)
? ? ? ? ? ? for(i=0; i!=trigB; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? RxBuff2[i] = UART2_RecvByte();
? ? ? ?UART1_SendByte(RxBuff2[i]);
? ? ? ? ? ?}
? ? UART1_BaudRateCfg( 9600 );
? ? R8_UART1_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN;
? ? R8_UART1_LCR = RB_LCR_WORD_SZ;
? ? R8_UART1_IER = RB_IER_TXD_EN;
? ? R8_UART1_DIV = 1;
? ? UART2_BaudRateCfg( 115200 );
? ? R8_UART2_FCR = (2<<6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN;
? ? R8_UART2_LCR = RB_LCR_WORD_SZ;
? ? R8_UART2_IER = RB_IER_TXD_EN;
? ? R8_UART2_DIV = 1;