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一根数据线,速度不高,结构简单
UART、I2C、SPI三种协议对比的更多相关文章
- Aurora 8B/10B、PCIe 2.0、SRIO 2.0三种协议比较
在高性能雷达信号处理机研制中,高速串行总线正逐步取代并行总线.业界广泛使用的Xilinx公司Virtex-6系列FPGA支持多种高速串行通信协议,本文针对其中较为常用的Aurora 8B/10B和PC ...
- QT的三种协议说明
关于Qt的三种协议以及是否收费,有以下引文: 引文一: 最近一直在学习 Qt.Qt 有两个许可证:LGPL 和商业协议.这两个协议在现在的 Qt 版本中的代码是完全一致的(潜在含义是,Qt 的早期版本 ...
- Android自动化测试中AccessibilityService获取控件信息(2)-三种方式对比
Android自动化测试中AccessibilityService获取控件信息(2)-三种方式对比 上一篇文章: Android自动化测试中AccessibilityService获取控件信息(1 ...
- servlet实现的三种方式对比(servlet 和GenericServlet和HttpServlet)
第一种: 实现Servlet 接口 第二种: 继承GenericServlet 第三种 继承HttpServlet (开发中使用) 通过查看api文档发现他们三个(servlet 和GenericSe ...
- ArrayBlcokingQueue,LinkedBlockingQueue与Disruptor三种队列对比与分析
一.基本介绍 ArrayBlcokingQueue,LinkedBlockingQueue是jdk中内置的阻塞队列,网上对它们的分析已经很多,主要有以下几点: 1.底层实现机制不同,ArrayBlco ...
- APP开发的三种技术对比
目前来说主流的App开发方式有三种:Native App .Web App.Hybird App.下面我们来分析一下这三种App开发方式的优劣对比: 一 :Native App 即 原生App开发 优 ...
- Apache2 三种MPM对比分析
就最新版本的Web服务器Apache(版本是Apache 2.4.10,发布于2014年7月21日)来说,一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式. ...
- php 链接mysql的三种方式对比
PHP连接Mysql的三种方式: 1.原生的连接方式 原生的连接方式是面向过程的写法 <?php $host = 'localhost'; $database = 'test'; $usern ...
- redis三种模式对比
模式类型 主从模式(redis2.8版本之前的模式).哨兵sentinel模式(redis2.8及之后的模式).redis cluster模式(redis3.0版本之后) 主从模式原理 同Mysql主 ...
随机推荐
- topcoder 650 srm
500 遇到这种构造题 就给跪了 比赛的时候想很多方法 DP,贪心,模拟 发现越写越烦琐.看到别人出这么快,肯定又是奇葩思路. 后来居然想到 2^50的暴力 +剪枝 不过暴力肯定卡你 IDEA: 只要 ...
- Java的vector可实现自动增长的数组
Vector维克多提供了向量类(vector)以实现类似动态数组的功能. 首先,在Java中并没有指针这样的概念 ,但如果正确灵活地使用指针又确实可以大大提高程序的质量.比如在c,c++中所谓的“动态 ...
- Java后端技术书单
写博客记录技术上使用的各种问题,这个只能算是一个打游击. 如果要把一个知识学透,最有效的方式就是系统学习,而系统学习就是看书,书本上有清晰的学习路线以及相应的技术栈. 下面是我收集的Java后端的技术 ...
- 关于Chrome谷歌浏览器开发者工具网络Network中返回无数据的问题
1.如图所示,对于有些js文件,响应中无返回数据,Failed to load response data,当然本来是应该有数据,你用火狐浏览器看,就是有的,或者直接在浏览器地址栏里输入url,也可以 ...
- IOS开发 ios7适配
ios7控制器试图默认为全屏显示,导航栏的不同设置会产生不同的效果. 首先判断系统的的版本,区别: if (floor(NSFoundationVersionNumber) <= NSFound ...
- LoadRunner---http请求中对中文参数的处理
Loadrunner 做保险承保业务测试 1. 保险正常业务流程:保费计算--->保存--->申请核保--->核保--->缴费(出保单) 问题一描述 保费计算接口中,需要把车牌 ...
- spring实战笔记6---springMVC的请求过程
之前有一次在面试其中被问到了这个问题.当时说得不是非常清楚,有些细节的地方想不起来了.所以在这里从新回想和总结一下SpringMVC的起步.请求的运行过程. 在SpringMVC其中.跟请求(Requ ...
- thinkphp3.2.3 数据库写入add 方法的一些问题。
最近在做项目中遇到的一个数据操作add()方法,在不开启debug的模式下会漏掉一些字段没写入数据库. 当时并不知道是这个原因,明明在开发的时候都是没问题的,怎么突然出现这个问题,找了好久都没有头绪, ...
- 基于开源项目的在线网络视频直播项目---pc端的推流
https://github.com/winlinvip/simple-rtmp-server/issues/66 https://github.com/justinmakaila/iOS-Frame ...
- 另外几种Java集合框架具体解释续
另外几种Java集合框架具体解释续 作者:chszs,未经博主同意不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs fastutil库优于Trove库的 ...