[应用方案] 新唐 N76E003 MCU 的应用:实现 UART 通信与数据传输

[复制链接]
3256|9
 楼主| 万图 发表于 2024-10-13 08:17 | 显示全部楼层 |阅读模式

新唐(Nuvoton)的N76E003是一款性价比非常高的8位MCU,拥有32KB Flash和4KB SRAM,并内置丰富的外设模块。它被广泛应用于工业控制、家电产品和消费类电子中。在这篇文章中,我们将使用N76E003实现UART串口通信,通过UART接收字符并回传数据,适合与PC或其他设备进行串**互。


开发环境及工具
  • 开发板:N76E003开发板
  • 开发工具:Keil uVision 5
  • 编程语言:C语言
  • 烧录工具:Nu-Link仿真器
  • PC串口调试助手:用于查看串口收发的数据


实现功能通过UART接口实现PC和N76E003之间的通信。当PC向N76E003发送一个字符,MCU将把收到的字符再发送回PC,以实现回环测试。


硬件连接
  • N76E003的UART0引脚
    • P0.1 (TX) 连接到USB转串口模块的RX
    • P0.0 (RX) 连接到USB转串口模块的TX
  • 将USB转串口模块插入PC,并使用串口调试助手进行数据交互。

代码实现
  1. #include "N76E003.h"
  2. #include "SFR_Macro.h"
  3. #include "Function_define.h"

  4. // 初始化UART0,波特率9600
  5. void UART0_Init(void) {
  6.     P06_Quasi_Mode;  // 设置P0.6为准双向模式 (TX)
  7.     P07_Quasi_Mode;  // 设置P0.7为准双向模式 (RX)

  8.     SCON = 0x50;     // UART模式1,8位数据,1位停止位
  9.     T2MOD |= 0x01;   // 定时器2作为波特率发生器
  10.     TH2 = 0xFF;      // 波特率9600 (假设11.0592MHz晶振)
  11.     TL2 = 0xDC;  
  12.     TR2 = 1;         // 启动定时器2
  13. }

  14. // 发送一个字节数据
  15. void UART0_SendByte(uint8_t data) {
  16.     SBUF = data;
  17.     while (TI == 0);  // 等待发送完成
  18.     TI = 0;           // 清除发送标志
  19. }

  20. // 主程序:实现数据回环
  21. void main(void) {
  22.     UART0_Init();  // 初始化UART0

  23.     while (1) {
  24.         if (RI) {  // 检测是否接收到数据
  25.             RI = 0;  // 清除接收标志
  26.             UART0_SendByte(SBUF);  // 回传收到的数据
  27.         }
  28.     }
  29. }

代码讲解
  • UART初始化:在UART0_Init()中,我们配置P0.6和P0.7为UART引脚,设置波特率为9600bps。
  • 数据发送:使用UART0_SendByte()函数将一个字节数据发送出去,并等待发送完成。
  • 回环测试:在主程序中检测是否有接收到的数据,并将其直接回传给发送端。


功能扩展
  • 多字节通信:可以增加缓存机制,实现一次发送或接收多个字节的数据。
  • 中断方式:通过启用UART中断,使通信更加高效,避免轮询等待。
  • 与传感器连接:可通过串口与外部传感器或模块通信,获取数据并进行处理。


小结通过这段代码,我们实现了新唐N76E003与PC之间的串口通信,并完成了一个简单的回环测试。UART是嵌入式开发中常用的通信方式,通过掌握它可以轻松实现MCU与其他设备之间的数据传输。

公羊子丹 发表于 2024-10-13 08:18 | 显示全部楼层
刚用这个代码做了测试,终于搞懂UART怎么回传数据了。
周半梅 发表于 2024-10-13 08:18 | 显示全部楼层
我把这段代码改了下,现在能和ESP8266模块通信了。
帛灿灿 发表于 2024-10-13 08:19 | 显示全部楼层
这N76E003真不错,价格实惠还带这么多外设。
童雨竹 发表于 2024-10-13 08:19 | 显示全部楼层
有没有人试过用这芯片控制OLED屏?
Wordsworth 发表于 2024-10-13 08:20 | 显示全部楼层
把UART改成中断方式后,感觉效率提高了不少。
Bblythe 发表于 2024-10-13 08:21 | 显示全部楼层
新唐的芯片用起来还挺顺手,文档也清楚。
Pulitzer 发表于 2024-10-13 08:22 | 显示全部楼层
波特率9600够用了,不过下次想试试更高的波特率。
Uriah 发表于 2024-10-13 08:22 | 显示全部楼层
这个回环测试很实用,一下子找到了通信的问题。
Clyde011 发表于 2024-10-13 08:23 | 显示全部楼层
有没有人把这芯片用在温控项目里的?想学习一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

181

主题

6293

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部