# 匿名凌霄飞控 **Repository Path**: anotc/AnoLX ## Basic Information - **Project Name**: 匿名凌霄飞控 - **Description**: 匿名凌霄飞控 - **Primary Language**: C - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-08-07 - **Last Updated**: 2026-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 匿名凌霄飞控(ANO-LX) > 匿名科创(ANO Tech)开源的多旋翼飞控系统。本仓库包含飞控 MCU 端源码(**内置 AnoPTv8 通信协议库**,克隆即可编译)、硬件原理图/PCB、芯片手册、开发环境资料,以及[完整 Wiki 文档](./wiki/Home.md)(使用手册 + 源码解析)。 ## 项目简介 凌霄飞控采用**双 MCU 架构**: - **凌霄 IMU**(姿态解算单元):运行姿态融合、控制算法核心,对外提供姿态/速度/高度数据,接受控制目标 - **飞控 MCU**(本仓库的 `0-FcSource`):负责遥控输入、传感器采集(GPS/光流/气压/电池)、电调 PWM 输出、数传通信,通过 **AnoPTv8 协议**与凌霄 IMU 通信 两者之间是主从协作关系:飞控 MCU 把遥控/传感器数据打包发给 IMU,IMU 算完后回传控制量,飞控 MCU 再输出到电调。 通信使用 **AnoPTv8(V8)协议**,其库源码已内置在 [`0-FcSource/AnoPTv8/`](./0-FcSource/AnoPTv8/README.md)(自动同步自官方仓库 [gitee.com/anotc/AnoPTv8](https://gitee.com/anotc/AnoPTv8)),因此克隆本仓库后**无需任何外部依赖即可编译**。 ## 仓库结构 ``` AnoLxGit/ ├── 0-FcSource/ 飞控 MCU 端源码工程(Keil MDK) │ ├── FcSrc/ 应用层源码 │ │ ├── ANO_LX.c/.h 飞控主任务(模式切换、遥控处理、电调输出) │ │ ├── LX_FC_Fun.c/.h 飞控功能(解锁、起飞、返航、模式切换) │ │ ├── LX_FC_State.c/.h 飞控状态机 │ │ ├── DataTransfer.c/.h 与 IMU 的业务数据帧收发 │ │ ├── LX_FC_EXT_Sensor.c/.h 外部传感器(GPS/光流)数据处理 │ │ ├── User_Task.c/.h 用户任务入口 │ │ ├── main.c 程序入口 │ │ ├── SysConfig.h 系统配置(PWM频率、版本号、传感器选择) │ │ └── AnoPTv8/ AnoPTv8 协议库移植层(本地3个文件) │ │ ├── AnoPTv8ExAPI.c 移植层实现(串口/USB 收发) │ │ ├── AnoPTv8_Config.h 设备配置(设备ID、链路、版本号) │ │ └── AnoPTv8_UserFrames.h 工程专属帧(电池数据帧 0x0D) │ ├── DriversBsp/ 板级驱动(光流、GPS、数学库) │ ├── DriversMcu/STM32F407/ MCU 相关(外设驱动、USB、标准库) │ ├── AnoPTv8/ AnoPTv8 协议库内置副本(同步自官方仓库) │ └── ProjectSTM32F407/ Keil 工程文件(.uvprojx) │ ├── 1-原理图_PCB/ 硬件资料 │ ├── STM32F407核心板原理图.pdf │ ├── MSP432核心板原理图.pdf │ ├── TM4C123核心板原理图.pdf │ ├── 凌霄整机底板ANO-LX-PCB2-*.pdf │ └── 飞控底板兼容版.PcbDoc (AD 工程,可用 Altium Designer 打开) │ ├── 2-相关芯片Datasheet/ 芯片手册(IMU/气压计/GPS/STM32 等) ├── 8-开发环境安装/ Keil MDK 安装包与教程 ├── 99-其他资料PDF/ 参考书籍/资料 ├── LICENSE GPL-3.0 └── README.md 本文件 ``` ## 硬件规格 | 项目 | 说明 | |------|------| | 飞控 MCU | STM32F407(主频 168MHz,Cortex-M4F) | | 核心板兼容 | STM32F407 / MSP432 / TM4C123(三选一,原理图均提供) | | IMU | MPU6050 / ICM20602 / MPU9150(取决于核心板版本) | | 气压计 | MS5611 / SPL06 | | 磁力计 | AK8975(MPU9150 内置) | | GPS | u-blox M8(支持 RTK 可选) | | 电调输出 | 8 路 PWM,400Hz,1000-2000us | | 遥控输入 | 支持 PPM / SBUS | | 通信 | USB-CDC + 多路 UART(接数传/光流/IMU/GPS) | ## 软件架构(飞控 MCU 端) ![软件架构(飞控 MCU 端)](wiki/images/software-arch.png) 各层详解见 Wiki:[源码总览与架构](./wiki/06-源码解析/源码总览与架构.md) · [通信架构与AnoPTv8协议](./wiki/06-源码解析/通信架构与AnoPTv8协议.md) · [驱动层详解](./wiki/06-源码解析/驱动层详解.md)。 ## 快速开始 ### 1. 准备开发环境 - 安装 **Keil MDK-ARM**(见 `8-开发环境安装/`) - 安装 **STM32F4xx DFP**(Device Family Pack,Keil 内可下载) - 推荐用 ST-Link 或 J-Link 下载调试 ### 2. 协议库(已内置,无需额外克隆) 协议库 [AnoPTv8](https://gitee.com/anotc/AnoPTv8)(匿名通信协议 V8,GPL-3.0)的 11 个源文件已**内置**在 [`0-FcSource/AnoPTv8/`](./0-FcSource/AnoPTv8/README.md),Keil 工程直接引用该目录,克隆本仓库后即可编译,无需任何外部依赖(路径调整后已在 Keil AC5 实际编译验证,固件产物与替换前逐字节一致)。 > 该目录由维护流程自动与官方仓库保持同步(勿手改);协议层改动请提交到官方 AnoPTv8 仓库。 目录关系示例: ``` 某根目录/ ├── .../TeamWork/0-CODE/AnoPTv8/ ← 协议库(从 AnoPTv8 仓库克隆) └── .../Gitee/AnoLxGit/ ← 本仓库 └── 0-FcSource/ProjectSTM32F407/ ← 工程文件在此 ``` > 若你的目录结构不同,需在 Keil 工程 `Options → C/C++ → Include Paths` 和工程文件列表中修正 AnoPTv8_Lib 组的相对路径。 ### 3. 编译与下载 1. 用 Keil 打开 `0-FcSource/ProjectSTM32F407/ANO_LX_STM32F407.uvprojx` 2. 选择目标芯片 STM32F407 3. Build(F7) 4. 下载到核心板 ### 4. 上位机调试 - 配套上位机:[AnoAssistant](https://gitee.com/anotc/AnoAssistant)(匿名助手上位机软件) - 通过 USB 或数传连接飞控 - 可观察实时数据、在线调参(PID 等)、触发命令、查看日志 ## 遥控器通道定义 | 通道 | 枚举 | 功能 | |------|------|------| | CH1 | ch_1_rol | 横滚(Roll) | | CH2 | ch_2_pit | 俯仰(Pitch) | | CH3 | ch_3_thr | 油门(Throttle) | | CH4 | ch_4_yaw | 偏航(Yaw) | | CH5 | ch_5_aux1 | **紧急停机**(拨杆 >1200 触发停机) | | CH6 | ch_6_aux2 | **飞行模式切换**(<1200 模式1 / <1700 模式2 / 否则 模式3) | **飞行模式说明**: - 模式1:自稳+定高(CH1/2/3 控姿态,CH3 控垂直速度) - 模式2:定点(CH1/2 控水平速度,CH3 控垂直速度,CH4 控 YAW) - 模式3:程控(摇杆不参与,纯指令控制) > ⚠️ 紧急停机:CH5 拨杆离开最低档(>1200)即触发,所有电调强制输出最低值。飞行中 CH5 必须保持在最低档。触发/恢复时会上报警示字符串到上位机。 ## 配置说明 关键配置在 `FcSrc/SysConfig.h` 和 `FcSrc/AnoPTv8/AnoPTv8_Config.h`: - **PWM 频率**:`PWM_FRE_HZ`(默认 400Hz) - **传感器选择**:GPS 型号(`GPS_USE_UBLOX_M8` / `GPS_USE_RTK`) - **设备信息**:硬件/软件版本号、设备名称(`AnoPTv8_Config.h`) - **通信链路**:UART 分配、USB 使能(`AnoPTv8_Config.h` 的 `LT_*` 定义) ## 文档 - **本仓库 Wiki**:[wiki/](./wiki/Home.md) —— 飞控使用手册(产品介绍、硬件指南、快速上手、飞行操作、参考)+ 基于源码实读的[源码解析](./wiki/06-源码解析/源码总览与架构.md)(架构、任务调度、通信协议、二次开发指南)。`wiki/` 目录即 Gitee Wiki 源文件(`Home.md` 为首页、`_sidebar.md` 为侧边栏) - **源码注释**:各 `.c/.h` 文件顶部有详细中文注释说明职责与用法 - **硬件资料**:`1-原理图_PCB/` 内含核心板与整机底板原理图 - **芯片手册**:`2-相关芯片Datasheet/` 内含主要芯片的中文/英文手册 - **通信协议说明**:[AnoAssistant Wiki](https://gitee.com/anotc/AnoAssistant/wikis/Home)(协议格式、帧定义、上位机对接详解) - **协议库文档**:参考 [AnoPTv8 仓库](https://gitee.com/anotc/AnoPTv8) 的 README ## 兼容性 - **MCU**:当前源码工程针对 STM32F407。硬件原理图同时提供 MSP432 / TM4C123 核心板,移植需对应调整 `DriversMcu/` - **编译器**:Keil MDK-ARM(ARMCC v5) - **协议**:与凌霄 IMU 之间使用 AnoPTv8 协议,需配合对应版本的 IMU 固件 ## 相关链接 - **匿名科创官网**:[www.anotc.com](https://www.anotc.com)(硬件购买、完整资料) - **配套上位机**:[AnoAssistant](https://gitee.com/anotc/AnoAssistant)(匿名助手上位机软件) - **通信协议说明**:[AnoAssistant Wiki](https://gitee.com/anotc/AnoAssistant/wikis/Home) - **通信协议源码**:[AnoPTv8](https://gitee.com/anotc/AnoPTv8)(匿名通信协议 V8 库) - **技术交流QQ群**:190169595 - **淘宝**:[anotc.taobao.com](https://anotc.taobao.com) ## 许可证 GPL-3.0,见 [LICENSE](LICENSE)。 ## 致谢 匿名科创团队开源飞控程序,欢迎大家进群交流、学习、共同进步。开源不易,若本项目对您有帮助,欢迎 Star 支持并注明出处。