搜索
热门关键词:
ADI
Mentor
稳压电源
罗姆
恩智浦
手机版
官方微博
微信公众号
登录
|
免费注册
首页
新闻
新品
文章
下载
电路
问答
视频
职场
杂谈
会展
工具
博客
论坛
在线研讨会
技术频道:
单片机/处理器
FPGA
软件/编程
电源技术
模拟电子
PCB设计
测试测量
MEMS
系统设计
无源/分立器件
音频/视频/显示
应用频道:
消费电子
工业/测控
汽车电子
通信/网络
医疗电子
机器人
当前位置:
EEChina首页
›
论坛
›
STM32 DIY
返回列表
查看:
1787
|
回复:
0
【飞控开发基础1】开源编队无人机-GPIO(LED 航情灯、信号灯控制)
[复制链接]
Linda-x
Linda-x
当前离线
积分
9771
发表于 2022-7-13 11:16:01
|
显示全部楼层
|
阅读模式
贸泽电子有奖问答视频,回答正确发放10元微信红包
关键词:
开源
,
编队
,
无人机
,
GPIO
,
飞控开发基础
COCOFLY教程
——疯壳·无人机系列
GPIO(
LED
航情灯、信号灯控制)
图1
一、LED
1.1LED 简介
LED(Light Emitting Diode)即为发光
二极管
的缩写。LED 是一种在生活中非常常见的照明发光器件。LED 的在我们生活中形态种类非常的多,如下图所示。
图2 图3
尽管 LED 在我们生活中形态非常地多,但这所有的 LED 在
电路
里均使用如下图所示的符号来表示。
图4
1.2LED 发光原理
LED 最重要的一个发光结构就是灯内如绿豆大小般的灯珠。虽然它的体积很小,但它却内有乾坤,如下图所示为 LED 内部构造。
图5
这个结构极其复杂,一共分为好几层:最上层叫做 P 型
半导体
层、中间层为发光层、最下层叫做 N 型半导体层。
从物理学角度来理解:当
电流
通过晶片时,N 型半导体内的
电子
与 P 型半导体内的空穴在发光层剧烈地碰撞复合产生光子,以光子的形式发出能量(即大家看见的光)。
二、GPIO
2.1GPIO 简介
GPIO(General-purpose input/output),通用的输入输出的简称,
单片机
的引脚可以供使用者自由使用,可以配置为输出,也可以配置为输入。其中输出又可以是输出“高电平”或者“低电平”。在电子电路中“高电平”是
电压
高的状态, 用逻辑来表示即为 1,“低电平”是电压低的状态,用逻辑来表示即为 0。
STM32
F103 系列是
意法半导体
基于
ARM
Cortex
M3 内核的 32 位单片机, 飞控上用的主核心是 48 脚的 STM32F103CBT6,其引脚如下图所示。
图6
STM32F103CBT6 的 GPIO 的功能较多,有 A、B、C、D 等四组 GPIO,每组每个 GPIO 口都可以作为输出输出口使用之外, 还能作为复用引脚使用, 比如串口、I2C、SPI 等特殊接口的引脚。 但是需要注意的是每个引脚的复用功能是有限制的, 所以硬件连接时需要注意每个引脚有哪些复用功能, 这个可以在STM32F103 的数据手册中查看。GPIO 口一共有 8 种模式,分别为:浮空输入, 上拉输入,下拉输入,模拟输入,开漏输出,推挽输出,推挽式复用功能,开漏式复用功能,如下表所示。
STM32F103GPIO 工作模式
图7
这 8 种功能我们就不一一介绍了, 有兴趣可以上网搜索了解一下,这里主要讲解一下开漏输出和推挽输出的区别。
(1)开漏输出:
输出端相当于
三极管
的集电极. 需要上拉
电阻
才能得到高电平, 利用外部上拉电阻的驱动能力,减少 IC 内部的驱动,驱动能力强,适合于做电流型的驱动, 可达到 20mA。
(2)推挽输出:
可以输出高,低电平,连接数字器件,是由两个参数相同的三极管或
MOSFET
以推挽方式连接,各负责正负半周的波形放大任务。电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高,既提高电路的负载能力, 又提高开关速度。
总结一下:推挽输出可以输出强高低电平,连接数字器件;而开漏输出只可以输出低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合于做电流型的驱动,其吸收电流的能力相对强(一般 20ma 以内)。
2.2GPIO 相关寄存器
STM32F103 的每个 GPIO 端口有:两个 32 位配置寄存器(GPIOx_CRL 和GPIOx_CRH)、两个 32 位数据寄存器(GPIOx_IDR 和 GPIOx_ODR)、一个 32 位置位/复位寄存器(GPIOx_BSRR)、一个 16 位复位寄存器(GPIOx_BRR)、一个 32 位锁定寄存器(GPIOx_LCKR)。
(1)GPIOx_CRL 寄存器(x=A~G)
图8
该寄存器用于配置 IO0~7 的输入输出模式以及速率设置。
(2)GPIOx_CRH 寄存器(x=A~G)
图9
该寄存器用于配置 IO8~15 的输入输出模式以及速率设置。
(3)GPIOx_IDR 寄存器(x=A~G)
图10
IDR 是 GPIO 的输入数据寄存器。通过 IDR 寄存器可以读出 IO 的状态。需要注意的是 IDR 寄存器只能以字(16 位)的形式读出。
(4)GPIOx_ODR 寄存器(x=A~G)
图11
ODR 是 GPIO 的输出数据寄存器。通过 ODR 寄存器可以输出高低电平。
(5)GPIOx_BSRR 寄存器(x=A~G)
图12
BSRR 是GPIO 的端口位设置/清除寄存器。BSRR 寄存器的高 16 位是清除IO 位,低 16 位是置位 IO 位。需要注意的是 BSRR 只有在写入 1 的时候,相应的功能才有作用,写入 0 是无效的。
(6)GPIOx_BRR 寄存器(x=A~G)
图13
BRR 是 GPIO 的端口位清除寄存器。BRR 基础只有在写入 1 的时候,相应的功能才有作用,写入 0 无效。
(7)GPIOx_LCKR 寄存器(x=A~G)
图14
LCKR 是GPIO 的端口配置锁定寄存器。LCKR 寄存器用来锁定IO 口的配置, 设置后,除了复位后不能再配置 IO 的状态。
2.3GPIO 实验
本节实验的内容是周期性点亮无人机的航情灯以及信号灯,其中航情灯在四个螺旋桨底下,而信号灯则在开关两侧。
查看原理图可以得知无人机的航情灯同一接在 NPN 三极管 Q1 上,而三极管的基极又接在了单片机的 PA8 上;两个信号灯分别接在了 PC13 和 PC14 上。
图15 图16
图17
编写代码的思路如下表所示
图18
按照代码思路,编写代码(通过调用官方库) 如下图所示:
图19
图20
完成配置后只需要周期点亮以及关闭 LED 即可。
图21
其中延时如下图所示。
图22
保存、编译、下载,如下图所示,1 为保存,2 为编译,3 为下载。
图23
下载代码到飞控上,就可以看到飞控的 LED 指示灯以及四个螺旋桨下面的航情灯周期闪烁的现象了,如下图所示。
图24
更多完整学习资料和对应开源套件,请登陆官网“疯壳”
如需定制开发,请通过官网“疯壳”网页底部的“联系我们”进行联系
文件下载请点击:
【1】GPIO(LED航情灯、信号灯控制).pdf
(1.02 MB)
2022-7-13 11:12 上传
点击文件名下载附件
相关文章
•
无人机展|2025深圳国际低空经济及无人机产业博览会
•
高效视觉方案:AR1335与i.MX8MP的完美结合
•
对苍蝇行为的新认识有助于更好地训练
•
美国众议院通过“无人机法案”,将全面禁售大疆无人机
•
什么是微型丝杆自锁?
•
微型丝杆在精密机械设备中的优势
•
CTIS 2024消费者科技及创新展览会
•
业界首次“面向低空智联网的5.5G无人机可信接入”技术验证完成
•
开放原子校源行走进西部,加速开源人才培养
•
无人机遥控中应用的2.4GHz无线芯片
回复
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
关于我们
-
服务条款
-
使用指南
-
站点地图
-
友情链接
-
联系我们
电子工程网
© 版权所有
京ICP备16069177号
| 京公网安备11010502021702
快速回复
返回顶部
返回列表