PX4-Autopilot/docs/zh/hardware/serial_port_mapping.md
PX4 Build Bot 66c5644f1b
New Crowdin translations - zh-CN (#26158)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-12-24 11:08:31 +11:00

5.0 KiB
Raw Blame History

串口映射

本主题说明如何确定USART/UART串行端口下称串口设备名称(例如“ttyS0”)与飞行控制器上对应端口(如TELEM1TELEM2GPS1RC SBUS调试控制台(Debug console))之间的映射关系。

这份说明用于在飞行控制器文档中生成串行端口映射表。 例如: Pixhawk 4 > Serial Port Mapping

:::info 每个端口分配的功能不必与名称匹配(大多数情况下),并通过串行端口配置。 通常情况下端口功能是与名称相匹配的,因此标记为GPS1的端口可直接连接GPS设备。 :::

NuttX 在 STMxxyyy 上

本节将展示如何通过检查板载配置文件,获取在 STMxxyyy 架构上构建 NuttX 所需的映射信息。 该说明使用 FMUv5但同样可扩展至其他FMU版本/NuttX开发板。

default.px4board 文件列出了若干串行端口映射搜索文本“SERIAL_PORTS”

来自 /boards/px4/fmu-v5/default.px4board:

CONFIG_BOARD_SERIAL_GPS1="/dev/ttyS0"
CONFIG_BOARD_SERIAL_TEL1="/dev/ttyS1"
CONFIG_BOARD_SERIAL_TEL2="/dev/ttyS2"
CONFIG_BOARD_SERIAL_TEL4="/dev/ttyS3"

或者,您可以通过执行 make px4_fmu-v5 boardconfig 启动板配置工具,并进入串口菜单。

    Serial ports  --->
        (/dev/ttyS0) GPS1 tty port
        ()  GPS2 tty port
        ()  GPS3 tty port
        ()  GPS4 tty port
        ()  GPS5 tty port
        (/dev/ttyS1) TEL1 tty port
        (/dev/ttyS2) TEL2 tty port
        ()  TEL3 tty port
        (/dev/ttyS3) TEL4 tty port
        ()  TEL5 tty port

nsh/defconfig

nsh/defconfig 允许您确定哪些端口被定义,它们是 UART 还是 USART以及 USART/UART 与设备之间的映射关系。 您还可以确定用于该功能的端口串口/调试控制台

打开板载的 defconfig 配置文件,例如:/boards/px4/fmu-v5/nuttx-config/nsh/defconfig

搜索文本“ART”直到找到类似以下格式的条目CONFIG_STM32xx_USARTn=y(其中xx表示处理器类型,n表示端口号)。 例如:

CONFIG_STM32F7_UART4=y
CONFIG_STM32F7_UART7=y
CONFIG_STM32F7_UART8=y
CONFIG_STM32F7_USART1=y
CONFIG_STM32F7_USART2=y
CONFIG_STM32F7_USART3=y
CONFIG_STM32F7_USART6=y

这些条目会告知您哪些端口已被定义以及它们属于UART还是USART。

复制上方段落按“n”进行数字排序。 同时递增设备编号 ttySn(从零开始计数),以获取设备到串行端口的映射关系。

ttyS0 CONFIG_STM32F7_USART1=y
ttyS1 CONFIG_STM32F7_USART2=y
ttyS2 CONFIG_STM32F7_USART3=y
ttyS3 CONFIG_STM32F7_UART4=y
ttyS4 CONFIG_STM32F7_USART6=y
ttyS5 CONFIG_STM32F7_UART7=y
ttyS6 CONFIG_STM32F7_UART8=y

要获取调试控制台映射,我们需在defconfig file 搜索 SERIAL_CONSOLE。 下面我们看到控制台位于UART7

CONFIG_UART7_SERIAL_CONSOLE=y

board_config.h

对于配备IO板的飞行控制器请通过在board_config.h文件中搜索PX4IO_SERIAL_DEVICE来确定PX4IO连接。

例如 /boards/px4/fmu-v5/src/board_config.h

#define PX4IO_SERIAL_DEVICE            "/dev/ttyS6"
#define PX4IO_SERIAL_TX_GPIO           GPIO_UART8_TX
#define PX4IO_SERIAL_RX_GPIO           GPIO_UART8_RX
#define PX4IO_SERIAL_BASE              STM32_UART8_BASE

PX4IO 位于 ttyS6 上(我们还可以看到它映射到 UART8这一点我们从前一节已经知道

整合所有内容

最终映射表如下:

ttyS0 CONFIG_STM32F7_USART1=y GPS1
ttyS1 CONFIG_STM32F7_USART2=y TEL1
ttyS2 CONFIG_STM32F7_USART3=y TEL2
ttyS3 CONFIG_STM32F7_UART4=y TEL4
ttyS4 CONFIG_STM32F7_USART6=y
ttyS5 CONFIG_STM32F7_UART7=y DEBUG
ttyS6 CONFIG_STM32F7_UART8=y PX4IO

flight controller docs 最终生成的表格如下:

UART 设备 Port
UART1 /dev/ttyS0 GPS
USART2 /dev/ttyS1 TELEM1 (流控)
USART3 /dev/ttyS2 TELEM2 (流控)
UART4 /dev/ttyS3 TELEM4
USART6 /dev/ttyS4 RC SBUS
UART7 /dev/ttyS5 调试控制台
UART8 /dev/ttyS6 PX4IO

Other Architectures

:::info Contributions welcome! :::

另见