串口通信UART、I2C、SPI
文章目录
1.SPI
SPI(Serial Peripheral Interface,串行外设接口),是Motorola公司提出的一种同步串行数据传输标准。
首先讲讲同步的概念,
上图中,左边的为主机,右边的为从机。SPI接口经常被称为4线串行总线,以主从方式输出,正如上图中,主、从机由四条数据线相连。
同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。
1.四条数据线的介绍:
(1).SCLK为串行时钟,用来同步数据传输,由主机输出;
(2).MOSI为主机输出从机输入数据线,通常优先传输MSB;
(3).MISO为主机输入从机输出数据线,通常优先传输LSB;
(4).SS为片选线,低电平有效,由主机输出,简而言之是通过选定片选线来选定从机。
2.数据传输:
正如上图中,主机通过MOSI线发送1位数据给从机接收,从机则通过MISO发送一位数据给主机接收(通过移位寄存器实现),主、从二者形成循环,当寄存器中的内容全部移除时,相当于完成了两个移位寄存器之间内容的交换。
3.时钟极性和时钟相位
时钟极性(CPOL或UCCKPL),时钟相位(CPHA或UCCKPH)。
时钟极性:时钟空闲时所处的极性。
时钟相位:设置读取数据和发送数据的时钟沿(上升、下降沿同时也)。
4.优缺点:
优:
(1).支持全双工(即主、从数据可同时进行数据传输,互不干扰)
(2).操作相对简单
(3).数据的传输效率较高
缺:
(1).需要占用主机较多的I/O口线,没个从机都需要一根。
(2).只支持单个主机
2.I2C
I2C包括时钟线(SCL)和数据线(SDA)。这两条线都是漏极开路或者集电极开路结构,使用时需要外加上拉电阻,可以挂载多个设备(如下图),每个设备都有属于自己的地址,主机通过选择不同的地址来选择不同的设备。
(此处因为博主对模、数电的知识还未彻底掌握,所以就不介绍漏极开路和集电极开路了,总而言之,开漏输出只能输出低,或者关闭输出,因此开漏输出总是要配一个上拉电阻使用。)
1.一般操作:
主机给从机发送数据
1.发送开始条件START和从机地址;
2.发送数据;
3.发送停止条件STOP结束。
主机从从机读取数据
1.发送开始条件START和从机地址;
2.发送要读取的地址;
3.读取数据;
4.发送停止条件STOP结束。
2.开始和结束条件:
当SCL保持为高电平时,SDA从高电平变成低电平,即为START。
当SCL保持为低电平时,SDA从低电平变成高电平,即为STOP。
当读取数据时,发送完发送开始条件START和从机地址后,不发送STOP,则可以重复开始读取数据。 数据传输时先传MSB。接收者在每个字节后的第9个时钟周期将SDA保持低电平进行确认数据接收成功;而在第9个时钟周期将SDA保持高电平表示数据传输出错,或者主机不再想接收数据。
3.优缺点:
优点:
(1).只使用两条信号线;
(2).支持多主机多从机;
(3).有应答机制。
缺点:
(1).速率比SPI慢。
3.UART通信
UART是一种异步传输接口,不需要时钟线,通过起始位和停止位及波特率进行数据识别。
异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。
如图:RX(接收数据)、TX(发出数据),一个设备的TX需要与另一个设备的RX相连,同样的一个设备的RX要与另一个设备的TX相连,完成数据的接收与发送。
1.数据格式:
(1)起始位
数据线空闲状态为高电平,要发送数据时将其拉低一个时钟周期表示起始位。
(2)数据位
使用校验位时,数据位可以有5~8位,一般为8位(保证ASCII值的正确性),如果不使用校验位,数据位可以达9位。
(3)校验位
奇偶校验,保证包括校验位和数据位在内的所有位中1的个数为奇数或偶数。
(4)停止位
为了表示数据包的结束,发送端需要将信号线从低电平变为高电平,并至少保持2个时钟周期。
2.优缺点:
优点:
(1).只使用两个信号线
(2).不需要时钟信号
缺点:
在内的所有位中1的个数为奇数或偶数。
(4)停止位
为了表示数据包的结束,发送端需要将信号线从低电平变为高电平,并至少保持2个时钟周期。
2.优缺点:
优点:
(1).只使用两个信号线
(2).不需要时钟信号
缺点:
传输速率比较低。