首先我们来简单介绍一下SPI,SPI是串行外设接口(Serial Peripheral Interface),简单来讲就是它一种高速的,全双工,同步的通信总线。
那么被各种总线搞的晕头转向的人来说就会问了,为什么要弄那么多种总线?太难了。一会I2C,一会SPI;一会内部总线,一会外部总线。
碰到总线这样的字眼,千万别急,通过接触你会发现都有各自的特点,通过实践了你才会真正理解这些总线的用途,那么我们今天就来聊一聊SPI。
下面我们来看一下SPI的框图,我们从框图上来介绍SPI通信的原理:
1. SPI传输需要有一个时钟,因为他是同步通信,所以连接引脚有串行时钟SCK。
2. SPI以主从方式工作,通常有一个或者多个从设备连接。所以MOSI,M是主机,S就是从机,从机输入,所以叫MOSI,I就是input输入的意思,那么MISO也是一样的原理。
3. NSS就是片选,是SPI从设备是否被选中的,只有片选信号为预先规定的使能信号时(高电位或低电位),对此 SPI 从设备的操作才有效。如果从机没有被选中,主机发送数据从机是不会接收的。
4. Rx FIFO,Tx FIFO:发送缓冲和接收缓冲,当高速通信的时候,数据来不及处理就可以放在缓冲区里面,可以节省一定的时间去处理其他事情。
5. CRC controller:CRC校验,是一种数据检测方式。
6. Communication controller:SPI的主控模块,从框图中我们得到一些重点信息,就是关于寄存器的配置信息。时钟输出波特率受BR[2:0],这3个位来控制。
以上就是单片机整个的SPI通信的架构,只有这些配合工作才能实现SPI通信。单片机SPI一般作为主机工作,那么参数配置就需要从机的一些信息了。那么看到这里大家可能觉得这不算讲了SPI啊,我还不懂怎么应用啊,没关系,上面只是简单介绍,知道基本信息了再去实现不就容易多了嘛。
首先既然有时钟,那么就存在时钟极性的问题,既然有从机,那么可以根据从机的时钟极性来设置主机的,保持一致就好了,相当于相约好规则。
完整内容见附件:
|