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 ...
随机推荐
- iphone手势识别(双击、捏、旋转、拖动、划动、长按)UITapGestureRecognizer
首先新建一个基于Sigle view Application的项目,名为GestureTest;我的项目结构如下: 往viewController.xib文件里拖动一个imageView,并使覆盖整个 ...
- WordPress基础:设置后台语言
菜单-设置-站点语言
- JAVA设计模式-设计原则
6大原则: 单一职责原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则 开闭原则 一.单一职责原则 定义:应该有且仅有一个原因引起类的变更 带来的好处: 类的复杂性降低,实现什么职责有清晰明确 ...
- 用ImageSwitcher实现显示图片(更改图片时有动画效果)
ImageView和ImageSwitcher都是用来显示图片的.只不过后者在更新显示的图片的时候可以有动画效果. 注意点: 1.ImageSwitcher初始化需要定义一个ViewFactory,该 ...
- Java获取当前时间30天之前的时间
//方法一 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String maxDateStr = " ...
- [转]PHP用mysql数据库存储session
From : http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2010/0226/4002.html 大部分使用php的人一旦应用到sessio ...
- [转]使用mysql profiles 来查看sql 语句执行计划
From : http://blog.csdn.net/radkitty/article/details/4632289 要使用该功能,mysql的版本必须在5.0.37版本以上.否则只能使用expl ...
- 关于bootstrap Modal弹窗 滚动条的问题
如果自己通过代码关闭Modal窗体,需要在代码里增加一句代码 $('body').removeClass('modal-open'); 把这个CSS样式移除了
- 百度统计数据的UV和IP为什么不一样?
相信网站站长们在每天查看百度统计数据时会发现网站的IP和UV数据时大时小,有时候IP比UV大,有时候UV比IP大,站长们可能对这些情况感到奇怪.今天就和大家分享一下UV和IP的知识,帮助大家更好地做好 ...
- OpenWRT - WEB界面开发思路和基本方法
想要对OpenWRT的WEB界面(*下称界面)进行修改.修改的目标是: 1.修改页面的样式,设计为企业的风格(stylesheet) 2.新建自己的功能,实现 访问页面后,用户就可以对配置文件(也就是 ...