[转]SPI、UART、I2C三种串行总线简介

SPI(Serial Peripheral Interface,串行外设接口)

SPI是一种高速、全双工、同步、串行通信总线,3~4线接口,以主从模式工作,收发独立,可以实现多个SPI设备互相连接。

提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。SPI总线由三条信号线组成,分别是SCLK(串行时钟)、SDI(串行数据输入)、SDO(串行数据输出)。当有多个从设备时,还可以增加一条从设备选择线,CS是控制芯片是否被选中的,这样就可以实现在同一总线上多个SPI设备互相连接。

如果用GPIO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。
SDI – 主设备数据输入,从设备数据输出;
SDO – 主设备数据输出,从设备数据输入;
SCLK – 时钟信号,由主设备产生;
CS – 从设备使能信号,由主设备控制。

SPI 是一种允许一个主设备启动一个与从设备同步通讯的协议,从而完成数据的交换。SPI是串行协议,也就是说数据是一位一位传输的,这就是SCLK时钟线存在的原因,由SCLK提供时钟脉冲,SDI、SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCLK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCLK时钟线的控制可以完成对通讯的控制。

SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。

最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。

在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。

UART(Universal Asynchronous Receiver Transmitter,通用异步收发器)

UART总线是两线、全双工、异步串口,速度慢。比SPI、I2C这两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上有两根线,一根用于发送,一根用于接收。数据是异步传输的,对双方的时序要求比较严格,通信速度也不是很快,在多机通信上面用的最多。如果用GPIO口模拟UART总线,则需一个输入口,一个输出口。

UART是用于控制计算机与串行设备的芯片,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。作为接口的一部分,UART还提供以下功能:
将由计算机内部传送过来的并行数据转换为输出的串行数据流;
将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用;
在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验;
在输出数据流中加入启停标记,并从接收数据流中删除启停标记;
处理由键盘或鼠标发出的中断信号;
可以处理计算机与外部串行设备的同步管理问题;
有一些比较高档的UART还提供输入输出数据的缓冲区,现在比较新的UART是16550,它可以在计算机需要处理数据前在其缓冲区内存储16字节数据。

I2C(Inter-Integrated Circuit)

I2C总线是双向、两线(SCL、SDA)、同步、串行、多主控(multi-master)接口标准,具有竞争检测和总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在I2C的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。

如果用GPIO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。

I2C总线最主要的优点是其简单性和有效性。I2C能用于替代标准的并行总线,能连接各种集成电路和功能模块。只要求两条总线线路:一条串行数据线SDA 一条串行时钟线SCL。

I2C是多主控总线,总线上每一个设备都有一个独一无二的地址,根据设备自己的能力,任何能够进行发送和接收的设备都能像主控器一样工作,并控制总线。当然,在任何时间点上只能有一个主控,如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁,防止数据被破坏。
一个主控能够控制信号的传输和时钟频率。同步时钟允许器件通过总线以不同的波特率进行通信。同步时钟可以作为停止和重新启动串行口发送的握手方式。

由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。

串行的8 位双向数据传输位速率在标准模式下可达100kbit/s ,快速模式下可达400kbit/s ,高速模式下可达3.4Mbit/s。

片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整。I2C使用上拉电阻,抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。连接到相同总线的IC 数量只受到总线的最大电容400pF 限制。

文章转载自:ivy_reny的博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容

  • 姓名:周崇杰 学号:16040120059 专业:机械设计制造及其自动化 转载自:http://blog.cs...
    CJbaby阅读 2,850评论 0 5
  • 总线 计算机的各个功能部件通过总线连接在一起构成完整的计算机系统,总线是多个系统功能部件之间进行数据传送的公共通路...
    罗蓁蓁阅读 4,788评论 0 10
  • 1 嵌入式操作系统 为什么要用嵌入式操作系统 普通的单片机编程:程序(软件)——单片机硬件; 嵌入式操作系统开发:...
    安安zoe阅读 779评论 0 1
  • 什么是嵌入式 IEEE(Institute of Electrical and Electronics Engin...
    Leon_Geo阅读 3,694评论 1 20
  • ​​​本文主要介绍嵌入式系统的一些基础知识,希望对各位有帮助。 嵌入式系统基础 1、嵌入式系统的定义 (1)定义:...
    OpenJetson阅读 3,297评论 0 13