浅谈SPI总线
概念
SPI接口是Motorola首先提出的同步串行全双工外围接口总线。采用主从模式架构,支持多从机模式应用,一般仅支持单主机。时钟由主机控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后。SPI接口有两根单向数据线,为全双工通信,目前应用中的数据传输速率可达几Mbps的水平。
SPI总线被广泛的使用在Flash、ADC、LCD等设备中与MCU间,要求通信速率较高的场合。
SPI共有4根信号线,分别是:片选线、时钟线、串行输出数据线、串行输入数据线。
片选线:低电平有效,从机使能信号,由主机控制;
时钟线:主机产生时钟信号;
串行输出数据线:MOSI,主机输出从机输入
串行输入数据线:MISO,主机输入从机输出
SPI总线时序
起始信号:片选线由高电平变为低电平;
停止信号:片选线由低电平变为高电平;
数据传输:SPI使用MOSI和MISO信号线来传输数据,使用SCK时钟线进行数据同步。MOSI和MISO数据线在SCK的每一个始终周期传输一位数据,且数据输入输出是同时进行的。SPI每次数据传输可以8位或者16位位单位,每次传输的单位数不受限制。
SPI总线通讯协议
SPI有四种通讯方式:
在SPI操作中,最重要的两项设置就是时钟极性(CPOL)和时钟相位(CPHA),这两项即是主从设备间数据采样的约定方式。
时钟极性CPOL:设置时钟空闲时的电平
当CPOL = 0 , SCK引脚在空闲状态保持低电平,当SCK时钟线由低电平变高电平时采样;
当CPOL = 1 , SCK引脚在空闲状态保持高电平,当SCK时钟线由高电平变低电平时采样。
时钟相位CPHA:设置数据采样时的时钟沿
当CPHA = 0 ,MOSI或MISO数据线上的信号会在SCK时钟线的奇数边沿被采样;
当CPHA = 1 , MOSI或MISO数据线上的信号会在SCK时钟线的偶数边沿被采样。