CH592F串口2发送不正常


串口1调通,初始化代码如下:

void my_uart1_init(void)
{

        /* 配置串口1:先配置IO口模式,再配置串口 */
        GPIOA_SetBits(GPIO_Pin_9);
        GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);      // RXD-配置上拉输入
        GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA); // TXD-配置推挽输出,注意先让IO口输出高电平

        UART1_DefInit();

        //中断配置
        UART1_ByteTrigCfg(UART_1BYTE_TRIG);
        UART1_INTCfg(ENABLE, RB_IER_RECV_RDY | RB_IER_LINE_STAT);
        PFIC_EnableIRQ(UART1_IRQn);

}


基于串口1调试成功,复制了串口1的初始化代码,修改了串口2的配置如下,但是没有调试成功:

void my_uart2_init(void)
{

    /* 配置串口2:先配置IO口模式,再配置串口 */
    GPIOB_SetBits(GPIO_Pin_23);
    GPIOB_ModeCfg(GPIO_Pin_22, GPIO_ModeIN_PU);      // RXD-配置上拉输入
    GPIOB_ModeCfg(GPIO_Pin_23, GPIO_ModeOut_PP_5mA); // TXD-配置推挽输出,注意先让IO口输出高电平
    UART2_DefInit();

    //中断配置
    UART2_ByteTrigCfg(UART_1BYTE_TRIG);
    UART2_INTCfg(ENABLE, RB_IER_RECV_RDY | RB_IER_LINE_STAT);
    PFIC_EnableIRQ(UART2_IRQn);
}



串口2发送函数:

uint8_t LLT_Uart2_Send_Byte(uint8_t dat)
{


    if(R8_UART2_TFC != UART_FIFO_SIZE)
    {
        R8_UART2_THR = dat;

        return 1;
    }
    else
    {
        return 0;
    }


    return 0;

}



int main(void)
{
    SetSysClock(CLK_SOURCE_PLL_60MHz);


   my_uart2_init();

   LLT_Uart2_Send_Byte(0x38);

   LLT_Uart2_Send_Byte(0x38);

   LLT_Uart2_Send_Byte(0x38);

   LLT_Uart2_Send_Byte(0x38);

}


在main函数初始化打印串口2发送数据,串口2的TX接电脑PC端的串口RX进行监听,目前没有监听到串口2发送的数据。接收电脑端的串口后,经过几次按demo板上的RESET键,都没有收到数据,判断当前串口2发送不正常。 同样的测试方法,串口1的发送正常,硬件上的接法正常,可以排除掉硬件上的接法不对问题。


串口2的TX引脚有复位功能,不知道是不是需要别的配置?

下载时将RST的复位引脚功能选项取消勾选:

image.png


现在出现一个问题,下载串口2的调试程序之后,再重新连上USB线,WCHISPstudio识别不到目标板了。

之前一直是通过USB下载,现在识别不出来,下载不了了。不知道贵司有遇到过这个问题吗?是否有解决办法?


图片.png


已经解决,感谢支持!


之前插上USB线,给demo板上电,就可以成功识别。

现在需要提前按住download 键,然后再开电才能识别。


芯片在出厂的时候是空片,所以上电会直接进入boot模式。

在烧录过程序之后,需要通过拉到PB22按键进行触发boot模式,可以参考博客:

CH57x/CH58x 芯片下载 - SweetTea_lllpc - 博客园


只有登录才能回复,可以选择微信账号登录