目录
同步与异步:
同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。
异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。
USART:通用同步和异步收发器
UART:通用异步收发器
当进行异步通信时,这两者是没有区别的。区别在于USART比UART多了同步通信功能(或者说多了一根时钟线)
发送模式:
UART:先发低位后发高位
IIC:先发高位后发低位
SPI:先发高位后发低位
IIC时序:
IIC时序:
开始信号:当SCL为高期间,SDA由高到低的跳变;启动信号是一种电平跳变时序信号,而不是一个电平。
停止信号:当SCL为高期间,SDA由低到高的跳变;停止信号也是一种电平跳变时序信号,而不是一个电平信号。
应答信号:每当主机向从机发送完一个字节的数据,主机总是需要等待从机给出一个应答信号,以确认从机是否成功接收到了数据,从机应答主机所需要的时钟仍是主机提供的,应答出现在每一次主机完成8个数据位传输后紧跟着的时钟周期,低电平0表示应答,1表示非应答:
产生ACK应答:SCL在SDA一直为低电平期间完成低高电平转换
不产生应答:SCL在SDA一直为高电平期间完成低高电平转换
硬件IIC与软件IIC的区别:
1. 硬件IIC用法比较复杂,模拟IIC的流程更清楚一些。
2. 硬件IIC速度比模拟快,并且可以用DMA
3. 模拟IIC可以在任何管脚上,而硬件只能在固定管脚上。
IIC的配置模式开漏与推挽的优缺点:
主机如果使用了推挽,当主机释放SDA时(令SDA=1时),相当于SDA被接通到VCC,这时从机无法控制SDA为0;
主机如果使用了开漏,当主机释放SDA时(令SDA=1时),相当于SDA被悬空上拉到VCC,这时从机可以拉低SDA,使SDA=0,也可以释放SDA使SDA=1,这样从机才能发数据。
开漏输出:IIC就是利用引脚高阻态的特性,IIC总线上挂载多个从机,当从机不工作时输出高阻态,总线默认是高电平
SPI工作原理:
1、硬件为四根线
2、主机和从机都有一个人串行移位寄存器,主机通过SPI的串行移位寄存器写入一个字节发送一次传输
3、串行移位寄存器通过MOSI信号线将字节发送给从机,从机将自己的串行移位寄存器的内容通过MISO返回给主机,这样两个串行移位寄存器的内容被交换
4、外设的读写操作同步完成,只进行写操作,则忽略读操作;主机只进行从机的读操作,则主机须发送一个空字节给从机引发传输
SPI通信过程:
一个字节传送完成后无需应答即可开始下一个字节的传送;SPI总线采用同步方式工作,时钟线在上升沿或下降沿时发送器向数据线上发送数据,在紧接着的下降沿或上升沿时接收器从数据线上读取数据,(一个周期两个沿,第一个沿发送数据,第二个沿接收数据)完成一位数据传送,八个时钟周期即可完成一个字节数据的传送
CPOL=0,CPHA=0 | 上升沿接数据,下降沿发数据 | 空闲时,时钟线为低电平 |
CPOL=0,CPHA=1 | 上升沿发数据,下降沿接数据 | 空闲时,时钟线为低电平 |
CPOL=1,CPHA=0 | 上升沿接数据,下降沿发数据 | 空闲时,时钟线为高电平 |
CPOL=1,CPHA=1 | 上升沿发数据,下降沿接数据 | 空闲时,时钟线为高电平 |
CPHA = 0:表示从第一个跳变沿开始采样;
CPHA = 1:表示从第二个跳变沿开始采样。
跳变沿究竟是上升沿还是下降沿,这取决于 CPOL。
记住, CPHA 只决定是哪个跳变沿采样。
例如:
CPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。
CPOL=0,CPHA=1:此时空闲态时,SCLK处于低电平,数据发送是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。
CPOL=1,CPHA=0:此时空闲态时,SCLK处于高电平,数据采集是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。
CPOL=1,CPHA=1:此时空闲态时,SCLK处于高电平,数据发送是在第1个边沿,也就是SCLK由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送是在下降沿。
IIC和SPI的异同:
相同点:
1、均采用串行、同步的方式
2、均采用TTL电平,传输距离和应用场景类似(不适合长距离通信)
3、均采用主从方式工作
不同点:
1、IIC为半双工,SPI为全双工
2、IIC有应答机制,SPI无应答机制
3、IIC通过向总线广播从机地址来寻址,SPI通过向对应从机发送使能信号寻址
4、IIC的时钟极性和时钟相位固定(空闲时SDA,SCL为高电平),SPI时钟极性和时钟相位可调