UART、I2C、SPI三种协议对比

学嵌入式需要打好基础

下面我们来学习下计算机原理里的3种常见总线协议及原理

协议:对等实体之间交换数据或通信所必须遵守规则或标准的集合

1、UART(Universal Asynchronous Receiver/Transmitter):

通用异步接收发送器,也就是通常所说的串口,基本都用于调试

三根线:RX、TX、GND

如果甲是PC机,B是单片机,两者还要接一块电平转换芯片,用于将TTL / CMOS(单片机电平)转换为RS232(PC机电平)。因为TTL / CMOS电平范围是0?1.8 / 2.5 / 3.3 / 5V(不同单片机范围不同),高电压表示1,低电压表示0而RS232逻辑电平范围-12V?12V,-5?-12表示高电平,+ 5?+ 12V表示低电平(对你没有听错!)为什么这么设置这就要追溯到调制解调器出生时代了,有兴趣自己去查资料

开发板想发数据时,RXD0由1变为0,保持T时间

PC感觉到RXD0由0变1.知道2440即将发数据

有起始位和停止位,就说明这是个异步通信

2、I^2C协议(Inter Integrated Circuit)

两条线 SCL(时钟)、SDA(数据)只有一条数据线,所以是半双工同步通信,

在传送数据过程中共有3种类型信号:开始信号、结束信号和相应信号。

(1)开始信号(S):SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据

(2)结束信号(P):SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据

(3)响应信号(ACK):接收器在接收到8位数据后,在第9个时钟周期,拉低SDA电平

可以接有多个设备,启动一个设备,主机先发出S信号,然后发出8位数据。前7位为从机的地址(所以能接2^7=128个设备),第8位表示传输的方向(0表示写操作,1表示读操作),有这个设备,发出ACK响应信号,开始读/学操作

3、SPI(Serial Peripheral Interface,同步外设接口),全双工同步串行总线,

该总线大量用于与EEPROM,ADC,FRAM和显示驱动器之类的慢速外设器件通信。

3条线

SCK:时钟信号

SDI:输入信号

SDO:输出信号

CS:片选信号,决定了唯一的与主设备通信的从设备,片选信号低电平有效,不同于I^2C用的地址选择从机

对比:

UART是全双工,异步传输,对时序要求比较严格,速度较慢

SPI相比UART多了一条同步时钟线,通信速度快

I2C一根数据线,速度不高,结构简单

原文地址:https://www.cnblogs.com/cyyz-le/p/10929920.html

时间: 2024-10-13 07:23:25

UART、I2C、SPI三种协议对比的相关文章

Storm与Spark、Hadoop三种框架对比

一.Storm与Spark.Hadoop三种框架对比 Storm与Spark.Hadoop这三种框架,各有各的优点,每个框架都有自己的最佳应用场景.所以,在不同的应用场景下,应该选择不同的框架. 1.Storm是最佳的流式计算框架,Storm由Java和Clojure写成,Storm的优点是全内存计算,所以它的定位是分布式实时计算系统,按照Storm作者的说法,Storm对于实时计算的意义类似于Hadoop对于批处理的意义.Storm的适用场景:1)流数据处理Storm可以用来处理源源不断流进来

servlet实现的三种方式对比(servlet 和GenericServlet和HttpServlet)

第一种: 实现Servlet 接口 第二种: 继承GenericServlet 第三种 继承HttpServlet (开发中使用) 通过查看api文档发现他们三个(servlet 和GenericServlet和HttpServlet)的关系是 Servlet是一个接口,其中含有很多方法如:init(),service(),destory()方法. GenericServlet是一个实现了Servlet接口的实现类,他可以使用Servlet中的方法. HttpServlet是GenericSer

ArrayBlcokingQueue,LinkedBlockingQueue与Disruptor三种队列对比与分析

一.基本介绍 ArrayBlcokingQueue,LinkedBlockingQueue是jdk中内置的阻塞队列,网上对它们的分析已经很多,主要有以下几点: 1.底层实现机制不同,ArrayBlcokingQueue是基于数组的,LinkedBlockingQueue是基于链表的: 2.初始化方式不同,ArrayBlcokingQueue是有界的,初始化时必须指定队列的大小:LinkedBlockingQueue可以是无界的,但如果初始化时指定了队列大小,也可以做为有界队列使用: 3.锁机制实

【浅墨Unity3D Shader编程】之五 圣诞夜篇: Unity中Shader的三种形态对比&混合操作合辑

本系列文章由@浅墨_毛星云 出品,转载请注明出处.  文章链接:http://hpw123.net/a/C__/kongzhitaichengxu/2014/1222/164.html 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 邮箱: [email protected] QQ交流群:330595914 更多文章尽在:http://www.hpw123.net 本文算是固定功能Shader的最后一篇,下一次更新应该就会开始讲解表面Shader,而

VMware下网络配置三种模式对比(桥接模式,主机模式,网络地址转换)

1 VMware三种网络模式简介 VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).安装好虚拟机以后,在网络连接里面可以看到多了两块网卡.如下图. 2 bridged(桥接模式) 2.1 模式简介 在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器. 在桥接模式下,你需要手工为虚拟系统配置IP地址.子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行

迭代器(Iterable)和for..in..的三种协议

一.迭代器协议 1.  迭代器协议:对象需要提供next方法,它要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 2. 可跌达对象:实现了迭代器协议的对象 3. 协议是一种约定,可迭代对象实现迭代器协议,在Python中,迭代是通过for ... in来完成的 二.简单迭代器 以斐波那契数列为例,写一个简单的迭代器 >>> from collections import Iterable >>> class Fib: ... def __

C# 处理图像三种方法对比

C#本身自带有一定的图像处理能力,即使在不依赖Emgu CV的情况下,也是有很大的潜质的. 不过,最近在处理大量图片时,发现图片数量较少时,处理本身所带来的延时不会让人敏感,但是数量较大时,程序花费大量时间在预处理图片上,导致程序很容易误报线程时延过大,导致误判程序异常.对于这个问题苦恼很久,毕竟不是CS专业出身,对于图像处理以及一些算法和库的运用上感到毕竟吃力. 今天在阅读了一些数字图像处理的书之后感到收益很大,现在来做点试验对照一下之前自己的错误在哪里. 之前看MS的C#API时候发现有一个

Sql 列转行 三种方法对比

合并列值 --******************************************************************************************* 表结构,数据如下: id    value ----- ------ 1    aa 1    bb 2    aaa 2    bbb 2    ccc 需要得到结果: id    values ------ ----------- 1      aa,bb 2      aaa,bbb,ccc 即

获取当前页面的所有链接的三种方法对比(python 爬虫)

''' 得到当前页面所有连接 ''' import requests import re from bs4 import BeautifulSoup from lxml import etree url = 'http://www.ok226.com' r = requests.get(url) r.encoding = 'gb2312' # 利用 re (太黄太暴力!) matchs = re.findall(r"(?<=href=\").+?(?=\")|(?<