# 串行端口映射
本主题介绍如何确定 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 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 |
# 其他架构
备注
欢迎投稿!
# 另请参见
← NuttX 板移植指南 添加新机身 →