news 2026/9/19 13:26:55

Zephyr 中 NXP LPCXpresso55S36 开发板实战指南:硬件特性、引脚映射、时钟配置与烧录调试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Zephyr 中 NXP LPCXpresso55S36 开发板实战指南:硬件特性、引脚映射、时钟配置与烧录调试

Zephyr 中 NXP LPCXpresso55S36 开发板实战指南:硬件特性、引脚映射、时钟配置与烧录调试

【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr

本文围绕 Zephyr 内核仓库中boards/nxp/lpcxpresso55s36板级文档(boards/nxp/lpcxpresso55s36/doc/index.rst)展开,系统讲解这款 Arm Cortex-M33 评估板在 Zephyr 中的定位:LPC55(S)3x 家族的"超集参考板"。读完本文,你将掌握该板的硬件资源与 IOCON 引脚复用方式、设备树中控制台/CAN/PWM/Flash 分区等关键配置,以及使用 LinkServer 烧录、串口控制台 115200-8-N-1 调试的完整操作流程,并能基于板级源码(DTS、pinctrl、runner 配置)自行扩展外设支持。

一、板卡概览与硬件资源

LPCXpresso55S36 是 NXP 面向 LPC55S3x/LPC553x MCU 家族的评估平台,核心芯片为 LPC55S36,基于 Arm Cortex-M33 架构。板载丰富的扩展接口,使其成为 LPC55 系列功能验证的主力开发板。官方文档给出的硬件清单如下:

  • LPC55S36 Cortex-M33 微控制器,最高运行频率 150 MHz;
  • 片上 256 KB Flash 与 112 KB SRAM;
  • LPC-Link2 高速 USB 调试探针,自带 VCOM 串口;
  • 通过 LPC-Link2 探针实现的 I2C/SPI USB 桥接;
  • MikroElektronika Click(mikroBUS)扩展接口;
  • 兼容 Arduino UNO 的 LPCXpresso 扩展连接器;
  • 兼容 PMod 的扩展/主接口;
  • Reset、ISP、Wake、User 四个按键;
  • 三色 LED;
  • 全速(FS)USB 设备/主机口、高速(HS)USB 设备/主机口;
  • 外接 USB 转串口线的 UART 排针;
  • CAN 收发器;
  • 带线路输入/输出的立体声音频编解码器。

在 Zephyr 中,板卡身份由 boards/nxp/lpcxpresso55s36/board.yml 声明:板名为lpcxpresso55s36,厂商nxp,SoC 为lpc55s36。这与文档中"硬件核心为 LPC55S36 SoC"的描述一一对应,也是west build -b lpcxpresso55s36时传入的板级标识。

二、在 Zephyr 生态中的定位:LPC55(S)3x 家族超集板

板级文档中特别强调了一段战略定位:NXP 将 LPCXpresso55S36 视为 LPC55(S)3x 整个 MCU 家族的超集(superset)评估板。这意味着 NXP 的"全平台支持"策略是优先在此板上启用 Zephyr 的新特性,从而惠及整个 LPC55(S)3x 家族。同系列的另一块超集板 lpcxpresso55s69(LPC55S69)功能更多,其已支持的特性可以复用到 lpcxpresso55s36 上。

从源码结构看,这一定位体现在板级 YAML 元数据 boards/nxp/lpcxpresso55s36/lpcxpresso55s36.yaml 中,它声明了架构为arm、112 KB RAM、246 KB Flash(256 KB 总量扣除末尾保留区后可用部分),并列出当前已验证的子系统能力:

  • adcdac:模数/数模转换;
  • can:CAN 总线(配合板载收发器);
  • comparator:模拟比较器;
  • counter:硬件计数器;
  • flashgpiowatchdogcrc:存储与基础外设;
  • gint:通用中断控制器;
  • pwm:脉宽调制;
  • usb_device/usbd:USB 设备端;
  • arduino_gpio:Arduino UNO 兼容排针 GPIO 映射。

这一能力清单可以直接作为选型依据:如果你的项目需要上述任意子集,lpcxpresso55s36 都可直接复用 Zephyr 的通用驱动框架,无需自行编写 BSP。

三、引脚复用:IOCON 与 pinctrl

LPC55S36 SoC 通过 IOCON 寄存器配置引脚功能。板级文档给出了核心引脚的官方分配表:

引脚功能用途
PIO0_17GPIOUSR SW3 按键
PIO0_22GPIO绿色 LED
PIO0_28GPIO红色 LED
PIO0_29USART控制台 RX
PIO0_30USART控制台 TX
PIO1_11GPIO蓝色 LED
PIO1_18GPIOWakeup SW1 按键
PIO1_20 / PIO1_17FLEXPPWM0_PWM0_A/BPWM 输出
PIO1_6 / PIO1_22FLEXPPWM0_PWM1_A/BPWM 输出
PIO1_8 / PIO1_4FLEXPPWM0_PWM2_A/BPWM 输出
PIO1_21 / PIO0_3FLEXPPWM1_PWM0_A/BPWM 输出
PIO1_23 / PIO0_21FLEXPPWM1_PWM1_A/BPWM 输出
PIO1_25 / PIO0_31FLEXPPWM1_PWM2_A/BPWM 输出
PIO1_2CAN0_TXDCAN 发送
PIO1_3CAN0_RXDCAN 接收
PIO0_22USB0_VBUSUSBFS 电源检测

这些引脚分配在 Zephyr 中有两份对应的源码实现:

  1. 板级 DTS boards/nxp/lpcxpresso55s36/lpcxpresso55s36.dts 中声明了 LED 与按键。三色 LED 分别挂在&gpio1 28(红)、&gpio0 22(绿)、&gpio1 11(蓝),并提供led0/led1/led2别名;两个按键btn_wk(Wake,&gpio1 18,低电平有效,编码INPUT_KEY_WAKEUP)与btn_usr(USR,&gpio0 17,低电平有效,编码INPUT_KEY_0),与 IOCON 表中 PIO1_18、PIO0_17 完全吻合。
  2. 引脚复用配置集中在 boards/nxp/lpcxpresso55s36/lpcxpresso55s36-pinctrl.dtsi(由gen_board_pinctrl.py基于LPC55S36.mex自动生成)。例如控制台 USART 的复用组:
pinmux_flexcomm0_usart: pinmux_flexcomm0_usart { group0 { pinmux = <FC0_RXD_SDA_MOSI_DATA_PIO0_29>, <FC0_TXD_SCL_MISO_WS_PIO0_30>; slew-rate = "standard"; }; };

即 FlexComm0 的 RX/TX 分别路由到 PIO0_29/PIO0_30,与上表一致。CAN0 复用组同样明确:CAN0_RD_PIO1_3CAN0_TD_PIO1_2。该文件还包含 I2C(FC2)、HS-SPI、LPADC0(含nxp,analog-mode模拟属性)、FLEXPPWM0/1 各通道、USBFS VBUS 检测、DAC0、高速比较器 HSCMP0 等复用组,模拟引脚(ADC/OPA/DAC/HSCMP)统一标注了模拟模式,便于按需在 DTS 中引用。

此外,DTS 中通过arduino_header节点(compatible = "arduino-header-r3")将 Arduino UNO 排针的 A0–A5、D0–D15 逐一映射到具体 PIO(如 A0→&gpio0 15、D0→&gpio2 0等),并通过mikrobus_header节点(compatible = "mikro-bus")暴露 Click 扩展的 AN/RST/CS/SCK/MISO/MOSI/PWM/INT/RX/TX/SCL/SDA 引脚,二者都实现了 GPIO 透传(gpio-map-pass-thru = <0 0x3f>),用户可以直接用标准device_get_binding("arduino-header")/gpio_dt_spec方式访问扩展排针。

四、系统时钟

文档明确了时钟方案:LPC55S36 默认使用PLL1,由外部 24 MHz 晶振驱动,锁频至 144 MHz 作为系统时钟源。需要注意一个关键约束:当 Flash 控制器(XIP 方式执行)使能时,内核时钟会降为 96 MHz,其余系统时钟源则可按需求在 SoC 内切换。

这个约束对性能敏感的应用有实际意义:如果你计划把代码放在 SRAM 中运行(配合 DMA 访问 Flash),需要重新评估主频与功耗的取舍;反之,默认 XIP 配置下 96 MHz 已经是稳定可用的上限。

五、串口与设备树关键配置

5.1 串口

LPC55S36 SoC 内置8 个 FLEXCOMM 接口用于串行通信。板级 DTS 中仅 FlexComm0 被启用为 USART 控制台,其余未分配:

&flexcomm0 { status = "okay"; compatible = "nxp,lpc-usart"; current-speed = <115200>; pinctrl-0 = <&pinmux_flexcomm0_usart>; pinctrl-names = "default"; };

current-speed = <115200>与后文串口终端配置参数一致。chosen节点中zephyr,consolezephyr,shell-uartzephyr,uart-mcumgr全部指向&flexcomm0,并提供了usart-0别名——即 Zephyr 控制台、Shell 与 MCUmgr 管理通道共用这一个 USART。

5.2 设备树总览:chosen、别名与外设使能

lpcxpresso55s36.dts 的chosen节点还声明了:

  • zephyr,sram = &sram0zephyr,flash = &flash0zephyr,flash-controller = &iap:内存布局与片上 IAP Flash 控制器;
  • zephyr,canbus = &can0:CAN 总线设备别名;
  • zephyr,crc = &crc:硬件 CRC 计算单元。

同文件中被使能(status = "okay")的 SoC 外设包括:adc0(LPADC,CH0A 引脚带模拟模式)、dac0opamp0hscmp0(高速比较器)、crcwwdt0(窗口看门狗)、powerquad(Cortex-M33 的 PowerQuad 指令集加速)、dma0gint0/gint1ctimer0~4usbfs(全速 USB 设备端,别名zephyr_udc0),以及 CAN0:

&can0 { pinctrl-0 = <&pinmux_mcan_can0>; pinctrl-names = "default"; status = "okay"; can-transceiver { max-bitrate = <5000000>; }; };

CAN 收发器的max-bitrate属性标定为 5 Mbps,与板上高速 CAN 收发器相符。

5.3 Flash 分区表

DTS 中&flash0定义了完整的固定分区布局(Flash 以 32 KB 子区为粒度,可在安全 AHB 控制器中按区配置安全级别):

分区标签起始地址大小
boot_partitionmcuboot0x0000032 KB
slot0_partitionimage-00x00800096 KB
slot1_partitionimage-10x02000096 KB
storage_partitionstorage0x03800020 KB
(未分区)PFR 保留区末尾12 KB

chosenzephyr,code-partition = &slot0_partition指向 image-0。该布局天然适配 MCUboot 双槽升级场景(mcuboot-button0别名已指向btn_wk按键,便于手动触发安全启动行为);若不需要 Bootloader,直接整片烧录应用同样可行,因为west flash默认处理整块镜像。

六、编程与调试:Runner 与工具链

文档给出的编程/调试模型是:板载 LPC-Link2(MCU-Link)探针同时承担烧录与调试,且默认工作模式为 CMSIS-DAP,宿主侧使用 NXP LinkServer 工具。Zephyr 中对应的 runner 配置在 boards/nxp/lpcxpresso55s36/board.cmake:

board_runner_args(linkserver "--device=LPC55S36:LPCXpresso55S36") board_runner_args(jlink "--device=LPC55S36" "--reset-after-load") board_runner_args(pyocd "--target=lpc55s36")

三条 runner 参数分别对应三种可选方案:

  1. LinkServer(默认):设备串LPC55S36:LPCXpresso55S36精确指定芯片与板子。使用前提是安装 LinkServer 调试宿主工具并确保其位于PATH。这也是 Zephyr 调试文档中"mcu-link-onboard-debug-probe + CMSIS-DAP 模式"的标准用法。
  2. J-Link:板载 MCU-Link 硬件在刷入特定固件后可作为 J-Link 探针使用;此时改用SEGGER J-Link工具链,Zephyr 侧通过--device=LPC55S36 --reset-after-load参数接管设备选择与下载后复位。
  3. pyOCD:以--target=lpc55s36参数接入,作为开源探针方案的备选。

板级默认配置 lpcxpresso55s36_defconfig 打开了一组基础能力:

CONFIG_CONSOLE=y CONFIG_UART_CONSOLE=y CONFIG_SERIAL=y CONFIG_UART_INTERRUPT_DRIVEN=y CONFIG_GPIO=y CONFIG_ARM_MPU=y CONFIG_RUNTIME_NMI=y

其中UART_INTERRUPT_DRIVEN保证控制台在多线程/中断环境下可靠收发;ARM_MPU默认启用 MPU 内存保护;RUNTIME_NMI使运行时能感知不可屏蔽异常。Kconfig.lpcxpresso55s36则固定选择SOC_LPC55S36与封装LPC55S36JBD100

七、串口控制台配置

按下文档操作:

  1. 用 USB 数据线将 PC 连接到板上J1(LINK2)接口(LPC-Link2 的 VCOM 口);
  2. 打开任意串口终端(minicom、putty 等),参数如下:
参数
波特率115200
数据位8
校验位无(None)
停止位1

即 115200-8-N-1,与 DTS 中current-speed = <115200>一致,无需额外修改。

八、烧录示例(hello_world)

以最典型的 samples/hello_world 应用为例,构建并烧录:

west build -b lpcxpresso55s36 samples/hello_world west flash

west flash会经由 LinkServer runner(见上文 runner 参数)将镜像写入板载 MCU-Link 探针目标芯片。烧录完成后打开串口终端,按下 RESET 按键复位板卡,应看到:

***** Booting Zephyr OS v2.2.0 ***** Hello World! lpcxpresso55s36

注意:终端输出中的 OS 版本号会随你构建时的 Zephyr 版本变化,Hello World! lpcxpresso55s36中的板名则来自 DTS 的model属性与板级标识,可作为烧录成功的直接判据。

九、调试示例

对同一 hello_world 应用执行交互式调试:

west build -b lpcxpresso55s36 samples/hello_world west build -t debug

-t debug目标会启动 GDB 后端(经 LinkServer 与板载探针通信),进入调试会话后在 GDB 中逐步执行(next/step),随后在串口终端观察输出:

***** Booting Zephyr OS zephyr-v2.2.0 ***** Hello World! lpcxpresso55s36

由于调试会话会停在断点,控制台消息只有在继续执行后才会打印,这是预期行为。若切换到 J-Link 固件模式使用同一颗 MCU-Link 硬件,则调试宿主工具换成 SEGGER 工具,Zephyr 侧无需改动板级配置(runner 参数已在board.cmake中就绪)。

十、小结与延伸阅读

  • 板级文档主体:boards/nxp/lpcxpresso55s36/doc/index.rst(Overview、Hardware、Supported Features、Connections and IOs、System Clock、Serial Port、Programming and Debugging 全量内容);
  • 板级元数据与能力清单:boards/nxp/lpcxpresso55s36/lpcxpresso55s36.yaml、boards/nxp/lpcxpresso55s36/board.yml;
  • 设备树与引脚复用:boards/nxp/lpcxpresso55s36/lpcxpresso55s36.dts、boards/nxp/lpcxpresso55s36/lpcxpresso55s36-pinctrl.dtsi;
  • Runner 与默认 Kconfig:boards/nxp/lpcxpresso55s36/board.cmake、boards/nxp/lpcxpresso55s36/lpcxpresso55s36_defconfig;
  • 同家族超集板(功能更多,可交叉参考):boards/nxp/lpcxpresso55s69/doc。

综合来看,LPCXpresso55S36 在 Zephyr 中不仅是"一块能点亮 LED 的开发板",更是 NXP 对 LPC55(S)3x 全家族能力承诺的载体:时钟方案(24 MHz 晶振 → PLL1 → 144 MHz / XIP 96 MHz)、Flash 双槽分区、FLEXCOMM0 控制台、FLEXPPWM 双实例 PWM 阵列、CAN + USB + 模拟外设全开,配合 LinkServer/J-Link/pyOCD 三种调试链路,覆盖了从原型验证到安全启动、CAN 通信、USB 设备端等真实产品特性的完整开发路径。

【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/19 13:24:11

Claude Code 月耗 1199 美元的 token 账单,TaoToken 能看清哪几笔

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/19 13:23:43

历史观看数据驱动营销:从用户分群到会员转化的实战指南

做营销这几年&#xff0c;我越来越觉得&#xff0c;手里没点真实行为数据&#xff0c;光靠拍脑袋定方向&#xff0c;翻车概率太高了。今天想聊的是我们团队在“7v7.7cc”这个内容平台上完整跑过的一个方向&#xff1a;把历史观看数据当成营销策略的底层燃料&#xff0c;从用户分…

作者头像 李华
网站建设 2026/9/19 13:22:28

N_m3u8DL-RE 免费流媒体下载工具:10 分钟跑通 m3u8 与 DASH 下载

N_m3u8DL-RE 免费流媒体下载工具&#xff1a;10 分钟跑通 m3u8 与 DASH 下载 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3…

作者头像 李华