# 串行端口映射

本主题介绍如何确定串行端口(UART)、设备(如"ttyS0")和 PX4 启用的特定功能(如 TELEM1、TELEM2、GPS1、RC SBUS、调试控制台)之间的映射关系。

备注

这些指令用于生成飞行控制器文档中的串行端口映射表。例如 Pixhawk 4 > 串行端口映射.

# STMxxyyy 上的 NuttX

本节介绍如何通过检查电路板配置文件来获取 STMxxyyy 架构上 NuttX 版本的映射。该说明使用的是 FMUv5,但同样可以扩展到其他 FMU 版本/NuttX 板。

# default.cmake

default.cmake 列出了许多串行端口映射(搜索文本 "SERIAL_PORTS")。

来自 /boards/px4/fmu-v5/default.cmake (打开新窗口):

SERIAL_PORTS GPS1:/dev/ttyS0 TEL1:/dev/ttyS1 TEL2:/dev/ttyS2 TEL4:/dev/ttyS3

# 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 ttyS3CONFIG_STM32F7_UART4=y ttyS4 CONFIG_STM32F7_USART6=y ttyS5 CONFIG_STM32F7_UART7=y ttyS6 CONFIG_STM32F7_UART8=y

要获取 DEBUG 控制台映射,我们可以搜索 defconfig 文件 (打开新窗口) 对于 序列号.下面我们看到控制台位于 UART7 上:

CONFIG_UART7_SERIAL_CONSOLE=y

# board_config.h

对于带有 IO 板的飞行控制器,可从以下接口确定 PX4IO 连接 board_config.h 通过搜索 px4io_serial_device.

例如 /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 ttyS3CONFIG_STM32F7_UART4=y TEL4 ttyS4 CONFIG_STM32F7_USART6=y ttyS5 CONFIG_STM32F7_UART7=y DEBUG ttyS6 CONFIG_STM32F7_UART8=y PX4IO

飞行控制器文档 得到的表格是

UART 设备 港口
UART1 /dev/ttyS0 全球定位系统
USART2 /dev/ttyS1 TELEM1(流量控制)
USART3 /dev/ttyS2 TELEM2(流量控制)
UART4 /dev/ttyS3 TELEM4
USART6 /dev/ttyS4 RC SBUS
UART7 /dev/ttyS5 调试控制台
UART8 /dev/ttyS6 PX4IO

# 其他架构

备注

欢迎投稿!