针对RV-STAR开发板串口无法显示的问题,以下分步骤解决:
1. 确认硬件连接和跳线设置
- 板载USB串口(UART4):
- 使用Type-C线直接连接开发板的Type-C接口和电脑(无需USB-TTL模块)。
- 检查跳线帽 J9 和 J10(位于Type-C接口附近):
- 默认位置:短接左侧两针(标记为
USB),即连接CH552G USB转串口芯片。
- 若跳线在
PIN 位置(右侧两针),会导致串口信号连接到排针而非USB。
- 电脑端检查设备管理器(Windows)或
ls /dev/tty*(Linux/Mac)是否识别到新串口设备(如 COMx 或 ttyACMx)。
- 外接串口模块(如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)无输出
- 确认跳线帽 J9/J10 在
USB 位置。
- 检查设备管理器是否识别串口(如未识别需安装驱动)。
- 使用示波器测量 PC12(TX) 是否有波形(波特率115200时,发送
'A' 的波形周期约87μs)。
- 重刷官方串口示例程序排除代码问题。
场景2:外接USART0无输出
- 确认跳线帽 J9/J10 在
PIN 位置。
- 检查USB-TTL模块是否正常工作(可用其他开发板交叉测试)。
- 测量 PC11(TX) 是否有波形。
- 确保代码中未禁用引脚时钟:
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)。
- 发送数据时:应有电压跳变(用万用表可观测到电压波动)。
总结常见原因
- 跳线帽错误(占80%问题):J9/J10未在
USB 或 PIN 的正确位置。
- 驱动未安装:CH552驱动未安装导致电脑无法识别串口。
- 代码配置缺失:未使能引脚复用(
gpio_pin_remap_config)或时钟。
- 硬件故障:USB线损坏、芯片虚焊(概率较低)。
按上述步骤逐一排查,即可解决串口无输出问题。
|
|
|
2025-11-11 18:19:09
评论
举报
|
|
|
|