IIC、SPI、UART串行通信以及同步/异步通信学习

一、IIC

连接线:VCC、GND、SDA、SCL。

半双工同步通信。MSB。

速率:100Kbps、400Kbps、3.4Mbps。

数据采集:SCL为高电平期间采集,因此SDA必须在SCL为低期间跳变。

空闲状态:SCL、SDA同为高。因此电路设计一般加上拉电阻。

起始信号:SCL为高时SDA上出现下降沿。

停止信号:SCL为高时SDA上出现上升沿。

读写位    :1为读,0为写。

应答信号:发送方发送完毕会将SDA拉高,然后等待接收方发送ACK或者NACK,如果下一个SCL为高的时候接收方已经将SDA拉低表示ACK,为高则为NACK。

读数据:起始信号+7位地址|写+WACK+读地址+WACK+起始信号+7位地址|读+读数据0+ACK+读取数据1+ACK......+读取数据N+NACK+停止信号。(AT24C02)如果读取一个数据就直接返回NACK。

写数据:起始信号+7位地址|写+WACK+写地址+WACK+写数据+WACK+停止信号。

二、SPI

连接线:VCC、GND、MOSI、MISO、SCLK、SSN 。

全双工同步通信。MSB。

速率:从机限制。最大50Mbps。

数据采集与输出与极性和相位配置有关:

CPOL表示空闲时SCLK电平状态,0为低1为高。

CPHA表示数据采集在什么边沿,0为时钟前沿,1为后边沿。数据输出则为另外一个边沿。具体是上升还是下降沿需要结合CPOL确定。因此可以以CPOL为第1位,CPHA为第0位组成4种模式。

模式0:CPOL = 0 CPHA = 0;

模式1:CPOL = 0 CPHA = 1;

模式2:CPOL = 1 CPHA = 0;

模式3:CPOL = 1 CPHA = 1;

当数据从在时钟前沿采集时,第0位没有数据输出边沿,在片选信号SSN使能时输出。

三、U(S)ART

连接线:VCC、GND、TX、RX(RTC、CTS、DTR、DSR在TTL中不常用)。

UART:全双工异步通信。USART:全双工同步/异步通信。LSB。

数据包描述:起始位+数据位+(奇偶检验)+停止位+空闲位,

起始位(低电平,时长为1个bit长度);

数据位(LSB,可配置为4-9个bit);

奇偶检验(使得加上该位后数据位中的1为奇数或者偶数,也可没有该位);

停止位(可配置时长为1、1.5、2个bit,高电平);

空闲位(高电平)。

bit时长为1/比特率。

比特率 = 波特率 *log2(N);N为一个码元可以表示的状态。在uart通信中一个码元就是一个bit为0或者1,N=2,波特率等于比特率。

四、同步/异步通信

同步通信wiki百科如下:

IIC、SPI、UART串行通信以及同步/异步通信学习_第1张图片

异步通信wiki百科如下:

IIC、SPI、UART串行通信以及同步/异步通信学习_第2张图片

同步通信特征:

1、发送端以一个恒定的速率把数据以连续的数据流发送出去。

2、发送端使用与接收端采集速率相同的速率发送数据。

3、随着时间推移时钟可能变得不同步,在传输数据时需要重新同步。

4、没有起始位、停止位。

异步通信特征:

1、不需要额外的时钟信号。

2、数据可以间歇性传输,而不是一个恒定的数据流。

3、数据发送时不需要以一个恒定的间隔(regular interval)去发送,因此不需要一个额外的时钟同步信号并且可以变比特率通信。

4、每个字节都需要加上起始位、停止位来传输。

你可能感兴趣的:(IIC,SPI,UART,学习,嵌入式硬件)