目录
一、预备知识
1、串行与并行
2、单工与双工
3、波特率
二、UART
三、IIC
四、SPI (一对一、一对多)
五、IIC、SPI异同点
参考文章:这些单片机接口,一定要熟悉:UART、I2C、SPI、TTL、RS232、RS422、RS485、CAN、USB、SD卡
一、预备知识
1、串行与并行
根据每次发送的二进制位数,可以分为串行、并行。串行只有一根总线,而并行一般有多根总线。总线数目的不同直接影响到每次传递的数据量。以传递一个字节为例。
串行每次只能传递 1 bit,所以要传输 8 次才能传递一个字节。
并行有 8 根总线,所以一次就可以传递一个字节(8 bit)。
2、单工与双工
根据数据传输的方向可以分为单工、双工通信,而双工通信又可以根据总线数目分为半双工、全双工通信。
- 单工通信:数据的传输是单向的,发送器只负责发送,接收器只负责接收
- 双工通信:
- 半双工:一根总线,双方的发送和接收用的同一根总线
- 全双工:两根总线,双方的发送和接收各有一根总线
3、波特率
用于描述串口的通信速度,单位bps(bit per second),即每秒传输的比特数
二、UART
1、概念
UART 是一种通用的串行、异步通信总线,该总线有两条数据线,TXD 用于发送数据,RXD用于接收数据,可以实现全双工的发送和接收,在嵌入式系统中常用于主机与辅助设备之间的通信。
2、帧格式
UART帧格式如下:
空闲时刻:默认维持在高电平
起始位:表示要开始发送数据了,此时会变为低电平
数据位:一般有8位,代表一个字节。
校验位:方便接收方核对数据是否被篡改(可有可无)
停止位:表示一帧数据的结束。相当于告知对方数据发送完毕,重新回到高电平(空闲状态)
三、IIC
1、概念
I2C总线是一种同步、半双工双向的两线式串口总线。它由两条总线组成:串行时钟线SCL和串行数据线SDA。
- SCL:负责产生时钟脉冲。一方可以在时钟脉冲的上升沿发送数据;另一方在下降沿接收数据
- SDA:负责数据的传输
2、通信过程
主设备和从设备都可以作为发送设备或接收设备。无论主设备是作为发送设备还是接收设备,同步时钟信号都只能由主设备产生,主设备控制通信的开始与结束。
主从设备建立连接
(1) 主设备发送一个起始信号启用总线
(2)主设备发送一个字节的数据指明要和哪个从设备通信,以及数据的传递方向(即主设备给从设备发数据,还是从设备给主设备发数据)
(3)被指名的从设备发送应答信号回应主设备
主从设备开始通信
建立连接以后,主从设备之外的设备,不可以发送数据。接下来就是主从设备的通信时间了。
(4)发送器发送一个字节的数据
(5)接收器收到数据以后发送应答信号,回应发送器
(6)... ... 循环步骤4、5
主从设备结束通信
(7)主设备发送停止信号中止本次通信
四、SPI (一对一、一对多)
1、概念
SPI总线是同步、全双工双向的4线式串行接口总线。SPI采用主从的方式工作,可以一个主设备对应一个从设备,也可以一个主设备对应多个从设备。虽然是一个主设备对多个从设备的关系,但是每次通信依然是一个主设备和一个从设备通信。
- MOSI(Master Out Slave In):主设备 ==》从设备(主设备发送,从设备接收)
- MISO(Master In Slave Out):从设备 ==》主设备(主设备接收,从设备发送)
- SCLK(Serial Clock):传输时钟信号,用于主从设备的同步
- CS(chip select):选择从设备。
2、通信过程
主设备选择从设备
当主设备要和某个从设备进行通信时,主设备需要先向对应从设备的CS线上发送使能信号(高电平或者低电平,根据从机而定),表示选中该从设备。
数据传输
SPI 总线在进行数据传输的时候,先传送高位,后传送低位。比如要传送数字3,转换成二进制就是 0000 0011,因为是串行通信,每次只能传 1bit,所以需要决定先传送高位还是低位。
发送端发送信号:当时钟脉冲达到下降沿的时候,这段时间是发送数据的时间。
接收端接收信号:当时钟脉冲到达上升沿的时候,这段时间是接收数据的时间。
因此,SPI 可以在一个时钟周期内就完成数据的收发,可以无限制的连续发送和接收数据。
传输完毕或者继续传输
一个字节传输完成后无需应答,可以直接开始下一个字节的传递,也可以就此中止传输。SPI总线没有起始或者结束信号。
3、极性和相位
极性(CPOL)指的是时钟脉冲在空闲时刻的状态。
相位(CPHA)指的是采样时刻。比如是选择下降沿发送数据,还是上升沿发送数据。
对于特定的从设备来说,出厂时的工作模式就已经决定了,即极性和相位就已经决定好了。主设备的 CPOL 和 CPHA是可以手动配置的。在使用设备时,必须保证主设备的工作模式和从设备保持一致。
五、IIC、SPI异同点
相同点
1、都使用了时钟线
2、采用了TTL电平,这就限制了应用场景,传输距离不会很长,一般用于同一板卡上芯片之间的通信
3、都采用主从方式工作,主机可以管理和控制总线,从机只能被呼叫。
不同点
1、IIC有应答机制,SPI无需应答机制
2、IIC通过向总线广播从机地址来寻址,SPI通过向对应从机发送使能信号来选择从机
3、IIC的时钟极性和相位固定,SPI的时钟极性和相位可调