跳至内容

串行端口映射

本主题介绍如何确定 USART/UART 串行端口设备名称(例如:"ttyS0")与飞行控制器上相关端口(例如:"ttyS0")之间的映射关系。 TELEM1, TELEM2, GPS1, RC SBUS, 调试控制台.

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

信息

分配给每个端口的功能不 必须 匹配名称(在大多数情况下),并使用 串行端口配置.通常,端口功能的配置要与名称相匹配,这就是为什么标为 GPS1 可与开箱即用的 GPS 配合使用。

STMxxyyy 上的 NuttX

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

default.px4board

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";

或者使用以下命令启动 boardconfig make px4_fmu-v5 boardconfig 并访问串行端口菜单

    串行端口 --->;
        (/dev/ttyS0) GPS1 tty 端口
        () GPS2 tty 端口
        () GPS3 tty 端口
        () GPS4 tty 端口
        () GPS5 tty 端口
        (/dev/ttyS1) TEL1 tty 端口
        (/dev/ttyS2) TEL2 tty 端口
        () TEL3 tty 端口
        (/dev/ttyS3) TEL4 tty 端口
        () TEL5 tty 端口

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

要获取 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
ttyS3 CONFIG_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/ttyS1TELEM1(流量控制)
USART3/dev/ttyS2TELEM2(流量控制)
UART4/dev/ttyS3TELEM4
USART6/dev/ttyS4RC SBUS
UART7/dev/ttyS5调试控制台
UART8/dev/ttyS6PX4IO

其他架构

信息

欢迎投稿!

另请参见