RISC-V技术论坛
直播中

djfldsthtr

9年用户 1021经验值
擅长:光电显示
私信 关注
[问答]

RV-STAR串口无法显示怎么解决?

1.针对上期问题已解决,写在这里大家遇到同类问题,在IoT-Studio下面如何配置openocd,添加芯来科技提供的sdk里面的配置文件即可,如图:

这样配置之后,调试参数也和这个一样,即可完成RV-Star开发板在IoT-Studio下下载,调试。
2.最近在研究这个串口打印,发现USB这个UART4无法打印,另外测试串口1,也就是USBS这个引脚,这个是USART0的RX,也无法打印,电脑可识别串口,程序如下:










USB这个串口是不需要安装驱动吧?我用USB-TTL模块,测试PC12,也就是UART4的TX,接模块的RX,也无法收到数据,我就纳闷了,另外单独测试串口0也无数据?






                                                                                

回帖(1)

杨万富

2025-11-11 18:19:09

针对RV-STAR开发板串口无法显示的问题,以下分步骤解决:


1. 确认硬件连接和跳线设置



  • 板载USB串口(UART4)

    • 使用Type-C线直接连接开发板的Type-C接口和电脑(无需USB-TTL模块)。

    • 检查跳线帽 J9J10(位于Type-C接口附近):

      • 默认位置:短接左侧两针(标记为 USB),即连接CH552G USB转串口芯片。

      • 若跳线在 PIN 位置(右侧两针),会导致串口信号连接到排针而非USB。


    • 电脑端检查设备管理器(Windows)或 ls /dev/tty*(Linux/Mac)是否识别到新串口设备(如 COMxttyACMx)。


  • 外接串口模块(如USART0)

    • 若使用USB-TTL模块连接 PC11(TX)和PC12(RX)

      • 确保开发板 GND 与USB-TTL模块 GND 相连。

      • 开发板 PC11(TX) → USB-TTL模块 RX

      • 开发板 PC12(RX) → USB-TTL模块 TX


    • 跳线帽 J9/J10 需切换到 PIN 位置(右侧两针),断开与CH552G的连接。



2. 串口程序配置关键点




  • 引脚复用配置



    • UART4(板载USB串口):使用 PC12(TX)和PC13(RX)

    • USART0(外接串口):使用 PC11(TX)和PC12(RX)


    • 确保代码中配置了正确的引脚复用功能


      // UART4示例(板载USB串口)
      gpio_pin_remap_config(GPIO_UART4_REMAP, ENABLE);  // 启用PC12/PC13复用

      // USART0示例(外接串口)
      gpio_init(GPIOC, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11); // TX
      gpio_init(GPIOC, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_12); // RX




  • 时钟和串口初始化
     // UART4初始化
    rcu_periph_clock_enable(RCU_GPIOC);
    rcu_periph_clock_enable(RCU_UART4);
    uart_deinit(UART4);
    uart_baudrate_set(UART4, 115200);
    uart_word_length_set(UART4, UART_WL_8BIT);
    uart_parity_config(UART4, UART_PM_NONE);
    uart_enable(UART4);


3. 排查软件问题



  • 确保代码正确发送数据
     // 发送字符函数
    void uart_putchar(uint32_t uart_periph, char c) {
         uart_data_transmit(uart_periph, (uint8_t)c);
         while (uart_flag_get(uart_periph, UART_FLAG_TBE) == RESET);
    }
    // 测试代码:发送字符串
    uart_putchar(UART4, 'H');
    uart_putchar(UART4, 'i');
    uart_putchar(UART4, 'r');
    uart_putchar(UART4, 'n');

  • 检查串口助手设置

    • 波特率 115200(与代码一致)。

    • 数据位 8位、停止位 1位、校验位

    • 关闭流控(RTS/CTS)。

    • 注意:RV-STAR的板载USB串口芯片(CH552)可能需安装驱动,从芯来官网下载CH552驱动。



4. 分场景测试




  • 场景1:板载USB串口(UART4)无输出



    1. 确认跳线帽 J9/J10USB 位置。

    2. 检查设备管理器是否识别串口(如未识别需安装驱动)。

    3. 使用示波器测量 PC12(TX) 是否有波形(波特率115200时,发送 'A' 的波形周期约87μs)。

    4. 重刷官方串口示例程序排除代码问题。




  • 场景2:外接USART0无输出



    1. 确认跳线帽 J9/J10PIN 位置。

    2. 检查USB-TTL模块是否正常工作(可用其他开发板交叉测试)。

    3. 测量 PC11(TX) 是否有波形。

    4. 确保代码中未禁用引脚时钟:
      rcu_periph_clock_enable(RCU_GPIOC);   // GPIOC时钟
      rcu_periph_clock_enable(RCU_USART0);  // USART0时钟




5. 终极排查步骤



  • 最小化测试代码
     #include "gd32vf103.h"
    int main() {
         rcu_periph_clock_enable(RCU_GPIOC);
         rcu_periph_clock_enable(RCU_UART4);  // 或RCU_USART0
         gpio_init(GPIOC, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_12); // UART4 TX
         uart_baudrate_set(UART4, 115200);
         uart_enable(UART4);
         while(1) {
             uart_data_transmit(UART4, 'X');  // 持续发送'X'
             while (uart_flag_get(UART4, UART_FLAG_TBE) == RESET);
             for (volatile int i=0; i<1000000; i++); // 简单延时
         }
    }

  • 测量引脚电压

    • 未发送时:PC12(TX)应为高电平(3.3V)。

    • 发送数据时:应有电压跳变(用万用表可观测到电压波动)。



总结常见原因



  1. 跳线帽错误(占80%问题):J9/J10未在 USBPIN 的正确位置。

  2. 驱动未安装:CH552驱动未安装导致电脑无法识别串口。

  3. 代码配置缺失:未使能引脚复用(gpio_pin_remap_config)或时钟。

  4. 硬件故障:USB线损坏、芯片虚焊(概率较低)。


按上述步骤逐一排查,即可解决串口无输出问题。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分