UART、SPI、I2C协议异同点
I2C、SPI、UART都是常见的低速板级通信协议,目前主流的SoC都内置了这些通讯协议的控制器,同样,各种传感器、Touch控制器、指纹模块、蓝牙模块、WIFI模块也都兼容这三种通信方式的一种或几种。对于这三种通信协议的差别,可以区分到非常细,包括信号的单位、传输协议中的封包格式等。
UART一般由TXD、RXD、GND三根线组成,是一种异步传输协议。无论是主机还是从机,均可以自由发送数据,但是由于UART总线并没有时钟线,所以需要提前约定对应的波特率,这是一种很简单的传输协议,以此基础再搭电路可以实现RS-232、RS-242、RS-485等通信协议。过去老式电脑是具备RS-232接口的,但近10年的电脑都只具备USB,因此通常需要透过一个UART转USB的转接电路才能互相连接。UART比较简单,所以CPU输出log一般都是通过一个UART口来输出,是目前最常用的调试接口,其传输速度比较慢,传统的传输速度在115200bps或以下,不过现在大部分UART控制器也能支持到4Mbps或者8Mbps了。
I2C是两根线,SDA(数据)和SCL(时钟),是一种半双工同步传输协议。主机在发送开始信号之后,先发送7个比特的地址位和1个比特的读写位,每个从机有自己的I2C地址,当发现该条指令是发给自己的时候,拉低SDA线(即回复ACK信号),然后主机发送或接收数据,完成传输。传输完成之后,主机发送停止位,完成该次传输。I2C最早是由PHILIPS提出来的,用于晶片间的传输,理论上可以连接128个从机(一般最多只接10个),原则上只能以PCB板上的铜箔线路来走,然而目前许多应用却是把I2C缆线化。另外,I2C总线的管脚都是开漏输出,必须外接上拉电阻,阻值可以根据总线速度来推算,一般我们常用400kbps传输速率(标准模式:100kbps,快速模式:400kbps,高速模式:3.4Mbps),上拉电阻选用2.2K。

SPI是四根线,分别是CS(片选)、MOSI(主发从收)、MISO(从发主收)、CLK(时钟),是一种全双工同步传输协议。主机送出CLK信号,主机到从机的数据在MOSI线上传输,从机到主机的数据在MISO线上传输。在启动传输之前,需要先拉低(一般是这样,也有各别芯片是CS高有效)对应从机的CS管脚,在传输完成之后,再拉高CS管脚,从机的SPI Slave模块进入休眠。SPI由Motorola发明,与I2C相同可以接多个从机,只是每增加一个从机,线路至少要增加一条,其发送与接收可以同时进行,传输速度可达到几Mbps水平,比I2C快。

UART和后面两者最大的区别在于后面两者是同步的,要有统一的时钟线,而UART不需要,接线方便,但收发双方都需要配置相同的波特率,即设备要有自己的时钟源;I2C协议中是有地址规则的,因此在一对多通信的时候更有优势。常用来连接传感器;SPI编程简单,在设备不多,端口充足,对通信速度要求不高的场合可以应用,较常用来连接EEPROM、FLASH或液晶显示器。
参考自:
https://makerpro.cc/2016/07/learning-interfaces-about-uart-i2c-spi/
https://www.zhihu.com/question/22079830
UART、SPI、I2C协议异同点的更多相关文章
- 关于I2C和SPI总线协议【转】
关于I2C和SPI总线协议 IICvs SPI 现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral ...
- [SPI&I2C]I2C和SPI协议介绍
IIC vs SPI 现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身 ...
- UART, SPI, IIC的详解及三者的区别和联系
UART.SPI.IIC是经常用到的几个数据传输标准,下面分别总结一下: UART(Universal Asynchronous Receive Transmitter):也就是我们经常所说的串口,基 ...
- 模拟I2C协议学习点滴之原理框架
I2C是一种串行总线协议. 目前几种常用的串行总线有UART.SPI和I2C协议.UART协议的总线只有两条,发送(Transmit:TX)和接收(Receive:RX),没有时钟信号,这就要求两位数 ...
- 【转】SPI总线协议
SPI总线协议 By Xiaomin | April 17, 2016| 技术 概述 SPI(Serial Peripheral Interface)总线是主要应用于嵌入式系统内部通信的串行同步传输总 ...
- i2c协议
i2c协议 http://blog.csdn.net/g_salamander/article/details/8016698 总线设备驱动模型 http://blog.csdn.net/u01395 ...
- SPI总线协议及SPI时序图详解
SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚 ...
- i2c协议简要分析(转载)
声明 本文大部分内容为转载,因此标定为转载 源地址: http://www.cnblogs.com/zym0805/archive/2011/07/31/2122890.html http://blo ...
- (原创) 巩固理解I2C协议(MCU,经验)
题外话:这几天天气突然转冷了.今天已是11月23日了,查查黄历,昨天(11月22日)刚好是小雪,一夜温度骤降,果然老祖先的经验有灵验!冬天来了,还是多加加衣服,注意保暖! 1.Abstract ...
随机推荐
- 一、CSS概述 二、CSS的选择器(认识) 三、CSS样式和属性(练习) 四、重构商城首页DIV+CSS(页面布局)(重点) 浮动/更改显示方式
一.CSS概述###<1>概念 DIV,就是一个HTML元素,块级元素,通常结合CSS进行页面的布局. CSS,层叠样式表,给HTML元素增强显示. ###<2>作用 样式定义 ...
- Web通信协议:OSI、TCP、UDP、Socket、HTTP、HTTPS、TLS、SSL、WebSocket、Stomp
1 各层的位置 1.1 OSI七层模型全景图 OSI是Open System Interconnect的缩写,意为开放式系统互联. 1.2 五层网络协议 在七层的基础上, ...
- December 03rd 2016 Week 49th Saturday
By failing to prepare, you are preparing to fail. 不做准备,那就准备失败吧. How does the case when you had prepa ...
- Sql Server 流程控制语句
T-SQL中用来编写流程控制模块的语句有:BEGIN...AND语句.IF...ELSE语句.CASE语句.WHILE语句.GOTO语句.BREAK语句.WAITFOR语句和RETURN语句. 批处理 ...
- leetcode第一刷_N-Queens
八皇后问题应该是回溯法的教学典范.在本科的时候,有一门课叫面向对象.最后的附录有这个问题的源码.当时根本不懂编程,照抄下来,执行一下出了结果都非常开心,哎. 皇后们的限制条件是不能同行同列,也不能同对 ...
- [SHOI2008]小约翰的游戏
题目 不会,抄论文 这是一个非常牛逼的东西,叫做\(anti\)博弈,就是进行最后一次操作的人输 我们考虑一下这道题 显然如果石子个数都是\(1\),那么有奇数堆石子先手必败,有偶数堆石子先手必胜 如 ...
- jquery的fadeTo方法的淡入淡出轮播图插件
由于对基于jquery的简单插件开发有了一定的了解,慢慢的也对基于jquery的插件开发有了兴趣,在上班结束之后就研究各种插件的思路逻辑.最近开发了一款基于jquery的fadeTo方法的轮播图插件, ...
- npm发布插件步骤
开发好一个插件后,要想让其他人也能使用该插件需要将插件发布到npm上,具体步骤如下: 1.添加npm用户: npm adduser Username: your name Password: your ...
- ethers.js-4-Contracts
Contracts A Contract is an abstraction of an executable program on the Ethereum Blockchain. A Contra ...
- vue打包以后,除了首页意外,其余页面是空白
针对vue项目打包以后,除了首页意外,其余页面是空白的,需要在服务端进行配置. 原因是router中,mode是history引起的 如果是nginx,改成如下: location / { root ...