APM飞控固件编程-GPIO输入

有时候,我们的飞控需要引入一些外部io信号,比如:
01相机拍照反馈
单反相机热靴接口的反馈信号,用于将照片拍摄的位置和时间保存到飞控的日志中;
02液位仪io信号
植保无人机检测剩余药量是否低于警戒值;
03弹射检测信号
通过一个金属触点弹片来检测无人机是否从发射架上弹射出去,对于一些需要延迟开启推进电机的应用比较有用。
硬件基础
对于大部分运行apm固件的飞控来讲,其第9通道以后(含)的pwm输出通道同时也支持作为gpio输入,当然,部分飞控硬件的前8个通道也支持作为gpio输入,这与飞控的硬件架构相关。
如下图所示,此飞控的pwm1~pwm8使用了sn74lvc8t245这款芯片作为接口保护芯片,并且将此芯片的方向控制引脚固定拉低,从而这8个通道只支持作为pwm输出或者gpio输出。
如下图所示,其pwm9~pwm16通道使用了txs0108ergyr这款芯片作为接口保护芯片,这款芯片支持自动切换各个通道的方向的功能,因此这8个通道既可以作为pwm输出,也可以作为gpio输入。
软件编程
apm固件的gpio输入功能的使用是非常简单的,如下面的例子所示:
// 第一步,将gpio50设置为输入模式hal.gpio- >pinmode(50, hal_gpio_input);// 第二步,将gpio50设置为内部上拉(可选,可以不上拉;如果要下拉,则第二个参数设置为0)hal.gpio- >write(50, 1);// 第三步,读取gpio50的状态,返回值为0表示低电平,为1表示高电平uint8_t gpio_state = hal.gpio- >read(50);注意,例程中的“50”是“软件层面”的gpio号,不是stm32单片机“硬件层面”的gpio号, 并且各个飞控的定义不同。此值的定义在apm源代码“libraries/ap_hal_chibios/hwdef/飞控硬件名/hwdef.dat”中,下图为原版pixhawk对于gpio号的定义:
参数设置
对于最新的apm固件,“brd_pwm_count”这个参数已经被删掉了,因此不需要设置这个参数。
servox_function:设置为-1。注意,aux out引脚的标号在参数表中是从9开始依次递增的,如aux out 1引脚对应servo9,aux out 2引脚对应servo10,依次类推。
你看的没错,只需要设置这一个参数即可,非常简单。
结语
以上就是apm固件gpio输入功能的使用方法,希望对对大家有所帮助,

3D打印机制造商Stratasys发布2020年第三季度财报
新的Wolfspeed WolfPACK全桥模块专为隔离式 DC-DC 转换器而设计
时隔十年 摩托罗拉戴妃新机再度曝光
数字化技术保护老建筑:安装传感器需有判别依据
元器件选型错误风险及解决方案
APM飞控固件编程-GPIO输入
苹果M1 Mac成功模拟运行Switch游戏
Modbus转Profinet网关的作用
5G通信算法:LDPC译码算法详解
三星Galaxy S10系列四大卖点引热议 全款排队热潮来袭
预期明年LED设备需求减淡
亚马逊Alexa在CES展上春风得意?
如何正确使用功率器件以满足工业电源的要求
临时用电电器如何设置
量子通信保密系统热度不亚于当前最为火热的人工智能和5G
场效应管的替换原则及好坏判断
具 DCR 检测功能的高效率、两相、1.2V、40A 电源,fsw = 250kHz
利用MAX44009环境光传感器实现LCD亮度控制的简单方案
凌晨发布!科创板“2+6”规则定稿67处重要修改,逐条比对一图看懂!
2018对VR设备的期待与遥想