SPI是串行外围设备接口(Serial Peripheral Interface),是Motorola首先在其MC68HCXX系列处理器上定义的。是一种高速的、全双工的和同步的串行通信总线。
一个主设备和一个从设备使用4根线进行通信;具有多个从设备时,主设备会给每一个从设备分配一个CS脚,以便于选择相应的从设备经行通信,设备之间要共地。
名称 | 描述 |
MOSI | 主设备输出,从设备输入,连接MOSI |
MISO | 主设备输入,从设备输出,连接MISO |
SDO | 设备输出,连接SDI |
SDI | 设备输入,连接SDO |
SCLK | 时钟信号,只能由主设备产生 |
CS | 片选信号,主设备选择从设备经行通信 |
CPOL:时钟极性;为0时,总线空闲时SCLK为低电平;为1时,总线空闲时SCLK为高电平。
CPHA:时钟相位;为0时,时钟前沿采集数据,时钟后沿改变数据;为1时,时钟后沿采集数据,时钟前沿改变数据。
每个带有SPI的模块都会在使用说明里面绘制时序图,根据时序图选择对应的模式。
模式 | CPHA | CPOL |
mode0 | 0 | 0 |
mode1 | 0 | 1 |
mode2 | 1 | 0 |
mode3 | 1 | 1 |
主设备将其中一个从设备的CS设置为有效电平,开始通信;该从设备的CS设置为无效电平,结束通信。通信时序如下图所示。
IIC总线(Inter-Integrated Circuit)即集成电路总线,是PHILIPS公司设计出来的一种简单、双向、二线制、同步串行总线。IIC总线是一个多向控制总线,多个器件(从机)可以同时挂载到一个主机控制的一条总线上。总线上每一个设备都有一个唯一的地址。总线上可以有多个主机,但是同时只能由一个主机进行控制。
两个连接线都是开漏模式,需要外接上拉电阻,设备之间要共地。
名称 | 描述 |
SDA | 数据线 |
SCL | 时钟线,只能由主机产生 |
一帧信息由开始信号(Start)、地址、数据、Ack信号、NACK信号和结束信号(Stop)组成。
开始信号:SCL为高电平,SDA由高变低。如下图。
结束信号:SCL为高电平,SDA由低变高。如下图。
Ack信号:接收方收到8位数据必须回复一个Ack信号。接收方接收到8位数据后,下一个时钟(SCL为高电平)前,把SDA拉低。
NAck信号:发送方发送8位数据后,下一个时钟,SDA仍然为高(接收方未将SDA拉低),表示发送失败。
Ack信号和NAck信号如下图。
开始信号后面跟着一个字节,由7位的从机地址和一位读写控制位组成,如下图所示。
主设备向从设备写数据。格式如下图所示。
主设备向从设备读取数据。格式如下。
主设备往从设备中写数据,然后重启起始条件,紧接着从从设备中读取数据;或者是主设备从从设备中读数据,然后重启起始条件,紧接着主设备往从设备中写数据。格式如下。
uart为通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),为异步通信,可实现全双工通信,具有相同的逻辑电平的器件才能通讯,一般有RS232和TLL等逻辑电平。设置波特率相同才能通信。
设备之间要共地。接收设备RST设置有效电平并且发送设备CTS接收到有效电平时,发送设备才能把数据发送给接收设备,这两个引脚的功能可以选择使用。
名称 | 描述 |
RXD | 数据输入,连接TXD |
TXD | 数据输出,连接RXD |
RST | 请求发送(Require to send),连接CTS |
CTS | 清除发送(Clear to send),连接RST |
时序如下表。
起始位 | 数据位 | 奇偶校验位 | 停止位 |
起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。
数据位:数据位的个数可以是4、5、6、7、8等,构成一个字符,一般都是8位。先发最低位,再发最高位。
奇偶校验位:
停止位:数据结束标志,可以是1位,1.5位,2位的高电平。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
使用8N1(8位数据位,无校验,1位停止位)发送‘0xf0、0x0f’,二进制为‘11110000、00001111’,如下。
0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
起始位 | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | 停止位 | 起始位 | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7 | 停止位 |