博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通信教程02_几种常见串行通信及基础原理
阅读量:2044 次
发布时间:2019-04-28

本文共 2053 字,大约阅读时间需要 6 分钟。

关注、
星标公众
,不错过精彩内容

640?wx_fmt=png

本教程由作者strongerHuang于2019年09月原创发布。

标签:串口、 并口、 通信

版权所有:禁止商用

申明该文档仅供个人学习使用,转载请公众号联系作者授权。

1写在前面

为什么要讲述串行通信呢?
因为现在并行通信相对很少见,基本上都是串行通信。

今天给大家概要讲述一下常见的串行通信及相关基础原理。

包含:UART、 I²C、 SPI、 CAN、 USB等。

2基本概念

2.1 UART

UART:Universal Asynchronous Receiver/Transmitter,通用异步收发器。

USART:Universal Synchronous/Asynchronous Receiver/Transmitter,通用同步/异步串行接收/发送器。

USART可以理解为UART和USRT二合一的通信接口,一个是同步通信,一个是异步通信。

2.2 I²C

I²C:Inter-Integrated Circuit,字面上的意思是集成电路之间,它其实是I²C Bus简称,所以中文应该叫集成电路总线,它是一种串行通信总线。

2.3 SPI

SPI:Serial Peripheral Interface,串行外设接口,是一种高速的,全双工,同步的通信总线。

QSPI是Queued SPI的简写,是Motorola公司推出的SPI接口的扩展,比SPI应用更加广泛。

QSPI是在SPI协议的基础上,对其增加了队列传输机制,传输过程不需要CPU干预,极大的提高了传输效率。

2.4 CAN

CAN:Controller Area Network,控制器局域网络。

CAN 总线是一种应用广泛的现场总线 ,在工业测控和工业自动化等领域有很大的应用前景。

2.5 USB

USB:Universal Serial Bus,通用串行总线。

USB是一个外部总线标准,用于规范电脑与外部设备的连接和通讯,是应用在PC领域的接口技术。

3通信原理(基础)

这几种常见串行方式基础的通信原理不难,网上教程也有很多,这里给大家整合一下。

3.1 UART

UART通信一般是3线,当然也有单线半双工模式。

UART连接方式:

640?wx_fmt=png

UART通信数据格式:

640?wx_fmt=png

这一节详细更多内容请参看《通信教程01》中串行通信章节。

3.2 I²C

I²C是串行同步通信方式,一般是2线(SDA数据线、SCL时钟线),一主多从的通信方式。

I2C连线方式:

640?wx_fmt=png

SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,接口电路为开漏输出.需通过上拉电阻接电源VCC。当总线空闲时.两根线都是高电平,连接总线的外同器件都是CMOS器件,输出级也是开漏电路.在总线上消耗的电流很小。

I2C一般是地址+数据+ACK方式,基础的数据格式:

640?wx_fmt=png

3.3 SPI

SPI应用非常广泛,通常用于在微控制器和小型外设(如移位寄存器,传感器和SD卡)之间发送数据的接口总线。

SPI通信主要使用3线(SCK、MOSI、MISO)进行通信:

640?wx_fmt=png

但是SPI也用于多从机通信,此时,会多处一个CS片选信号线。

640?wx_fmt=png

多从机接线方式:

640?wx_fmt=png

当然,还有类似I2C多从机,通过寻址方式实现:

640?wx_fmt=png

SPI通信协议比I2C要简单的多,没有过多的数据处理。

3.4 CAN

CAN通信是相对前面3种更复杂的一种局域网络,不管是硬件,还是软件协议都更加复杂。

这里不详细讲述,可以关注我公众号『strongerHuang』,回复【CANOpen系列教程】,里面有关于CAN从底层硬件、协议、到上层软件的详细内容。

3.5 USB

前不久才写了关于USB的相关内容:

USB是生活中常见的一种串行通信接口,主要4线(D+ D- VCC GND):

640?wx_fmt=png

USB设备端的D-或D+数据线连接1.5K欧姆的上拉电阻。当设备插入PC机的时候,会将PC机的D-或D+端的电压拉高,当PC机在D-或D+端检测到高电平时,就知道有设备插入了。

如果是PC机D-端被拉高,接入的则是USB低速设备;如果是PC机D+端被拉高,接入的则是USB全速或高速设备,具体是全速设备还是高速设备,会由PC机和USB设备发包握手确定。

640?wx_fmt=jpeg

USB传输速度有:低速1.5Mbps(USB1.0协议)、全速12Mbps(USB1.1协议)、高速480Mbps(USB2.0协议)、超高速5Gbps(USB3.0协议)等。

4

说明

1.该文档仅供个人学习使用,版权所有,禁止商用。

2.本文由我一个人编辑并整理,难免存在一些错误。

3.本文收录于公众号『嵌入式专栏』,关注微信公众号回复【通信教程】即可查看全系列教程。  

5最后

我的知乎:strongerHuang

我的网站:www.strongerhuang.com

若觉得文章对你有帮助,
随手点『在看』、分享到朋友圈,也是对我的支持和鼓励

扫描下面二维码、关注公众号,在底部菜单中查看更多精彩内容!

长按识别图中二维码关注

你可能感兴趣的文章
Leetcode C++《每日一题》20200707 112. 路径总和
查看>>
Leetcode C++ 《第198场周赛-2》 1519. 子树中标签相同的节点数
查看>>
Leetcode C++ 《第199场周赛》
查看>>
Leetcode C++ 《第200场周赛》
查看>>
Leetcode C++ 《第201场周赛》
查看>>
云原生 第十章 应用存储和持久化数据卷:存储快照和拓扑调度
查看>>
云原生 第十一章 应用健康
查看>>
Leetcode C++ 《第202场周赛》
查看>>
云原生 第十二章 可观测性:监控与日志
查看>>
Leetcode C++ 《第203场周赛》
查看>>
云原生 第十三章 Kubernetes网络概念及策略控制
查看>>
《redis设计与实现》 第一部分:数据结构与对象 || 读书笔记
查看>>
《redis设计与实现》 第二部分(第9-11章):单机数据库的实现
查看>>
Leetcode C++《热题 Hot 100-70》23.合并K个升序链表
查看>>
《redis设计与实现》第二部分 (第12章:事件)
查看>>
《redis设计与实现》第二部分 (第13章 客户端)
查看>>
《redis设计与实现》第二部分 (第14章 服务器)
查看>>
《redis设计与实现》第四部分 (第18章 发布与订阅)
查看>>
《redis设计与实现》第四部分 (第19章 事务)
查看>>
《redis设计与实现》第四部分 (第20章 Lua脚本)
查看>>