基础[嵌入式] SPI通讯协议

308 阅读1分钟

什么是spi

spi一个一主多从的串行总线通讯协议,属于全双工通讯,可以在同一时间内发送和接收数据。

image.png

SPI总线一共包括四条

  • MISO:从机向主机发送数据,master input slave output
  • MOSI:主机向从机发送数据,master output slave input
  • SCLK:serial clock 串行时钟信号,由主机产生发给从机
  • SS:片选信号,由主机发送,用于控制与哪些从机通讯,通常是低电平有效

SPI的四种通讯模式:

这四种通讯模式分别由时钟极性和时钟相位决定。

空闲电平为低电平,在时钟的上升沿或时钟下降沿采集数据。

空闲电平为高电平,在时钟的上升沿或时钟下降沿采集数据

具体需要根据从设备的芯片手册决定我们采用何种通讯方式。

image.png

一般的SPI数据组成

一般分为 起始位,操作吗,地址,数据等,如eeprom 93c46芯片

我们看一下93c46的datasheet是如何定义通讯的

image.png

我们可以看到该表格将通讯分为了 起始位,操作码,地址码,数据码

起始位:1
操作码:读数据 10 写数据 01
地址码:7位 (可访问128个地址空间)
数据位:8位(每次写入一字节)

例如我们在01号地址空间内写入 0x0f,则对应的,编码为
1 01 0000001 00001111
我们读取该地址数据时编码为
1 10 0000001