芯片手册上的介绍:使用SPI接口,S3C2440A可以与外部设备同时发送/接收8位数据。 串行时钟线与两条数据线同步,用于信息的移位和采样。 当SPI为主机时,可以通过将SPPREn寄存器中的相应位置1来控制传输频率。 您可以修改其频率以调整波特率数据寄存器的值。 当SPI为从机时,其他主机提供时钟。 当编程器将字节数据写入SPTDATn寄存器时,SPI发送/接收操作将同时开始。 在某些情况下,应在将字节数据写入SPTDATn之前激活nSS。
芯片手册的介绍比较偏向于其本身的特点,介绍一下SPI通信协议通常含义
SPI是一种高速、主从式、全双工的通信协议。SPI占有4根线,上一篇博客中介绍的I2C占有两根线
四根线分别为CS ( chip select ) 片选线
SCLK(Serial Clock)串行时钟线。
MOSI(Master Output Slaver Input)指设备扮演主机时作为数据输出线,而设备扮演从机时作为数据输入线
MISO(Master Input Slaver Output)指设备扮演主机时作为数据输入线,而设备扮演从机时作为数据输出线。
简单说明一下片选线,由于SPI总线可以外接多个设备,然而在某一特定时刻里,CPU通过SPI总线最多可以和一个外接设备进行通信,那如何从多个设备中选择到正确的从设备呢?之前我们所讨论的I2C总线中,我们是依靠MASTER在启动信号后发出从设备地址来寻址从设备,而在SPI中,则是通过片选线和对片选管脚的电位进行作用来寻址从设备。
两根用于传输数据的线,还有另外一种叫法,SDI/SDO
【SPI协议简介】如下截图是SPI协议的4种传输格式
以第一种格式为例做介绍
CPOL = 0 表示SPICLK的起始电位为低,CPHA = 0表示在SPICLK上升沿读取数据线上的数据
这里没有列出片选线的电位,当该设备的片选线电位由高被拉到低,说明该设备在片选线电位拉低时刻被SPI总线选中,而当电位恢复高位,SPI总线放弃对该设备的选中
SPI时序图和IIC还是有很大的不同,IIC的SDA只有在SCK电位为低的时候才会改变,原因我在上一篇博客中已经解释了
而SPI的MOSI和MISO线的电位变化则发生在一个SPICLK结束时。当然这其中的不同并非是偶然。
文章图片