Crazyflie 2.0架构包含两个微控制器:

A NRF51, Cortex-M0, 用于实现无线通信和电源管理:

(1)按键开关逻辑(ON/OFF logic)

(2)控制给其它系统供电(STM32, sensors and expansion board)

(3)电池充电管理和电压測量

(4)Master 无线bootloader

(5)无线和BLE通信

(6)探測和检測外部扩展板

An STM32F405, Cortex-M4@160MHz, 用于实现飞行控制以及其它的重负载的工作:

(1)读取传感器和电机控制(Sensor reading and motor control)

(2)飞行控制(Flight control)

(3)測量(包含电池电压)

(4)用户扩展功能

以下是总体硬件连接的框图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

The nRF51822Anchor
link for: the_nrf51822

主要有两个任务:处理无线通信的数据和电源管理 ,它扮演无线桥的作用,将无线接收的数据发送给STM32F405RG。

Crazyflie 2.0 用到了CRTP和BLE的无线通信, 同事硬件也支持其它的协议,比方ANT。CRTP模式兼容 Crazyradio USB dongle ,提供2Mbit/秒的低延迟数据通信. 測试显示,在没有重传和包大小1~32字节的情况下,普通无线通信2Mbps 的延迟在360us
和1.26ms之间. BLE最小的延时是7.5ms,可是眼下实际延时大于20ms.
CRTP link基本的优势在于在不论什么支持USB的主机系统上都能够很easy的实现,这也是为什么它成为Crazyflie首选来做试验. BLE 主要是用于手机控制Crazyflie 2.0.

nRF51 另外一个优势是能够用纽扣电池供电, 也就是说很适合用在低功耗的领域,所以NRF51会负责功耗管理部分。当USB或者电池供电的时候,NRF51总是会有电,其余部分电路的供电和行为动作取决于按键按下的时间长短(比如,能够用于启动到bootloader).眼下也实现了通过外部扩展板的一个引脚唤醒Crazyflie
2.0

The STM32F405Anchor
link for: the_stm32f405

STM32是基本的控制MCU。尽管它是由NRF51供电启动。相对于NRF51它是作为主要角色。它实现了两个功能:飞行控制和全部的通信算法。扩展板主要是跟STM32连接,所以扩展板的驱动主要实如今STM32这边。

STM32F405 内部 RAM 196kB。这么大的RAM一般的应用肯定是没有问题的。实现飞行控制搓搓有余,还能够实现一些复杂的密集型的算法。比如:惯性传感器和GPS数据的融合。

Inter-MCU communicationAnchor
link for: inter mcu_communication

两个MCU之间的通信靠 syslink
protocol
, 该协议是Crazyflie定义的基于包的简单的可扩展的协议机制。

Syslink 提供了全部的两个MCU之间全部的消息, STM32是主机,NRF51是从机.我们尽可能保持NRF51是简单的,而负责的算法都会再STM32实现。

syslink消息样例:

(1)原始的无线包,发送和接收

(2)电源管理測量

Crazyflie 2.0 System Architecture的更多相关文章

  1. 找不到方法:"!!0[] System.Array.Empty()".

    找不到方法:"!!0[] System.Array.Empty()". 这个原因是没装.net framework 4.6

  2. Eclipse maven工程 Missing artifact com.sun:tools:jar:1.5.0:system 解决方法

    今天同事在使用eclipse,引入一个新的maven工程时报错:      Missing artifact com.sun:tools:jar:1.6.0:system   这个问题很奇怪,相同的代 ...

  3. pom文件miss artifact com.sun:tools:jar:1.5.0:system问题

    问题现象: 导入新的maven项目时,有时候pom.xml文件会提示一个错误信息:Missing artifact com.sun:tools:jar:1.5.0:system 问题原因: maven ...

  4. Method not found: !!0[] System.Array.Empty()错误

    最近由于公司项目需要将之前支持的TLS1.0改成更安全的TLS1.2,而公司现有项目都是老系统,有的是.NET FrameWork 4.0,有的是.NET FrameWork3.5,但是TLS1.2默 ...

  5. fio 测试 磁盘I/O: ls -1 /sys/block/sda/queue/ | awk '{cmd="cat "i$0; print i$0; system(cmd) }' i=`pwd`'/'

    小型计算机系统接口(SCSI,Small Computer System Interface) SAS(Serial Attached SCSI,串列SCSI) SCSI 硬盘名称: sd[a-p] ...

  6. Maven错误-Missing artifact com.sun:tools:jar:1.5.0:system 解决方式

    1.Missing artifact com.sun:tools:jar:1.5.0:system Could not resolve dependencies for project com.ifl ...

  7. Missing artifact com.sun:tools:jar:1.5.0:system 补充

    转自:http://blog.csdn.net/sweblish/article/details/6662586 解决方案一: 原来,是${java.home}在作怪,eclipse 没有使用 JAV ...

  8. 【代码审计】LaySNS_v2.2.0 System.php页面存在代码执行漏洞分析.

      0x00 环境准备 LaySNS官网:http://www.laysns.com/ 网站源码版本:LaySNS_v2.2.0 程序源码下载:https://pan.lanzou.com/i0l38 ...

  9. .NET 4.0 System.Threading.Tasks学习笔记

    由于工作上的需要,学习使用了System.Threading.Tasks的使用,特此笔记下来. System.Threading.Tasks的作用: Tasks命名空间下的类试图使用任务的概念来解决线 ...

随机推荐

  1. C/C++知识要点5——智能指针原理及自己定义实现

    智能指针概述: 智能指针用来管理动态对象.其行为类似于常规指针,重要的差别是:它负责自己主动释放所指向的对象. C++ 11标准库提供两种智能指针:shared_ptr.unique_ptr 差别是: ...

  2. IP协议解读(三)

    今天我们来介绍网络层中的ICMP协议 ICMP报文格式 图一: 从图片上我们能够分析出.前三位的字段都是固定的.8位类型字段,8位代码字段.16位校验和字段.其它字段因ICMP报文类型不同而不同.8位 ...

  3. shell文本过滤编程(十一):paste命令

    [版权声明:转载请保留出处:blog.csdn.net/gentleliu. Mail:shallnew at 163 dot com] 从字面上能够看出.paste命令和cut命令功能相反,cut命 ...

  4. js+ canvas 实现人物走动

    在网上看了一篇管道工玛利亚走动的图片,感觉人物走动的太生涩了,就写了一下代码改动一下: js 代码: //定义数组图片集合 var marios = new Array("image/QQ截 ...

  5. 菜鸟nginx源代码剖析数据结构篇(九) 内存池ngx_pool_t

    菜鸟nginx源代码剖析数据结构篇(九) 内存池ngx_pool_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn ...

  6. TCO 2015 2D

    250分题:给一段仅仅有'0','1'构成的字符串,然后给出串上平衡点的定义:在串上找到某个点(位置是p),这个点将串分成左右两部分(能够为空),左右分别计算字符的值的和,假设左边有字符是'1',那么 ...

  7. windows命令行方式下打印和设置PATH变量

    点击开始菜单,运行=>cmd打印当前变量:echo %PATH%结果:C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;d:\PRO ...

  8. 通过QEMU-GuestAgent实现从外部注入写文件到KVM虚拟机内部

    本文将以宿主上直接写文件到VM内部为例讲解为何要注入以及如何实现 tag: qemu-ga, qemu guest agent, kvm, guest-file-write, inject 小慢哥的原 ...

  9. ubuntu下Chrome谷歌浏览器部分网站图片显示不正常的解决方法

    title: ubuntu下Chrome谷歌浏览器部分网站图片显示不正常的解决方法 toc: false date: 2018-09-02 14:37:26 categories: methods t ...

  10. Java NIO(二)缓冲区

    概念 缓冲区:一个用于特定基本数据类型的容器,由java.nio包定义的所有缓冲区都是Buffer抽象类的子类.其作用于与NIO的通道进行交互,数据从通道读入缓冲区,数据从缓冲区写入通道 Buffer ...