WCH沁恒单片机
直播中

陈勇

7年用户 1194经验值
私信 关注
[问答]

CH579 2个不同波特率串口转发符丢失是什么原因引起的?

贵公司的技术员好,
CH579 串口1设为9600,串口2设为115200,中断模式,
串口1收到的数据转发串口2输出是没问题,
但串口2收到的数据转发到串口1输出,
超过8个字符就会丢失,只输出了3个字符,请教是什么引起?
  

回帖(2)

张海燕

2022-6-22 11:00:12
不同的波特率是无法直接通讯的,需要在程序中作相应的修改,如串口1接收9600波特率数据后,根据串口2的波特率再将数据发送出去。同时需要注意中断优先级。
我们更推荐直接使用串口1接收,使用串口2发送数据。
你可以将相应的代码贴出来,我们也看一下操作。
举报

郭欣

2022-6-22 11:00:18
现在就是串口1设9600,串口2设115200,   串口2收到的数据,用串口1输出, 超过7个字就丢失
case UART_II_RECV_RDY:          // 数据达到设置触发点
            for(i=0; i!=trigB; i++)
            {
                RxBuff = UART1_RecvByte();
               UART2_SendByte(RxBuff);   
            }

case UART_II_RECV_RDY:          // 数据达到设置触发点
            for(i=0; i!=trigB; i++)
            {
                RxBuff2 = UART2_RecvByte();
       UART1_SendByte(RxBuff2);
           }


    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;
举报

更多回帖

×
20
完善资料,
赚取积分