Files
PX4-Autopilot/docs/zh/hardware/serial_port_mapping.md
T
PX4 Build Bot faedf252b3 New Crowdin translations - zh-CN (#25965)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-11-24 07:21:18 +11:00

142 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 串口映射
本主题说明如何确定USART/UART串行端口(下称串口)设备名称(例如“ttyS0”)与飞行控制器上对应端口(如`TELEM1``TELEM2``GPS1``RC SBUS``调试控制台(Debug console)`)之间的映射关系。
这份说明用于在飞行控制器文档中生成串行端口映射表。
例如: [Pixhawk 4 > Serial Port Mapping](../flight_controller/pixhawk4.md#serial-port-mapping)。
:::info
每个端口分配的功能不必与名称匹配(大多数情况下),并通过[串行端口配置](../peripherals/serial_configuration.md)。
通常情况下端口功能是与名称相匹配的,因此标记为`GPS1`的端口可直接连接GPS设备。
:::
## NuttX 在 STMxxyyy 上
<!-- instructions from DavidS here: https://github.com/PX4/PX4-user_guide/pull/672#issuecomment-598198434 -->
本节将展示如何通过检查板载配置文件,获取在STMxxyyy架构上构建NuttX所需的映射信息。
该说明使用FMUv5,但同样可扩展至其他FMU版本/NuttX开发板。
###
**default.px4board** 文件列出了若干串行端口映射(搜索文本“SERIAL_PORTS”)。
来自 [/boards/px4/fmu-v5/default.px4board](https://github.com/PX4/PX4-Autopilot/blob/main/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 与设备之间的映射关系。
您还可以确定用于该功能的端口[serial/debug console](../debug/system_console.md)。
打开板载的 defconfig 配置文件,例如:[/boards/px4/fmu-v5/nuttx-config/nsh/defconfig](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v5/nuttx-config/nsh/defconfig#L215-L221)
搜索文本“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](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v5/nuttx-config/nsh/defconfig#L212) 搜索 `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](https://github.com/PX4/PX4-Autopilot/blob/main/boards/px4/fmu-v5/src/board_config.h#L59)
```
#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]../flight_controller/pixhawk4.md#serial-port-mapping最终生成的表格如下:
| UART | 设备 | Port |
| ------ | ---------- | ------------------------------ |
| UART | UART | 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!
:::
## 另见
- [Serial Port Configuration](../peripherals/serial_configuration.md)
- [MAVLink Telemetry (OSD/GCS)](../peripherals/mavlink_peripherals.md)