嵌入式学习ARM架构12——SPI
一、SPI:串行外设总线(接口)
同步全双工
SPI(Serial Peripheral Interface,串行外设接口)是一种 高速、全双工、同步、串行 通信总线
1. 物理信号(4 线全双工)
线名 方向(主视角) 作用 SCLK 输出 串行时钟,主设备产生 MOSI 输出 Master-Out-Slave-In MISO 输入 Master-In-Slave-Out CS/SS 输出 片选,低有效,一从一根 多从机时 SCLK+MOSI+MISO 共用,每个从机独占一根 CS。
2. 通信特点
同步:有时钟,无时钟线限制
全双工:收发同时完成,一次传输 = 双向 8/16/32 bit。
主从结构:主机掌握时钟,从机被动;可多主但极少用。
可突发:CS 保持低,地址自增,可连续读写任意长度。
3. 时钟模式(CPOL/CPHA)
模式 CPOL CPHA 采样沿 空闲电平 0 0 0 上升沿 低 1 0 1 下降沿 低 2 1 0 下降沿 高 3 1 1 上升沿 高 主从双方 模式必须一致,否则数据错。
4. 典型时序(8-bit 帧)
CS↓ → SCLK 8 脉冲 → MOSI 发 MSB→LSB → MISO 收 MSB→LSB → CS↑
CS 低电平 代表一帧开始;
SCLK 每个沿 移 1 bit;
全双工:主机发 bit-N 同时收 bit-N。
先发高位(uart先发低位 I2C和SPI先发高位)
时钟极性和时钟相位取决于从机:
CPOL:CPHA 00
CPOL:CPHA 01
CPOL:CPHA 10
CPOL:CPHA 11
二、ADXL345传感器实例
每个片选 一组两个缓冲区:
一次可发送:(字节为单位)
硬件接口: