SPI通信

一、概述

①SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线

②四根通信线:SCKSerial Clock)、MOSIMaster Output Slave Input)、MISOMaster Input Slave Output)、SSSlave Select

③同步时序,全双工

④支持总线挂载多设备(一主多从)

 二、硬件电路

①所有SPI设备的SCKMOSIMISO分别连在一起

②主机另外引出多条SS控制线,分别接到各从机的SS引脚,主机要和谁通信就将与该从机      连接的SS线拉低,同一时间只能拉低一个从机

③输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入

④从机MISO引脚引脚为推挽输出时,为防止输出数据冲突,未被选中的从机的MISO为高阻     态断开与主机连接

⑤主机和从机都要接GND和VCC

 

三、SPI数据移位

①波特率发生器每来一个时钟,移位寄存器向左移动一位,高位先行

②规定在上升沿主机和从机从移位寄存器移出一位到通信线上,在下降沿主机和从机会采样输入到各自移位寄存器的末尾,8个时钟后主机和从机完成了一个字节的数据交换

③主机只发不收:自动忽略从机发送过来的数据。主机只接不发:发送一个垃圾数据(如:0xff)进行数据交换

 四、SPI时序基本单元

①起始条件:SS从高电平切换到低电平

②终止条件:SS从低电平切换到高电平

 

1.交换一个字节: 模式0

注:CPOL:改变时钟极性  CPHA:改变时钟相位

CPOL=0:空闲状态时,SCK为低电平

②CPHA=0:SCK第一个边沿移入数据,第二个边沿移出数据(即在SS下降沿时提前半个相位移出数据)

 

 2.交换一个字节:模式1

①CPOL=0:空闲状态时,SCK为低电平

②CPHA=1SCK第一个边沿移出数据,第二个边沿移入数据

        

 3.交换一个字节:模式2

①CPOL=1:空闲状态时,SCK为高电平

②CPHA=0:SCK第一个边沿移入数据,第二个边沿移出数据

 

4.交换一个字节:模式3

①CPOL=1:空闲状态时,SCK为高电平

②CPHA=1:SCK第一个边沿移出数据,第二个边沿移入数据

 五、SPI时序:在SPI中采用的是指令码加读写数据的模型(指令码由不同的芯片厂商规定

1.发送指令:向SS指定的设备,发送指令(0x06

 

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

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值