SPI通信

SPI(Serial Peripheral Interface)串行外设接口

1 SPI时钟信号的相位与极性

  SPI接口由CPOL和CPHA设置四种不同传输格式的时序。其中:

    CPOL(Clock Polarity)时钟极性

    CPHA(Clock Phase)时钟相位

    CPOL决定时钟信号SCK的有效脉冲方式  0:表示空闲状态时,SCK保持低电平;1:表示空闲状态时,SCK保持高电平;

    CPHA决定数据线MOSI、MISO什么时候输出数据或什么时候采集数据 0:表示数据采样从第一个时钟边沿开始;1:表示数据采样从第二个时钟边沿开始。

    一 (CP0L=0;CPHA=0):

    

    此方式下,空闲状态SCK处于低电平;数据采样是在第1个边沿,也就是SCK电平到高电平的跳变,由图可以看出每一个上升沿到来之前数据已经准备好,所以上升沿进行数据采集;同时可以看出SCK从高电平向低电平跳变时进行数据发送,即下降沿进行数据发送

    二 (CPOL=1;CPHA=0):

    

 

    此方式下,空闲状态SCK处于高电平;数据采样是在第1个边沿,也就是SCK电平到低电平的跳变,由图可以看出每一个下降沿到来之前数据已经准备好,所以下降沿进行数据采集;同时可以看出SCK从低电平向高电平跳变时进行数据发送,即上升沿进行数据发送

    三 (CPOL=0;CPHA=1):

    

    此方式下,空闲状态SCK处于低电平;数据发送是在第一个边沿,也就是SCK电平到高电平的跳变,由图可以看出每个上升沿到来之前数据还未准备好,所以上升沿进行数据发送;同时可以看出当下降沿到来时数据已经准备完成,可以进行数据采集,所以下降沿进行数据采集

    四 (CPOL=1;CPHA=1):

    

    此方式下,空闲状态SCK处于高电平;数据发送是在第一个边沿,也就是SCK电平到低电平的跳变,由图可以看出每一个下降沿到来之前数据还未准备好,所以下降沿进行数据发送;同时可以看出当上升沿到来时数据已经准备完成,可以进行数据采集,所以上升沿进行数据采集

 

2 总结:数据与时钟的相位关系表

CPOL/CPHA的设定 第一位数据的输出 其它位的输出 数据采样
CPOL=0,CPHA=0 在第一个SCK上升沿之前 SCK下降沿 SCK上升沿
CPOL=1,CPHA=0 在第一个SCK下降沿之前 SCK上升沿 SCK下降沿
CPOL=0,CPHA=1 第一个SCK上升沿 SCK上升沿 SCK下降沿
CPOL=1,CPHA=1 第一个SCK下降沿 SCK下降沿 SCK上升沿

 

 

  

 

 

 

 

3 数据传输分析

  主机移位寄存器中的一个数据通过MOSI传到从机移位寄存器(即写操作);同时,从机移位寄存器中的一个数据通过MISO传到主机移位寄存器(即读操作);读写操作同时进行。

  1.如果主机只进行写操作,主机只需忽略接收到的字节

  2.如果主机要读取从机的一个字节,必须先发送一个空字节0xFF,才能使从机中的数据移到主机。

    注:所谓的空字节,SPI通信都是由主机发起的,想要从从机读取数据,就必须给它提供时钟,而SPI主机产生时钟的方法,一般都是通过SPI_DR寄存器写值,这里写入0xFF表示要发送0xFF这个数据了,SPI就会产生SCK,输出给从机,从而给从机提供时钟。

 

posted @ 2018-11-08 08:45  dongry  阅读(1918)  评论(0编辑  收藏  举报