新唐MCU技术
直播中

xymbmcu

13年用户 1124经验值
擅长:可编程逻辑
私信 关注
[问答]

如何利用N9H20 UART模块接收来自PC/NB的消息?

利用N9H20 UART模块接收来自PC/NB的消息

回帖(1)

凌晨3点睡

2025-9-9 18:22:36

要利用N9H20的UART模块接收来自PC/NB的消息,需遵循以下步骤。这里以UART0为例,使用115200波特率(8N1配置)。示例基于Nuvoton BSP库:


1. 硬件连接



  • PC/NB端:USB转TTL串口模块(如FT232、CH340)

  • 连接方式:

    • PC的TX → N9H20 UART0_RX (PA.1)

    • PC的RX → N9H20 UART0_TX (PA.0)

    • 共地线(GND)



2. 软件实现代码


#include 
#include "N9H20.h"

void InitUART0(void) {
    // 开启UART0和GPIOA时钟
    outp32(REG_AHBCLK, inp32(REG_AHBCLK) | UART0_CKE | PA_CKE);

    // 配置PA.0(TX)和PA.1(RX)为UART功能
    DrvGPIO_InitFunction(E_FUNC_UART0);

    // 配置UART0:115200, 8N1
    UART_Open(UART0, 115200);
}

int main() {
    uint8_t rx_data[128];

    InitUART0();  // 初始化UART0
    sysprintf("UART0 Ready for PC Message...n");

    while(1) {
        // 轮询接收(实际应用中建议用中断)
        if (UART_IsRXReady(UART0)) {
            uint8_t ch = UART_Read(UART0);  // 读取单字节

            // 可选:存储或处理数据(此处打印ASCII字符)
            sysprintf("%c", ch);

            // 若需接收完整字符串,可添加结束符判断(如'n')
        }
    }
}

3. 关键代码说明



  • 引脚配置

    • DrvGPIO_InitFunction(E_FUNC_UART0):将PA.0/PA.1设为UART功能。


  • UART初始化

    • UART_Open(UART0, 115200):设置波特率与帧格式(8位数据、无校验、1停止位)。


  • 接收数据

    • UART_IsRXReady()检查接收缓冲区状态。

    • UART_Read()读取单字节数据。



4. PC端工具配置



  • 串口调试助手(如Putty、Tera Term)设置:

    • 波特率:115200

    • 数据位:8

    • 停止位:1

    • 校验位:None

    • 流控:None



5. 改进建议




  • 中断接收(推荐)


    #include "wblib.h"
    void UART0_IRQHandler(void) {
      while(UART_IsRXReady(UART0)) {
          uint8_t ch = UART_Read(UART0);
          // 处理数据(如存入环形缓冲区)
      }
      UART_ClearIntFlag(UART0, UART_RDA_INT);  // 清除中断标志
    }

    int main() {
      // ...初始化后添加中断配置
      UART_EnableInt(UART0, UART_RDA_IEN);  // 使能接收中断
      sysInstallISR(IRQ_LEVEL_1, IRQ_UART0, UART0_IRQHandler);
      sysEnableInterrupt(IRQ_LEVEL_1);
      // ...
    }


  • 流控支持:若高速通信,启用硬件流控(连接RTS/CTS引脚)。

  • 超时管理:添加接收超时机制防止阻塞。


6. 调试技巧



  1. 回环测试:短接N9H20的TX与RX,验证自收发。

  2. 逻辑分析仪:检查信号质量与波特率误差。

  3. 打印调试信息:通过sysprintf输出状态日志。


常见问题排查



  • 无数据接收

    • 检查硬件连线(TX/RX是否交叉连接)。

    • 确认PC端串口工具参数(波特率/停止位)与N9H20一致。

    • 测量引脚电平(若无波形,检查USB转串口模块驱动)。


  • 乱码

    • 检查波特率准确性(晶振配置误差)。

    • 排查地线未共接导致的电平浮动。



通过以上步骤,即可实现稳定的UART通信。实际项目中建议结合中断和环形缓冲区提升可靠性。

举报

更多回帖

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