Pixhawk外设驱动开发与DMA实践

📚 共计 30 章节
01
Pixhawk硬件架构概览
FMUv2/v3/v5 硬件组成,主处理器与协处理器分工,SPI/I2C/UART/CAN 拓扑
架构总线
02
ChibiOS/RTOS基础
线程、信号量、互斥锁、消息队列,ArduPilot/PX4 底层实时操作系统核心
RTOS同步
03
外设驱动框架解析
AP_HAL 层解耦,AP_Param、AP_Periph 基础库,驱动与硬件抽象
HAL抽象
04
GPIO与外部中断
引脚模式配置,外部中断服务函数注册,从最简单 GPIO 开始
GPIOIRQ
05
UART串口通信
USART1-6 外设,波特率配置,中断接收与轮询发送
UART串口
06
I2C总线驱动开发
I2C 时序与仲裁,外部气压计驱动,多主机冲突处理
I2C从设备
07
SPI总线驱动开发
四种模式,IMU/SD卡片选管理,全双工通信实现
SPI片选
08
DMA基础概念
直接存储器访问,传输模式:内存到内存、内存到外设、外设到内存
DMA基础
09
STM32的DMA控制器
DMA1/DMA2 流与通道映射,FIFO 与突发传输设置
STM32控制器
10
DMA传输描述符与链表
链表实现循环缓冲与自动重载,减少CPU干预
链表循环缓冲
11
DMA中断与回调机制
传输完成/半传输/错误中断,高效中断服务程序设计
中断回调
12
SPI + DMA实战(一)
SPI DMA 发送与接收,轮询 vs DMA CPU 负载对比
SPIDMA
13
SPI + DMA实战(二)
数据错位、FIFO溢出、片选时序,ICM-20602 调试经验
调试IMU
14
UART + DMA实战
环形缓冲区设计,半传输中断实现双缓冲
UART双缓冲
15
I2C + DMA实战
I2C 使用 DMA 的局限,DMA发送+中断接收折中方案
I2C折中
16
ADC + DMA实战
电压/电流检测,规则组与注入组,连续采样无CPU干预
ADC连续采样
17
定时器与PWM捕获
输入捕获测量频率/占空比,DMA多通道同时捕获RC信号
定时器PWM
18
DMA内存到内存传输
高速内存拷贝,对比 memcpy 与 DMA 性能
内存拷贝性能
19
DMA与缓存一致性
Cortex-M7 Cache 问题,MPU 配置,Clean/Invalidate Cache
CacheMPU
20
中断延迟优化
延迟来源分析,DMA卸载中断负载,kHz→Hz 降频
延迟优化
21
驱动调试技巧
逻辑分析仪抓波形,hal.console->printf,AP_Logger 记录DMA状态
调试逻辑分析
22
编写单元测试
基于ChibiOS 模拟DMA中断,验证环形缓冲区完整性
测试模拟
23
驱动性能基准测试
吞吐量、延迟、CPU占用率,轮询/中断/DMA 对比
基准性能
24
高级主题:DMA2D
Chrom-ART 加速器,图层混合/像素转换,OSD 显示应用
DMA2D图形
25
高级主题:BDMA
STM32H7 基本DMA,低功耗后台传输,LPUART 接收
BDMA低功耗
26
高级主题:MDMA
主DMA 高速内存间传输,D2→D1 域 SRAM 搬运
MDMA高速
27
实战:高速SD卡日志记录器
SDIO + DMA 双缓冲,飞行中不丢日志
SD卡双缓冲
28
实战:多传感器同步采集
定时器触发ADC+SPI,DMA搬运,时间戳对齐
同步触发
29
实战:激光测距仪驱动
UART 接口 TFmini,DMA+环形缓冲接收不定长数据帧
激光TFmini
30
课程总结与展望
核心回顾,Rust/Zephyr/异构计算趋势,推荐资源
总结趋势