背景介绍
在实际嵌入式系统开发过程中,工程师经常会遇到串口资源不足的问题:
系统需要多路UART通信,但部分串口引脚已被其他片内外设或功能复用占用;如果采用软件模拟(bit-banging)方式通过GPIO实现UART通信,不仅会显著增加CPU占用率,还会对通信时序的准确性和系统实时性造成影响。
针对上述问题,NXP MCX A系列MCU(MCX A14x/A15x/A17x/A18x/A25x/A26x/A36x) 提供了一种非常灵活且高效的解决方案。该系列芯片内部集成了 全速USB(FS-USB)控制器,支持将片内任意LPUART外设信号通过内部信号矩阵路由至USB物理层,从而实现将USB DP/DM引脚复用为UART的TX/RX或RX/TX信号,有效缓解串口引脚资源紧张的问题。
USB DP/DM复用为UART原理说明
通过对USBCTRL寄存器的相关位进行配置,可实现USB与UART信号之间的复用关系控制:
-
当USBCTRL[UARTSEL]=1时,选定的LPUART外设将连接到FS USB物理层,此时,USB0_DP / USB0_DM将被配置为普通的LPUART信号,信号以单端方式运行,而非USB的差分模式:
-
当USBCTRL[UARTCHLS] = 0 时:
USB0_DP → LPUART_TX
USB0_DM → LPUART_RX
- 当USBCTRL[UARTCHLS] = 1 时:
USB0_DP → LPUART_RX
USB0_DM → LPUART_TX
在本示例中, 将USB0_DP复用为 LPUART1 TX,USB0_DM复用为LPUART1 RX:

INPUTMUX配置说明
除了USBCTRL配置外,还需要通过INPUTMUX完成USB与LPUART之间的信号触发关联。在本例中:
- USBFS触发源配置
- 将USBFS控制器的触发信号配置为LPUART的TX触发
- 本例中选择LPUART1的lpuart_trg_txdata作为USBFS的输入触发源
- 对应配置寄存器为:INPUTMUX_USBFS
2. LPUART RX 输入源配置
- 将LPUART1的RX输入源选择为USBFS控制器
- 即:USB0 ipp_ind_uart_rxd_usbmux input
- 对应寄存器为:INPUTMUX_LPUART1


配置UART信号路由至USB的关键代码如下,本例中使用LPUART1,将LPUART1_TX信号路由至USB_DP,LPUART1_RX信号路由至USB_DM:

当MCU接收到一个字符时,将发送相同的字符返回PC,代码如下:

实 验
使用FRDM-MCXA156开发板,将USB线连接USB接口J23至USB转TTL转接器,并连接PC,如下所示:

打开任意串口控制台,本例中为USB-SERIAL CH340,按下板子复位按钮,输入HELLO,在控制台界面同时显示HELLO字样,表示通信成功:

结 语
通过本文示例可以看出,MCX A系列MCU提供的USB DP/DM灵活配置为串口信号的机制,为引脚资源受限的系统设计带来了极大的灵活性和可扩展性。该方案无需额外硬件、无需软件模拟串口,即可实现稳定、低功耗、低CPU占用的UART通信通道。
在多串口应用、功能扩展受限或引脚高度紧张的设计场景中,合理利用USB DP/DM复用为UART,不仅能够显著提升硬件资源利用率,也为系统后期功能升级和接口拓展预留了更多空间,具有较高的工程实用价值和推广意义。
END
恩智浦致力于打造安全的连接和基础设施解决方案,为智慧生活保驾护航。
这是由恩智浦官方运营的公众号,着重为您推荐恩智浦MCU的产品信息、开发技巧、教程文档、培训课程等内容。
评论区
登录后即可参与讨论
立即登录