我是靠谱客的博主 疯狂西装,最近开发中收集的这篇文章主要介绍SPI,UART,IIC三大总线对比说明一、SPI:高速,全双工,同步串行总线二、IIC: 低速,半双工,同步串行总线三、UART:全双工,异步串行总线四、三大总线对比,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
一、SPI:高速,全双工,同步串行总线
串行指的是数据是一位一位发送的,同步指的是要根据主机的时钟信号来发送
- SPI有四根线,分别为SCLK(时钟信号),MOSI(主设备输出,从设备输入),MISO(主设备输入,从设备输出),CS(片选信号)
- SPI有四种工作模式:
Mode0:CPOL=0,CPHA=0
Mode1:CPOL=0,CPHA=1
Mode2:CPOL=1,CPHA=0
Mode3:CPOL=1,CPHA=1
CPOL=0,表示当SCLK=0时处于空闲态,所以有效状态就是SCLK处于高电平时
CPOL=1,表示当SCLK=1时处于空闲态,所以有效状态就是SCLK处于低电平时
CPHA=0,表示数据采样是在第1个边沿,数据发送在第2个边沿
CPHA=1,表示数据采样是在第2个边沿,数据发送在第1个边沿
CPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是
SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。
CPOL=1,CPHA=0:此时空闲态时,SCLK处于高电平,数据采集是在第1个边沿,也就是
SCLK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。
二、IIC: 低速,半双工,同步串行总线
- IIC有两根线SDA(数据线)和SCL(时钟线)
- I2C总线上数据的传输必须以一个起始信号作为开始条件,以一个结束信号作为传输的停止条件。总线在空闲状态时,SCL和SDA都保持着高电平,当SCL为高电平而SDA由高到低的跳变,表示产生一个起始条件;当SCL为高而SDA由低到高的跳变,表示产生一个停止条件。
- IIC传输数据是逐8位传输,主设备在传输有效数据之前要先指定从设备的地址,因此且每一最小包数据由9bit组成,8bit内容+1bit ACK, 如果是地址数据,则7bit地址,1bit方向,1bit ACK。
- SCL处于高电平的时候,如果SDA处于低电平:传输数据0,SDA处于高电平:传输数据1 。SDA上的数据必须在SCL高电平周期时保持稳定,数据的高低电平翻转变化发生在SCL低电平时期
- SCL总线的线与:只要有一个节点发送低电平时,总线上就表现为低电平。当所有的节点都发送高电平时,总线才能表现为高电平低速,因此当多个节点同时发送时钟信号时,在总线上表现的是统一的时钟信号
- 节点在发送1位数据后,比较总线上所呈现的数据与自己发送的是否一致。是,继续发送;否则,退出竞争
- IIC传输位速率在标准模式下可达100Kbit/s,快速模式下可达400Kbit/s,高速模式下可达3.4Mbit/s
- 7位IIC最多可以挂载127个设备,0作为群呼设备
三、UART:全双工,异步串行总线
- 一般为三线,GND(地线),TXD(发送数据),RXD(接收数据)
- 协议格式一般为1位起始位,(5,6,7,8)位数据位,1位校验位,(1,1.5,2)位停止位,同时需要包装双方波特率一直,常用的有115200,9600
- UART不需要时钟信号
四、三大总线对比
- IIC总线在高电平的时候采样数据,SPI一般是在上升沿采样数据
- IIC总线和SPI总线数据传输都是MSB在前,LSB在后(串口是LSB在前)
- SPI依靠片选选择从设备,IIC依靠协议(发送数据前先发送地址)确定从设备
最后
以上就是疯狂西装为你收集整理的SPI,UART,IIC三大总线对比说明一、SPI:高速,全双工,同步串行总线二、IIC: 低速,半双工,同步串行总线三、UART:全双工,异步串行总线四、三大总线对比的全部内容,希望文章能够帮你解决SPI,UART,IIC三大总线对比说明一、SPI:高速,全双工,同步串行总线二、IIC: 低速,半双工,同步串行总线三、UART:全双工,异步串行总线四、三大总线对比所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复