2、SPI协议详解

一、简述
 
    SPI Bus(Serial Peripheral Interface Bus) 最早是由Motorola(摩托罗拉)公司开发的 全双工同步串行总线。实际它并没有统一的协议规范,只是随之其广泛的应用,形成了习惯性的标准。具体的还是要参考特定的器件手册。
 
二、连接方式
 
SPI一对一
 
       
 
    SPI用于在单个主控制器和一个或多个从设备之间交换数据。提供时钟的为主设备(Master),接收时钟的设备为从设备(Slave),对于单从设备连接使用四条信号线:
            SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)
  • MISO: 主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。
  • MOSI: 主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
  • SCLK:  串行时钟信号,由主设备产生。
  • CS/SS: 从设备片选信号,由主设备控制。它的功能是用来作为“片选引脚”,也就是选择指定的从设备,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。
 
SPI一对多
  
 
三、通讯协议
    当SPI主设备想读/写[从设备]时,它首先拉低[从设备]对应的SS线(SS是低电平有效),接着开始发送工作脉冲到时钟线上,在相应的脉冲时间上,[主设备]把信号发到MOSI实现“写”,同时可对MISO采样而实现“读”,如下图:
    
  • 首先确认是mode3,即sck的下降沿发送数据,上升沿采集数据。
  • SSEL(CS)拉低,选中对应的从设备
  • SCK第奇数个边沿(下降沿),MOSI(输出)改变数据(MISO也会类似的变化),例如,如果想要输出1,则此时需要从0变为1或者保持1不变
  • SCK的偶数个边沿(上升沿),此时会采集MISO上的数据,锁存到寄存器中。
  • 主次三四步,对于从设备而言,主设备的MOSI和MISO在从设备上刚好是相反的。下面会通过一个例子详细解释过程。
 
    例:
        假设主机和从机初始化就绪:并且主机的sbuff=0x72,从机的sbuff=0xC7,下面将分步对spi的8个时钟周期的数据情况演示一遍
        假设CPOL为0,SCPH为0,即mode 0,上升沿发送,下降沿接收
 
编号
脉冲
主机sbuff
从机sbuff
MOSI
MISO
0
0 初始状态
0111 0010
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值