SPI 通信与 ADXL345 三轴加速度传感器

发布时间:2026/9/28 20:50:38
SPI 通信与 ADXL345 三轴加速度传感器 1. SPI 协议概述SPISerial Peripheral Interface是一种高速同步串行通信协议采用一主多从的拓扑结构通过片选信号选择通信对象。SPI 通信的特点是写即是读、读即是写主机通过移位寄存器shift register同时完成数据的发送和接收。全双工发送和接收同时进行。同步由主机提供时钟信号 SCLK。引脚SCLK时钟线、MOSI主发从收、MISO主收从发、CS/SS片选线。数据位序高位先行。传输速率1MHz 到几百 MHz。拓扑结构一主多从每个从机对应一条片选线。2. SPI 时钟极性与相位SPI 通信的时序由 CPOL时钟极性和 CPHA时钟相位两个参数共同决定。CPOLClock Polarity时钟极性决定空闲时 SCLK 时钟线是高电平还是低电平。CPOL 0空闲时 SCLK 为低电平。CPOL 1空闲时 SCLK 为高电平。CPHAClock Phase时钟相位决定接收方在第几个边沿采样数据。CPHA 0接收方在 SCLK 第一个边沿采样。CPHA 1接收方在 SCLK 第二个边沿采样。3. SPI 四种工作模式工作模式CPOLCPHA空闲电平采样边沿模式 000低电平上升沿采样模式 101低电平下降沿采样模式 210高电平下降沿采样模式 311高电平上升沿采样4. SPI 读写机制SPI 通信的特点是写即是读、读即是写主机通过移位寄存器shift register同时完成数据的发送和接收。写操作主机发送寄存器地址然后发送要写入的数据。读操作主机发送寄存器地址然后发送占位字节 Dummy0xFF 或 0x00从机在此时回复数据。imx6ull 的 SPI 控制器内部包含 TXFIFO发送缓冲区和 RXFIFO接收缓冲区用于缓存待发送和已接收的数据。5. ADXL345 加速度传感器实战5.1 传感器概述ADXL345 是一款三轴加速度传感器通过 SPI 接口与主控芯片如 imx6ull通信可测量 x、y、z 三个方向的加速度。通信接口SPI Slave通过 SCLK、MOSI、MISO、CS 四根线与 SPI Master 连接。测量轴x、y、z 三轴。分辨率13 位取值范围为 0 到 2^13 - 1。加速度量程±16g其中 1g 9.8m/s²。5.2 加速度数据计算一个数对应的重力加速度为32g / (2^13 - 1) 0.0039g。实际加速度的计算方法为读取到的原始数值乘以 0.0039g。x 轴加速度123 × 0.0039gy 轴加速度200 × 0.0039gz 轴加速度300 × 0.0039gADXL345 采集流程读取寄存器获得 x、y、z 三轴原始数据 → 原始数据 × 0.0039g → 得到 x、y、z 加速度 → 进行姿态检测。6. 总结SPI 与其他通信方式对比SPI 是本文的核心但在实际项目中常需要根据场景选择合适的通信协议。下表将 SPI 与 UART、I2C 进行对比便于理解各自的适用场景。对比项UARTI2CSPI工作方式全双工、异步、串行半双工、同步、串行全双工、同步、串行引脚数量两根线TXD、RXD两根线SCL、SDA四根线SCLK、MOSI、MISO、CS传输速率小于 5MHz100KHz - 3.4MHz1MHz - 100MHz通信拓扑点对点多主多从一主多从数据位序低位先行高位先行高位先行协议选择建议UART适合点对点、低速、简单场景如调试串口、GPS 模块通信。I2C适合多设备挂载、引脚受限的场景如传感器、EEPROM 等外设。SPI适合高速、大数据量传输场景如 Flash 存储、显示屏、加速度传感器等。常见注意事项SPI 通信时主从设备的 CPOL 和 CPHA 必须配置一致否则采样时序错乱。I2C 通信需要上拉电阻SCL 和 SDA 均为开漏输出。UART 通信双方必须设置相同的波特率、数据位、停止位和校验位。SPI 读操作中的 Dummy 占位字节用于产生时钟信号驱动从机在时钟边沿输出数据。