01
PX4驱动框架概述
了解PX4的uORB消息机制、设备驱动模型、以及驱动在NuttX RTOS中的位置。
uORB设备模型
02
中断基础概念
ARM Cortex-M4/M7中断向量表、NVIC配置、中断优先级与抢占。
NVIC优先级
03
PX4中断注册与处理
使用px4_register_interrupt()注册中断,编写中断服务函数(ISR)。
ISR注册
04
中断下半部机制
在PX4中使用work_queue延迟工作队列处理中断下半部,避免在ISR中做耗时操作。
work_queue下半部
05
中断与uORB发布
在中断服务函数中如何安全地通过uORB发布传感器数据。
uORB安全发布
06
DMA基础概念
STM32 DMA控制器原理、传输方向、循环模式、数据宽度与FIFO。
循环模式FIFO
07
DMA描述符与链表
使用DMA链表模式实现多缓冲区循环采集,减少CPU干预。
链表多缓冲
08
DMA与中断协同
DMA传输完成中断触发,在中断中处理数据并启动下一次传输。
完成中断乒乓
09
SPI驱动中的DMA
配置SPI的DMA传输,实现高速传感器数据读取(如BMI088)。
SPIBMI088
10
I2C驱动中的DMA
I2C的DMA传输配置与注意事项,处理NACK和总线错误。
I2CNACK
11
UART驱动中的DMA
串口DMA收发实现,结合环形缓冲区处理不定长数据。
UART环形缓冲
12
定时器触发DMA
使用定时器更新事件触发DMA,实现精确采样率控制。
定时器触发
13
ADC驱动中的DMA
多通道ADC的DMA采集,结合定时器触发实现同步采样。
ADC多通道
14
DMA内存到内存传输
在PX4中利用DMA进行内存拷贝,加速数据处理流程。
内存拷贝加速
15
中断延迟分析与优化
测量中断响应时间,优化中断优先级和临界区保护。
延迟临界区
16
DMA带宽与冲突
分析多DMA通道同时工作时的总线仲裁与带宽分配。
总线仲裁带宽
17
缓存一致性问题
在带Cache的MCU(如STM32H7)上处理DMA与CPU的数据一致性。
Cache一致性
18
DMA调试技巧
使用逻辑分析仪和调试寄存器查看DMA传输状态。
调试逻辑分析仪
19
PX4传感器驱动实战(一)
基于中断的加速度计驱动(ICM-42688-P)。
加速度计ICM-42688
20
PX4传感器驱动实战(二)
基于DMA的陀螺仪驱动(BMI088)。
陀螺仪BMI088
21
PX4传感器驱动实战(三)
基于中断+DMA的气压计驱动(MS5611)。
气压计MS5611
22
PX4传感器驱动实战(四)
基于DMA的磁力计驱动(IST8310)。
磁力计IST8310
23
PX4执行机构驱动
基于定时器中断的PWM/DSHOT输出驱动。
PWMDSHOT
24
PX4遥控器接收机驱动
基于UART中断的SBUS/CRSF协议解析。
SBUSCRSF
25
PX4 GPS驱动
基于UART DMA的GPS数据接收与NMEA/UBX协议解析。
GPSUBX
26
PX4光流驱动
基于SPI中断的光流传感器数据采集。
光流SPI
27
PX4距离传感器驱动
基于I2C中断的TOF传感器驱动(VL53L1X)。
TOFVL53L1X
28
多核架构下的中断与DMA
在STM32H7双核架构下分配中断与DMA资源。
双核H7
29
低功耗模式下的中断与DMA
在PX4休眠模式下如何通过中断唤醒并恢复DMA。
低功耗唤醒
30
综合项目:完整传感器驱动
构建一个完整的PX4传感器驱动,集成中断、DMA、uORB发布与参数配置。
综合项目