SPI通讯以STC15W4K58S4为例
串行口主要用于单片机与计算机和其它单片机进行通讯,SPI主要用于单片机与外围芯片之间的通讯。
例如:可以和DS1302芯片进行数据通讯,与SD卡进行通讯,与VS1003音乐播放芯片进行通讯,可以和串行移位芯片74HC595进行通讯,与AD转换芯片MCP3202-B通讯,与DA转换芯片TLC5615进行通讯,与其它单片机通讯,因此SPI接口的应用是非常广泛的。
通信线路:
SPI通讯最多需要4根数据线,片选线SS(低电平有效),SCLK(时钟线,由主机控制),MOSI(主机输出从机输入),MISO(主机输入从机输出)。
其中,如果是单主机单从机的话,片选线可以不要,将SS直接接地,使它始终保持低电平。当SS为高电平时,从器件的各个通讯管脚呈高阻态,相当于从通讯线路上断开。
重要概念:
(1)时钟极性(CPOL):定义了时钟处于空闲状态时的电平。
CPOL=0:时钟空闲状态为低电平
CPOL=1:时钟空闲状态为高电平
(2)时钟相位(CPHA):定义了数据的采样时刻
CPHA=0:前沿采样,后沿输出。单片机在每个时钟周期的第一个跳变沿(上升沿或下降沿)采样外部数据,在第二个跳变沿输出数据。
CPHA=1:前沿输出,后沿采样。单片机在每个时钟周期的第一个跳变沿(上升沿或下降沿)输出数据,在第二个跳变沿对外部数据进行采样。
时钟极性(CPOL)和时钟相位(CPHA)的组合可形成四种不同的数据传输时序:
不使用片选时,两种时钟相位(CPHA)的通讯波形
时序图的解读:
以时钟相位CPHA=1时为例子,CPHA=1时,是前沿输出,后沿采样。
可以看到,在红圈标示的地方,表示数据生成(或者说是改变也可以,也就是数据开始建立),当数据稳定后,在后沿,也就是绿线标明的虚线处,数据被采样。主机从机都遵从此时序。
一般,如果采用软件模拟SPI通讯,我们需要尽量设置在数据信号的中心位置进行读取,因为这时数据是最稳定的。如果使用SPI硬件通讯,则不必关心这些细节,硬件会自动控制时序。
硬件SPI接口相关寄存器:
位号 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |