11 SPI通信协议

SPI通信协议

  • SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线
  • 四根通信线:SCK(Serial Clock)、MOSI(Master Output Slave Input)、MISO(Master Input Slave Output)、SS(Slave Select)
  • 同步,全双工
  • 支持总线挂载多设备(一主多从
  • 高位先行

硬件电路

  • 所有SPI设备的SCK、MOSI、MISO分别连在一起
  • 主机另外引出多条SS控制线,分别接到各从机的SS引脚
  • 输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入

主机和所有从机必须共地

主机选择从机时,则给该从机SS置0,同一时间只能选择一个从机。

当从机SS引脚为高电平,即从机未被选中时,它的MISO引脚必须切换为高阻态,高阻态相当于引脚断开,不输出任何电平。这样就可以防止一条线有多个输出而引发的电平冲突问题。在SS为低电平时,MISO才允许变为推挽输出。

移位示意图

 

按照箭头所示的方向一位一位进行字节交换。 

SPI时序基本单元 

  • 起始条件:SS从高电平切换到低电平
  • 终止条件:SS从低电平切换到高电平

  •  交换一个字节(模式0)
  • CPOL=0:空闲状态时,SCK为低电平
  • CPHA=0:SCK第一个边沿移入数据,第二个边沿移出数据

 

  • 交换一个字节(模式1)
  • CPOL=0:空闲状态时,SCK为低电平
  • CPHA=1:SCK第一个边沿移出数据,第二个边沿移入数据 

  • 交换一个字节(模式2)
  • CPOL=1:空闲状态时,SCK为高电平
  • CPHA=0:SCK第一个边沿移入数据,第二个边沿移出数据 

 

  • 交换一个字节(模式3)
  • CPOL=1:空闲状态时,SCK为高电平
  • CPHA=1:SCK第一个边沿移出数据,第二个边沿移入数据 

 

发送指令

向SS指定的设备,发送指令(0x06)

//发送流程:指令码+数据

  • 指定地址写
  • 向SS指定的设备,发送写指令(0x02),      
  • 随后在指定地址(Address[23:0])下,写入指定数据(Data)

  • 指定地址读
  • 向SS指定的设备,发送读指令(0x03),      
  • 随后在指定地址(Address[23:0])下,读取从机数据(Data )

 

先把三个字节的地址0x123456交换过来,然后读取该地址下的数据。

SS为1,则读写操作结束。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值