最近在学习autoquad源码,发现网络上关于这方面的知识不多。大多是笼统的简介并没有对源码的详细分析。所以一切都要从头看起。相比于apm和px4这些飞控代码autoquad要精简的多。因为它不需要兼容多个硬件所以就少了很多的中间层次结构。这也给分析代码带来了很大的便捷。并且其底层使用ST标准外设库,也是国内大多数搞STM32的工程师所熟悉的。下表列举一些autoquad的一些软硬件参数表。
硬件资源 | 详细 |
---|---|
主控 | STM32F405RGT6 |
IMU | MPU6000+HMC5983+MS5611(均为SPI接口) |
存储设备 | SDcard+EEPROM |
通讯接口 | 多路USART、CAN总线、USB接口 |
以下是软件资源
软件资源 | 详细 |
---|---|
操作系统 | COOCOX |
文件系统 | FATFS |
状态估计算法 | SRCDKF |
控制算法 | 传统PID +L1自适应(闭源) |
调用库 | ST标准外设库、USB驱动、FATFS文件系统 |
总体来说autoquad的代码结构还是比较清晰的。包含各个stm32的外设驱动及各个模块的驱动再结合算法部分便形成了完整的工程。由于其编译环境不是keil所以网上也有把该工程移植到keil下的代码。但好多真的是下载后无法运行的。因为好多参数都需要改。不修改的话程序会卡死。
autoquad对应的飞控有模拟传感器和数字传感器。不过研究比较多的是基于其数字传感器的飞控-autoquad-M4。传感器接口都是SPI通信,保证了传感器传输速度的高速型,其完善的SPI驱动结构设计加上DMA传输使得传感器数据采集完全在后台采集,占用极少的系统资源,同时又保证了数据的实时性。
接下来就直接从main函数走起
int main ( void )
{
fpuInit(); // 设置FPU
rccConfiguration();//时钟使能及板