📘 SPI·传感器实战
30章 从入门到项目
⭐ 友好色系
1
SPI总线协议基础
四线制
SPI起源 · SCLK/MOSI/MISO/CS详解 · 与I2C/UART对比
2
SPI工作模式
CPOL/CPHA
4种模式时序图 · Mode 0/1/2/3 · 模式匹配原则
3
SPI数据帧格式
MSB/LSB
8/16位帧 · 字节序与对齐
4
SPI多从机架构
片选&菊花链
CS管理 · 菊花链拓扑 · 多从机仲裁
5
Linux SPI子系统架构
分层设计
核心层 · 控制器驱动 · 设备驱动
6
SPI控制器驱动
spi_master
消息队列 · DMA传输支持
7
SPI设备驱动模型
spi_device
spi_driver注册/注销 · 设备树匹配
8
SPI数据传输API
读写接口
spi_write/read/write_then_read/sync_transfer
9
SPI异步传输
spi_async
completion回调 · 异步性能优势
10
SPI设备树绑定
设备节点
compatible/reg/spi-max-frequency · pinctrl · 中断
11
SPI驱动调试技巧
spidev
ioctl接口 · 逻辑分析仪抓波形
12
传感器驱动开发概述
分类/架构
温度/压力/IMU · IIO子系统简介
13
IIO子系统框架
核心/触发/缓冲
IIO设备驱动 · sysfs与字符设备接口
14
IIO设备驱动开发
iio_dev
iio_info回调 · 通道定义与扫描元素
15
IIO触发与缓冲
triggered buffer
硬件/软件触发 · kfifo环形缓冲区
16
温度传感器 DS18B20
单总线模拟
SPI转单总线桥接 · 温度转换读取
17
加速度传感器 ADXL345
SPI寄存器
FIFO模式 · 活动/非活动中断
18
陀螺仪 MPU6050
SPI/I2C双模
DMP数据处理 · 姿态角解算
19
压力传感器 BMP280
校准补偿
SPI初始化 · 校准系数 · 温度压力补偿
20
磁力计 HMC5883L
罗盘校准
SPI通信 · 自检模式 · 偏移消除
21
多传感器数据融合
时间戳/对齐
卡尔曼滤波在驱动层的实现
22
SPI总线高速设计
信号完整性
时钟频率 · SI问题 · PCB布局布线
23
SPI驱动电源管理
Runtime PM
系统休眠/唤醒 · 传感器低功耗模式
24
SPI驱动错误处理
超时/CRC
重传机制 · 错误恢复策略
25
SPI设备热插拔
GPIO模拟CS
动态添加/移除 · udev规则
26
SPI驱动性能优化
DMA环形缓冲
零拷贝传输 · 批量采集与批处理
27
传感器驱动测试方法
kselftest
模拟器测试 · 硬件在环HIL
28
用户空间SPI访问
spidev
spi-tools · Python spidev库
29
传感器驱动安全
权限/审计
ioctl安全审计 · 数据校验防篡改
30
综合项目实战
多传感器采集
温度+加速度+压力 · 设备树到应用层