串口映射
本主题展示了如何确定通用同步/异步收发器(USART)/通用异步收发器(UART)串口设备名称(例如“ttyS0”)与飞行控制器上相关端口(如 TELEM1
、TELEM2
、GPS1
、RC SBUS
、Debug console
)之间的映射关系。
这些说明用于在飞行控制器文档中生成串口映射表。 例如:Pixhawk 4 > 串口映射。
INFO
在大多数情况下,分配给每个端口的功能不一定要与端口名称匹配,并且是通过 串口配置 来设置的。 通常,端口功能会被配置为与名称匹配,这就是为什么标记为 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"
或者,您可以使用 make px4_fmu-v5 boardconfig
启动板卡配置,然后进入串口菜单:
串口 --->
(/dev/ttyS0) GPS1 串口端口
() GPS2 串口端口
() GPS3 串口端口
() GPS4 串口端口
() GPS5 串口端口
(/dev/ttyS1) TEL1 串口端口
(/dev/ttyS2) TEL2 串口端口
() TEL3 串口端口
(/dev/ttyS3) TEL4 串口端口
() TEL5 串口端口
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(从 0 开始),以获取设备到串口的映射关系。
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 文件 中搜索 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
在 飞行控制器文档 中,生成的表格如下:
UART | 设备 | 端口 |
---|---|---|
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 |
其他架构
INFO
欢迎提供相关内容!