UART,SPI,IIC的一点理解
转自:http://bbs.21ic.com/icview-253715-1-1.html
UART通用异步收发器,UART是通用的异步传输模式,在它这种基础上加上其他接口或者解码器就衍生出多种异步传输模式,比如232,485,红外线等。这就好像脚上穿高跟鞋,跑鞋,皮鞋等,虽然走路方式不一样,但是其原理都是脚在向前走。自己对异步和同步的理解,异步传输就好像写信一样。假如每个信件里面写一个字符,我发送3个字符三封信,那么对方收到三封信之间的间隔可以是随意的。而同步通信则好像打电话一样。它要实时的监控着整个发送过程。从这两种方式上可以看出异步传输当发送完数据就可以干别的事情,而不必关心对方是否收到,就像给多个人写信,发了就可以给另外一个人发而不管上一封是否收到。而同步则不行,不能同时和两个以上的人通电话吧,怎么也得挂了一个再打另外一个。
同步通信(SPI和IIC):
SPI和IIC是最常用也是最基础的两种同步传输方式。
SPI的连接一般有四根:时钟,发送,接收和片选。
IIC的连线有两根:时钟和数据。在这从通信过程对照的说下这两种总线。
1、发送数据首先要知道目标地址。在这里SPI使用的片选线,只要把连接对应目标设备上片选线拉低就可以了,不需要目标响应,比较霸道一点。而IIC是要先把目标地址发送出去来寻找目标设备就像在人群中喊一个人姓名一样,如果是目标则会响应你。其实这两种方法可以认为一个是硬件的方法一个是软件的方法。所以他们也有这两种方法的特征。前者的优点是速度快,效率高。缺点是布线复杂了连接多个设备得多个片选线。而后者正好相反。
2、在发送的过程中,SPI和IIC的方式也有很大的区别。SPI有三种规则(TI,飞思卡尔,MICROWIRE),他们都采取的是无应答的方式。虽然他们的开始信号等定义规则不同,但是道理一样,尤其是用TI库函数操作时,可以忽略一些。SPI在开始信号过后,在主机的CLK下,快速的发送数据。用记电话号码举例:甲是主,乙是从。甲在接通乙后,按自己说话的速度告诉一遍电话号码,中间没有任何停顿和重复,说完OK。乙得马上记下所说的号码。这样的优点就是速度快。而缺点也是明显的。第一,也许乙记的号码是错误的,而甲是不知道的。第二,对乙要求要高一些,道理很简单,如果说号码的人语速非常快,我们必须得反应非常快。这也许就是LM3S,SPI模块做主时,速度可达系统时钟的1/2,而作从机只能达1/12的原因。
再说下IIC总线,首先肯定有一个开始信号,开始信号过后,根据CLK发送数据,在这与SPI有一个比较大的区别是每发送一个数据,必须等待从机的响应,如果从机不响应,主机是发不了数据的。同理用电话号码举例,甲每读一个数字,就得等乙答应一声。这种方式的缺点是传输速度慢。而优点也易见,一是传送的数据准确,因为有了乙的反馈。二是对从机要求低一点,如果从机速度比较慢也没事,因为此时主机一般得等着。
3、IIC是真正意义上的多主,可以类比公司的电话分机的关系。而SPI不是。
UART,SPI,IIC的一点理解的更多相关文章
- UART, SPI, IIC的详解及三者的区别和联系
UART.SPI.IIC是经常用到的几个数据传输标准,下面分别总结一下: UART(Universal Asynchronous Receive Transmitter):也就是我们经常所说的串口,基 ...
- Uart,IIC和SPI的区别
1.UART, SPI, IIC的详解 UART.SPI.IIC是经常用到的几个数据传输标准,下面分别总结一下: UART(Universal Asynchronous Receive Transmi ...
- opencv笔记5:频域和空域的一点理解
time:2015年10月06日 星期二 12时14分51秒 # opencv笔记5:频域和空域的一点理解 空间域和频率域 傅立叶变换是f(t)乘以正弦项的展开,正弦项的频率由u(其实是miu)的值决 ...
- 对socket的一点理解笔记
需要学web service,但是在视频中讲解到了socket套接字编程.以前貌似课上老师有提过,只是没用到也感觉乏味.现在遇到,自己看了些博客和资料.记录一点理解,不知正确与否. 首先说这个名字,叫 ...
- iOS 的一点理解(一) 代理delegate
做了一年的iOS,想记录自己对知识点的一点理解. 第一篇,想记录一下iOS中delegate(委托,也有人称作代理)的理解吧. 故名思议,delegate就是代理的含义, 一件事情自己不方便做,然后交 ...
- 关于web开发的一点理解
对于web开发上的一点理解 1 宏观上的一点理解 网页从请求第地址 到获得页面的过程:从客户端(浏览器)通过地址 从soket把请求报文封装发往服务端 服务端通过解析报文并处理报文最后把处理的结果 ...
- angular.js的一点理解
对angular.js的一点理解 2015-01-14 13:18 by MrGeorgeZhao, 317 阅读, 4 评论, 收藏, 编辑 最近一直在学习angular.js.不得不说和jquer ...
- RxSwift 入坑好多天 - 终于有了一点理解
一.前言 江湖上都在说现在就要赶紧学 swift 了,即将是 swift 的天下了.在 api 变化不大的情况下,swift 作为一门新的语言,集众家之所长,普通编码确实比 oc 要好用的多了 老早就 ...
- rt-thread中动态内存分配之小内存管理模块方法的一点理解
@2019-01-18 [小记] rt-thread中动态内存分配之小内存管理模块方法的一点理解 > 内存初始化后的布局示意 lfree指向内存空闲区首地址 /** * @ingroup Sys ...
随机推荐
- Ant build.xml
Ant的概念可能有些读者并不连接什么是Ant以及入可使用它,但只要使用通过Linux系统得读者,应该知道make这个命令.当编译Linux内核及一些软件的源程序时,经常要用这个命令.Make命令其实就 ...
- WordPress基础:去除顶部管理员工具条
想去掉这条东西有多种方式,个人比较喜欢这个,灵活~ 打开用户,在用户选项里,把这个勾走.
- Quartz:不要重复造轮子,一款企业级任务调度框架。
背景 第一次遇到定时执行某些任务的需求时,很多朋友可能设计了一个小类库,这个类图提高了一个接口,然后由调度器调度所有注册的接口类型,我就是其中之一,随着接触的开源项目越来越多,我的某些开发习惯受到了影 ...
- 每天一个linux命令-wc命令
语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同时也给出所有指定文件的总统计数.字是由空格字符区分开的最大字符串. 该命令各选 ...
- ADO与ADO.Net
在介绍ADO.Net之前先让我们回想一下在红皮书中学习的ADO的内容. ADO(ActiveX Data Objects).我们称它为一种用于数据訪问的对象模型,<VB.Net>视频中称它 ...
- 一分钟了解ArrayList和Vector的区别
一.是否是线程安全的 Vector是同步的, 而ArrayList不是.因为Vector是同步的, 所以它是线程安全的.同样, 因为Vecotr是同步的, 所以他需要额外的开销来维持同步锁, 所以它要 ...
- [Web 前端] 如何构建React+Mobx+Superagent的完整框架
ReactJS并不像angular一样是一个完整的前端框架,严格的说它只是一个UI框架,负责UI页面的展示,如果用通用的框架MVC来说,ReactJs只负责View了,而Angular则是一个完整的前 ...
- .NetCore中EFCore for MySql整理(二)
一.简介 EF Core for MySql的官方版本MySql.Data.EntityFrameworkCore 目前正是版已经可用当前版本v6.10,对于以前的预览版参考:http://www.c ...
- SpringBoot yml 配置 多配置文件,开发环境,生产环境配置文件分开
原文地址:https://www.cnblogs.com/baoyi/p/SpringBoot_YML.html 1. 在 spring boot 中,有两种配置文件,一种是application.p ...
- Swift3.0:PhotoKit的使用
一.介绍 iOS8之前使用AssetsLibrary来获取相册资源,iOS新引入框架PhotoKit框架,也即Photos.framework 二.PhotoKit的基本构成包括如下几项: PHAss ...