GPIO

备注

在固件 4.2 及更高版本中,将 PWM/SERVO/MOTOR 输出设置为 GPIO 功能的方法有所改变。而不是 BRD_PWM_COUNT 个人 SERVOx_FUNCTION 参数仅设置为"-1"。如果设置为 "0",则仍是 PWM 输出,未指定功能,但不会输出任何 PWM 信号,除非脚本或 GCS 发出指令。如果伺服功能被 "镜像 "到远程设备(如 DroneCAN 或 KDECAN ESC),那么要将自动驾驶板的相应输出引脚改为 GPIO,但允许 SERVOx_FUNCTION 仍分配给远程设备,则 servo_gpio_mask 参数可用于将电路板引脚指定为 GPIO,而不影响 SERVOx_FUNCTION 远程设备的分配。

警告

当从 4.2 之前的固件升级到 4.2 或更高版本时,请注意之前定义的 GPIO 可能需要使用 SERVOx_FUNCTION 重新指定。 servo_gpio_mask 参数,并且升级后任何依赖于 GPIO 的释放机制(降落伞、喷洒器等)在重新定义之前都可以启动。

通用输入/输出(GPIO)在 ArduPilot 中用于控制以下设备 继电器、致动器、发光二极管、 摄像机触发器, 启动按钮 等等。有些功能还使用 GPIO 引脚作为输入,例如 转速测量.有些(飞行)控制器提供专用的 GPIO 引脚(有时标为 "捕获 "引脚)。此外,还可以通过重新配置 PWM 输出来获得 GPIO。

配置 GPIOS

4.2 之前的版本

在 4.2 之前的固件版本中,参数 BRD_PWM_COUNT 确定有多少 PWM 输出用于控制电机/伺服电机,以及有多少输出可用作 GPIO 类型的输出。

如果(飞行)控制器 X 输出端,那么可通过 SERVOx_FUNCTION 继电器、LED 等的输出参数是 ( X - BRD_PWM_COUNT ).这些 GPIO 输出从最高输出编号开始,依次向下排列。例如,如果总输出为 6,而 BRD_PWM_COUNT = 4,则输出 5/6 可用于 GPIO 类型的功能。

使用 IOMCU 协处理器的(飞行)控制器除外。这些(飞行)控制器通常有 8 个主输出和几个辅助输出。只有 AUX 输出端可以重新用作 GPIO,而主输出端和辅助输出端则不能用作 GPIO。 BRD_PWM_COUNT 参数仅适用于该组输出。

例如,Pixhawk 有 8 个用于电机/伺服的主输出和 6 个辅助输出。默认值为 BRD_PWM_COUNT 为 4,因此可以使用 AUX OUTPUT 5 & 6。可以通过减少 BRD_PWM_COUNT.

../_images/Relay_Pixhawk.jpg

备注

改变 BRD_PWM_COUNT 需要重新启动(飞行)控制器才能生效。

4.2 及更高版本

在固件 4.2 及更高版本中,将 PWM/SERVO/MOTOR 输出设置为 GPIO 功能的方法发生了变化。为此,每个 SERVOx_FUNCTION 参数仅设置为"-1"。如果舵机功能被 "镜像 "到远程设备,例如 DroneCAN 或 KDECAN ESC,那么为了将自动驾驶板的相应输出引脚改为 GPIO,但允许 SERVOx_FUNCTION 仍分配给远程设备,则 servo_gpio_mask 参数可用于将电路板引脚指定为 GPIO,而不影响 SERVOx_FUNCTION 远程设备的分配。

备注

对于使用 IOMCU 的(飞行)控制器,如果将 "主 "输出配置为 GPIO,则只能作为输出(即继电器等)而不能作为输入。当配置为 GPIO 时,"AUX "输出既可以作为输入也可以作为输出。

每次(飞行)控制器初始化时,它都会向地面控制站发送一条日志信息,显示哪些输出为 PWM/Oneshot/或 DShot。其余编号较高的输出被分配为 GPIO。

./_images/RCOutbanner.jpg

gpio "引脚 "编号

某些基于 GPIO 的功能需要在相关参数中输入 GPIO "针脚编号"。通常情况下,第一个 GPIO 功能输出的针脚编号为 50,第二个为 51,等等。因此,在上述 Pixhawk 的情况中,AUX OUT 6 是第 55 针。

您可以轻松验证输出的 GPIO 引脚编号分配。首先,找到其 hwdef.dat 文件 这里 并确定其输出编号旁列出的 GPIO 引脚编号,如下图所示:

./_images/GPIO_numbers.png

IOMCU 的 "MAIN "输出 1 至 8 分别映射到 GPIO 引脚 101 至 108。

备注

通常,更改任何特性或功能的 GPIO 引脚分配都需要重新启动才能生效。