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 ...
随机推荐
- T4:使用 T4 消除程序和配置文件中重复的字符串信息
背景 我们经常在配置文件中配置各种:id.name,然后在程序中使用这些配置获取信息,这导致了字符串重复出现在系统的多个地方,非常不利于维护,本文介绍采用 T4 来消除这种重复. T4 消除重复 配置 ...
- Android系统机制解析-公共服务
创建一个公共服务类后有两种使用方式,第一种将公共服务放到自己的项目中执行,这样外界无法訪问和控制这个公共服务类.这个服务的全部变量.函数都在自己的项目中执行.能够直接通过startIntent(Ser ...
- 实用ExtJS教程100例-002:MessageBox的三种用法
在上一节中,我们用到了MessageBox,在本文中,我们将介绍一下ExtJS中常用的三种MessageBox. Ext.MessageBox.alert() 这个方法用来打开一个普通的对话框,对话框 ...
- 《Redis设计与实现》
<Redis设计与实现> 基本信息 作者: 黄健宏 丛书名: 数据库技术丛书 出版社:机械工业出版社 ISBN:9787111464747 上架时间:2014-6-3 出版日期:2014 ...
- [Web 前端] 使用yarn代替npm作为node.js的模块管理器
cp from : https://www.jianshu.com/p/bfe96f89da0e Fast, reliable, and secure dependency managemen ...
- Kubernetes 存储系统 Storage 介绍
本文环境为Kubernetes V1.11,操作系统版本为 CentOs 7.3,Kubernetes集群安装可以参考 kubeadm安装kubernetes V1.11.1 集群 容器中的存储都是临 ...
- mysql权限管理命令示例
mysql权限管理命令示例 grant all privileges on *.* to *.* identified by 'hwalk1'; flush privileges; insert in ...
- iOS:CoreText的常用语法
CoreText的关键语法 一.坐标旋转 -(void)drawRect:(CGRect)rect { //获取上下文 CGContextRef ctx = UIGraphicsGetCurrentC ...
- @Autowired用法详解
@Autowired 注释,它可以对类成员变量.方法及构造函数进行标注,完成自动装配的工作. 通过 @Autowired的使用来消除 set ,get方法.在使用@Autowired之前,我们对一个b ...
- 开源ckplayer 网页播放器去logo去广告去水印修改
功能设置介绍 本教程涉及到以下各点,点击对应标题页面将直接滑动到相应内容: 1:修改或去掉播放器前置logo 2:修改或去掉右上角的logo 3:修改.关闭.设置滚动文字广告 4:去掉右边的开关灯分享 ...