正点原子minifly学习

对正点原子的开发板学习已经好几个月了,暂且了解了一点freertos和stm32的一些知识。本着从项目入手的原则,从今天开始,对正点原子小四轴无人机minifly进行学习。

** 目录**

minifly_v1.3学习笔记(一)main.c
minifly_v1.3学习笔记(二)radiolinkTask
minifly_v1.3学习笔记(三)usblink.c
minifly_v1.3学习笔记(四) atkp.c

程序框图

minifly四轴部分由NRF51822和STM32F411两个芯片共同控制。NRF51822主要负责无线通信和电源管理;STM32F411则负责接受、发送各种数据,以及数据融合从而进行pid控制。
程序框架如下:
正点原子minifly学习_第1张图片

esb.c 是无线通信驱动代码;
systick.c 是系统滴答定时器驱动代码;
uart.c 是串口驱动代码;
button.c 是按键驱动代码;
pm.c 是电源管理驱动代码。
遥控器发送过来的数据包通过radiolink.c 传送至 main.c,main.c 解析数据包,如果不 是发给 NRF51822 的则通过 uartlink.c 转发给 STM32F411;当 STM32F411 接收到一条数据 包后会立即通过uartlink.c返回一条数据包到main.c,main.c再通过radiolink.c转发给遥控器。 就这样 NRF51822 起到了通信桥梁的作用。

正点原子minifly学习_第2张图片
STM32F411主控芯片,使用freertos实时操作系统,任务关系如下:

radiolinkTask:无线通信任务。该任务主要负责接收从 NRF51822 发送(串口方式)过 来的数据,然后对数据进行打包和校验,打包成 ATKP 格式并校验无误后发送到 atkpRxAnlTask 的接收队列里,同时回传一帧数据给 NRF51822。
usblinkRxTask:USB 通信接收任务。该任务主要负责接收上位机发下来(USB 虚拟串 口方式)的数据,然后对数据进行打包和校验,打包成 ATKP 格式并校验无误后发送到 atkpRxAnlTask 的接收队列里。
atkpRxAnlTask:ATKP 数据包接收处理任务。该任务主要是处理遥控器和上位机发下 来的数据包,解析到的控制指令则发送到 stabilizerTask 中去。
stabilizerTask:四轴平衡控制任务。该任务运行的内容比较多,也是比较关键的内容。 包括传感器数据读取,数据融合,获取控制数据,空翻检测,异常检测,PID 控制,PWM 输出控制等。
wifilinkTask:手机控制任务。该任务主要是接收 WiFi 摄像头模块的串口数据,然后按 照 WiFi 摄像头模块通讯协议解析成对应的控制指令,并将控制指令发送到 stabilizerTask。
atkpTxTask:ATKP 数据包发送任务。该任务主要是获取 stabilizerTask 中的传感器数据、 姿态数据、电机 PWM 输出数据等数据以定周期发送给 radiolinkTask 和 usblinkTxTask,由这 两个任务分别发送飞遥控器和上位机。
usblinkRxTask:USB 通信发送任务。该任务主要负责发送 atkpTxTask 发送过来的数据 包,这些数据包主要是传感器数据、姿态数据等。

两者通过串口进行通信。

  • 使用NRF51822电源管理的优势

1.可以让四轴关机时,NRF51822运行在待机模式,STN32处于断电状态,功耗极低。
2.可以控制STM32的启动模式

以下是开发手册对此的叙述:

四轴在关机状态时,NRF51822 运行在待机模式,STM32F411 属于断电状态,功耗极低。 当按键按下时,NRF51822 从待机模式被唤醒,唤醒后程序先判断当前按下时间,如果是短 按或没有按下则启动 STM32F411 到固件模式,如果是长按则启动 STM32F411 到固件升级 模式。启动方式:NRF51822 拉高 UART_RTS_PIN 引脚,使能电源芯片给 STM32F411 供电, STM32F411 上电后先运行 bootloader 程序,程序中判断 UART_RTS_PIN 引脚为高电平的话 则留在 bootloader 程序等待固件升级,如果不是高电平则跳转至固件。NRF51822 程序运行 后,main.c 中以 100ms 周期时间获取 pm.c 采集四轴电池的电压值并转发给 STM32F411。就 这样 NRF51822 起到了电源管理的作用。

你可能感兴趣的:(minifly)