相关文章
1.《SPI通信协议介绍》
2.《STM32的SPI外设使用》
3.《【IMU】BMI160 Driver分析及使用》
1.SPI简介
SPI协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface
),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU 间,要求通讯速率较高的场合。
- 优点:
- 支持全双工操作
- 操作简单
- 数据传输速率较高
- 缺点:
- 需要占用主机较多的线(每个从机都需要一条片选线)
- 没有指定的流控制
- 没有应答机制确认是否接收到数据
2.SPI硬件连接介绍
两个SPI设备之间的通信必须由主设备(Master)来控制从设备(Slave)。主设备可以通过提供时钟信号以及对从设备进行片选来控制多个从设备。从设备本身并不产生时钟信号,其时钟信号由主设备提供。
- MOSI:主设备数据输出,从设备数据输入
- MISO:主设备数据输入,从设备数据输出
- SCLK:时钟信号,由主设备产生
- CS:从设备使能信号,由主设备控制
3.SPI通信模式介绍
SPI通信有4种不同的模式,一般是通过CPOL(时钟极性)和CPHA(时钟相位)来配置。如下:
SPI模式 | CPOL | CPHA | 空闲SCK时钟 | 采样时刻 |
---|---|---|---|---|
0 | 0 | 0 | 低电平 | 奇数边沿 |
1 | 0 | 1 | 低电平 | 偶数边沿 |
2 | 1 | 0 | 高电平 | 奇数边沿 |
3 | 1 | 1 | 高电平 | 偶数边沿 |
4.SPI读写时序
这里SPI读写时序通过一款SPI接口的IMU(BMI160)实例来介绍,它默认使用模式3(CPOL=1 CPHA=1
)。
- 写时序:
- 读时序:
(备注:第一个截图为datasheet介绍的时序,第二个截图为逻辑分析仪实际抓取的时序)