Funpack5-1 基于MCXA346实现UART串口通信输出
该项目使用了MCXA346,实现了UART串口通信输出的设计,它的主要功能为:基于MCXA346实现UART串口通信输出。
标签
Funpack活动
MCXA346
UART串口通信输出
空耳-
更新2026-03-13
29

Funpack5-1 基于MCXA346实现UART串口通信输出

一,项目介绍

本项目作为Funpack 5-1的基础任务,旨在通过最简单的串口通信实验,让参与者快速熟悉FRDM-MCXA346开发板的使用方法、开发环境搭建以及NXP MCUXpresso SDK的编程模式。任务要求:使用MCXA346开发板的UART串口输出指定字符串“Hello, DigiKey Funpack 5-1”,并实现回显功能(将接收到的字符原样发送回去)。最终在PC端的串口终端上可以看到输出的字符串以及回显效果。

二,硬件介绍

FRDM-MCXA346 开发板概览

FRDM-MCXA346是NXP官方推出的一款低成本、高扩展性的开发板,基于MCX A346微控制器。它保留了FRDM系列一贯的紧凑尺寸和丰富接口,同时集成了板载调试器,仅需一根USB-C线缆即可进行开发调试和串口通信。

核心MCU:MCX A346

  • 内核:Arm® Cortex®-M33,最高运行频率180MHz,支持TrustZone和安全扩展。
  • 存储:1MB 闪存,256KB RAM,带8KB ECC(纠错码),满足中等复杂度应用需求。
  • 特色外设:双FlexPWM(适用于电机控制)、4组16位ADC、专用数学加速单元MAU(加速三角函数、除法等运算)、SmartDMA(可实现外设数据智能搬运,减轻CPU负担)。
  • 通信接口:支持CAN、I3C、SPI、I²C、UART等多种协议,并带有高速USB(HS USB)控制器。

板载资源

  • MCU-Link调试器:基于LPC55xx的调试器,支持CMSIS-DAP协议,提供虚拟串口、JTAG/SWD调试功能,通过USB Type-C接口与PC连接。
  • 外部闪存:板载Quad SPI Flash,可用于存储代码或数据。
  • 标准接口
    • Arduino兼容接口:方便扩展各种Arduino Shields。
    • mikroBUS插座:可直接插入MikroElektronika的Click Boards。
    • Pmod连接器:兼容Digilent Pmod模块。
  • 其他:复位按键、用户LED、用户按键等。

适用领域

凭借高性能Cortex-M33内核、丰富PWM和ADC资源,MCX A346非常适合于工业自动化(如PLC)、电机控制(如无人机、机器人)、IoT边缘计算等场景。其板载调试器和标准接口大大简化了原型设计过程。

三,方案框图和项目设计思路

系统框图

本项目的硬件连接非常简单:开发板通过USB线连接PC,板载MCU-Link调试器同时提供虚拟串口功能。MCX A346的UART外设与调试器相连,PC端串口终端软件通过该虚拟串口与开发板通信。

image.png

设计思路

  1. 复用SDK板级支持:NXP MCUXpresso SDK提供了丰富的板级初始化函数和调试控制台函数,可以大大简化UART的配置。本项目直接调用BOARD_InitHardware(),该函数内部完成了引脚复用配置、系统时钟初始化以及调试控制台(即UART)的初始化。
  2. 字符串输出:使用SDK提供的PRINTF函数,它类似于标准C的printf,将格式化字符串通过调试控制台(UART)发送出去。直接输出指定字符串即可。
  3. 回显功能:在主循环中,使用GETCHAR(阻塞式)读取一个字符,然后立即用PUTCHAR发送回去,实现简单的回环。这样用户可以验证接收功能是否正常。
  4. 无限循环:程序在输出一次字符串后进入死循环,持续执行回显任务。

四,调试软件介绍、软件流程图及关键代码

调试软件

  • 集成开发环境:MCUXpresso IDE v25.6.136,也可使用Keil MDK或IAR,但本实验以MCUXpresso为例。
  • SDK版本:MCUXpresso SDK for MCX A Series v2.14.0 或更高版本。
  • 调试器驱动:板载MCU-Link调试器。
  • 串口终端:推荐Tera Term、Putty或Arduino IDE的串口监视器,波特率设置为115200(SDK默认),数据位8,停止位1,无校验位。

软件流程图

主程序流程非常简单,可用以下流程图表示:

image.png


关键代码介绍

main.c

#include "fsl_device_registers.h"
#include "fsl_debug_console.h"
#include "board.h"
#include "app.h"

int main(void)
{
  char ch;

  /* Init board hardware. */
  BOARD_InitHardware();

  PRINTF("Hello, DigiKey Funpack 5-1 \r\n");

  while (1)
  {
      ch = GETCHAR();
      PUTCHAR(ch);
  }
}


  • BOARD_InitHardware():这是SDK提供的板级初始化函数,位于board.c中。它会依次调用:
    • BOARD_InitDEBUG_UARTPins():配置UART引脚(通常为P0_2和P0_3作为TX/RX)。
    • BOARD_InitBootClocks():初始化系统时钟,默认使用FRO 48MHz或更高,通过PLL倍频至180MHz。
    • BOARD_InitDebugConsole():初始化调试控制台,设置UART外设的波特率、数据格式等,并关联标准输入输出。
  • PRINTF:重定向到调试控制台,实现格式化输出。这里输出固定字符串,末尾的\r\n用于换行。
  • GETCHARPUTCHAR:分别用于从调试控制台获取一个字符和发送一个字符。在循环中,程序会等待用户输入(阻塞),然后将输入的字符回显。

board.c(片段)

#include "pin_mux.h"
#include "fsl_clock.h"
#include "fsl_reset.h"
#include "board.h"
#include <stdbool.h>

void BOARD_InitHardware(void)
{
  BOARD_InitDEBUG_UARTPins();
  BOARD_InitBootClocks();
  BOARD_InitDebugConsole();
}


该文件由SDK生成,开发者通常无需修改。BOARD_InitDEBUG_UARTPins()pin_mux.c中定义,具体引脚配置取决于板载设计。BOARD_InitBootClocks()clock_config.c中,可以根据需要调整时钟频率。

五,功能展示图及说明

硬件连接

  1. 使用USB Type-C数据线将FRDM-MCXA346开发板连接到电脑。
  2. 开发板上的绿色电源指示灯亮起,MCU-Link调试器被识别,并生成一个虚拟串口(在设备管理器中可查看COM口号,如COM13)。
  3. 打开串口终端软件,选择对应的COM口,设置波特率115200,8N1,无流控。

功能验证

  • 上电输出:按下开发板复位按键或重新上电,串口终端立即显示:
    Hello, DigiKey Funpack 5-1 

image.png

六,项目中遇到的问题及解决方法

难题1:串口终端无输出或乱码

现象:程序下载后,串口终端没有显示任何内容,或者显示乱码。

原因

  • 波特率设置错误(SDK默认通常为115200,但需确认)。
  • 串口口号选择错误。

解决方法

  • 检查设备管理器中的COM口编号,在终端中正确选择。
  • 确认波特率设置为115200,数据位8,停止位1,无校验。
  • 按下复位按键重新运行程序。
  • 如果依然乱码,可能是时钟配置问题,检查BOARD_InitBootClocks()中是否修改了UART时钟源。默认SDK配置正确。

七,心得体会

通过本次Funpack 5-1的基础任务,我不仅完成了串口通信的实验,更对NXP MCX A系列MCU和FRDM开发板有了深入的了解。

首先,NXP的MCUXpresso生态系统非常成熟,从SDK的丰富例程到IDE的便捷调试,都大大降低了开发门槛。即使是第一次接触该系列MCU,也能在短时间内搭建好环境并运行第一个程序。BOARD_InitHardware()这样的封装函数让开发者无需关心底层寄存器配置,可以专注于应用逻辑。

其次,FRDM-MCXA346开发板的设计非常人性化,板载调试器、标准接口和清晰的引脚标识,使得硬件连接和调试变得异常简单。USB Type-C接口提供了供电、调试和串口三合一功能,一根线即可满足所有需求,非常适合桌面实验。

虽然这是一个简单的串口实验,但它是嵌入式开发中最基础、最重要的通信方式之一。通过回显功能,我验证了双向数据传输的正确性,这为后续连接传感器、执行器以及实现更复杂的协议(如Modbus)打下了基础。

最后,感谢硬禾学堂和得捷电子组织这样的活动,让我们有机会以低成本体验最新的MCU,并通过项目实践提升技能。接下来,我将尝试在FRDM-MCXA346上实现电机控制或边缘计算等更复杂的任务,充分发挥这颗MCU的潜力。

附件下载
frdmmcxa346_hello_world.zip
源码
团队介绍
kone
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号