在单片机的应用中,通信协议是其中必不可少的一部分,上位机与下位机,单片机与单片机,单片机与外设模块之间的通信都需要通信协议实现信息交换和资源共享。由于设备之间不同的传输速率、电气特性、可靠性要求的不同,也产生了许多类型的适用于不同情况的通信协议,并被广泛的接受和使用。

1、UART和USART

分别名为通用异步收发器和通用同步异步收发器,速率不快,可全双工,结构上一般由波特率产生器、UART/USART发送器、UART/USART接收器组成,硬件上两线,一收一发。

在UART和USART 有可以扩展为R232和RS485等总线类型。

(1)RS232

RS232(异步传输标准接口),是个人计算机上的通讯接口之一,也称串口或串行通讯接口。由电子工业协会(Electronic Industries Association, EIA) 所制定的异步传输标准接口。通常 RS-232 接口以9 个引脚 (DB-9) 或是 25 个引脚 (DB-25) 的型态出现,一般个人计算机上会有两组 RS-232 接口,分别称为COM1 和 COM2。是目前最常用的一种串行通讯接口。

标准 RS232 接口: 常用串口只需要 TX 与 RX 即可。

(2)RS485

在要求通信距 离为几十米到上千米时,广泛采用 RS-485 串行总线标准。 RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。RS232 串口可以与 485 之间互转, 在单片机上使用 485 总线与使用 RS232 串口一样, 需要使用芯片转换电平即可!

2、IIC

(1)概述

  • I2C(Inter-Integrated Circuit BUS) 集成电路总线,该总线由 NXP(原 PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。
  • 经常 IIC 和 SPI 接口被认为指定是一种硬件设备,但其实这样的说法是不尽准确的,严格的说他们都是人们所定义的软硬结合体,分为物理层(四线结构)和协议层(主机,从机,时钟极性,时钟相位)。
    IIC, SPI 的区别不仅在与物理层, IIC 比 SPI 有着一套更为复杂的协议层定义。下面来分别说明一下 IIC 的物理层和协议层

(2) IIC 的物理层

  • a.只要求两条总线线路,一条是串行数据线SDA,一条是串行时钟线SCL,(IIC 是半双工,而不是全双工)。
  • b.每个连接到总线的器件都可以通过唯一的地址和其它器件通信,主机/从机角色和地址可配置,主机可以作为主机发送器和主机接收器。
  • c.IIC 是真正的多主机总线,(而这个 SPI 在每次通信前都需要把主机定死,而 IIC 可以在通讯过程中,改变主机),如果两个或更多的主机同时请求总线,可以通过冲突检测和仲裁防止总线数据被破坏。
  • d.传输速率在标准模式下可以达到 100kb/s,快速模式下可以达到 400kb/s。
  • e.连接到总线的 IC 数量只是受到总线的最大负载电容 400pf 限制。
  • 一个典型的 IIC 接口如下图所示

双向、两线、串行、多主控接口标准。速率不快,半双工,同步接口,具有总线仲裁机制,非常适合器件间近距离经常性数据通信,可实现设备组网。

  总线仲裁:线与,谁发0就仲裁成功。

3、SPI

通常 SPI 通信要求 4 根线,分别是 MOSI(mast output salve input), MISO, CLK, CS。当发送和接受数据的工作都准备好了,只要有时钟 CLK,就发送数据,没有时钟就不发送,而且一个时钟周期发送一位(bit)数据,所以发送数据的快慢由时钟频率来控制。

至于时钟和数据的相位没有特别严格的要求(而 IIC 中,数据的变化只能在 SCL 是低电平的时候发生), SPI数据的变化是一个时钟周期一次,这样的方法来传输数据就简单多了。我们可以根据需求对时钟的极性和相位做调整,看看是在时钟上升沿还是下降沿来发送数据,还有停止发送时时钟的极性,是保持高电平还是低电平。

另外在多机通信时, SPI 只是简单的通过一个片选信号来选择哪个设备占用总线,但是 IIC 是通过发送从设备地址来自动选择的。

4、CAN

  • CAN 是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH 公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。 在北美 和西欧, CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以 CAN 为底层协议专为大型货车和重工机械车辆设计的J1939 协议。
  • CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO 国际标准化的串行通信协议。在汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的量”、“通过多个 LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的 CAN 通信协议。此后, CAN 通过 ISO11898 及 ISO11519 进行了标准化,在欧洲已是汽车网络的标准协议。
  • CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。
  • 在总线中传送的报文,每帧由 7 部分组成。 CAN 协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为 11位,扩展格式为 29 位。
  • 在标准格式中,报文的起始位称为帧起始(SOF),然后是由 11 位标识符和远程发送请求位 (RTR)组成的仲裁场。 RTR 位标明是数据帧还是请求帧,在请求帧中没有数据字节。
  • 控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。它还包括一个保留位 (ro),为将来扩展使用。它的最后四个位用来指明数据场中数据的长度(DLC)。数据场范围为 0~8 个字节,其后有一个检测数据错误的循环冗余检查(CRC)。
  • 应答场(ACK)包括应答位和应答分隔符。发送站发送的这两位均为隐性电平(逻辑 1),这时正确接收报文的接收站发送主控电平(逻辑 0)覆盖它。用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文。
  • 报文的尾部由帧结束标出。在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。

5、Modbus

  • Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一种通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一个控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。
  • 当在同一 Modbus 网络上通信时,此协议决定了每个控制器需要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用 Modbus 协议发出。在其它网络上,包含了 Modbus 协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。
  • 此协议支持传统的 RS-232、 RS-422、 RS-485 和以太网设备。许多工业设备,包括 PLC, DCS,智能仪表等都在使用 Modbus 协议作为他们之间的通信标准。
    Modbus 具有以下几个特点:
  • 标准、开放,用户可以免费、放心地使用 Modbus 协议,不需要交纳许可证费,也不会侵犯知识产 权。目前,支持 Modbus 的厂家超过400家,支持 Modbus 的产品超过 600 种。
  • Modbus 可以支持多种电气接口,如 RS-232、 RS-485 等,还可以在各种介质上传送,如双绞线、光纤、无线等。
  • Modbus 的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。

6、USB

高速同步串行口,高速,可全双工,由主机、hub、设备组成。设备可以与下级的hub相连构成星型结构。一条USB的传输线分别由地线、电源线、D+、D-四条线构成,D+、D-是差分输入线,它使用的是3.3V的电压。数据在USB线里传送是由低位到高位发送的。

7、DMA

DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。这样数据的传送速度就取决于存储器和外设工作速度。

  通常系统总线是由CPU管理的,在DMA方式时,就希望CPU把这些总线让出来,即CPU连到这些总线上的线处于第三态(高阻状态),而由DMA控制器接管,控制传送的字节数,判断DMA是否结束,以及发出DMA结束信号。

MCU--几种常见通讯总线相关推荐

  1. SPI、I2C、UART(即串口)三种串行总线详解

    以下内容均来源于网络资源的学习与整理,如有侵权请告知删除. 参考博客 几个串口协议学习整理 UART IIC SPI_mainn的博客-CSDN博客 SPI.I2C.UART三种串行总线的原理.区别及 ...

  2. 三种串行总线协议的区别(SPI、I2C和UART)

    SPI.I2C跟UART三种串行总线协议的区别: (如果想了解SPI和I2C更多详细内容,可看 SPI总线(一):基本原理篇, SPI总线(二):驱动分析篇,SPI总线(三):驱动实例,i2c总线(基 ...

  3. 电池管理系统(BMS)功能与作用/BMS 故障分析方法/15种常见故障案例分析

    提示:本篇文章仅供学习参考 文章目录 一.电池管理系统(BMS)功能与作用 二.BMS 故障分析方法 三.15种常见故障案例分析 一.电池管理系统(BMS)功能与作用 从整车角度,电池管理系统(BMS ...

  4. RabbitMQ 服务异步通信 -- 初识MQ(同步通信和异步通信、MQ、几种常见MQ的对比)、RabbitMQ安装和介绍

    文章目录 1. 初识MQ 1.1 同步通信和异步通信 1.1.1 同步通信存在的问题 1.1.2 同步调用小结 1.1.3 异步通讯 1.1.4 异步调用方案 1.1.5 异步调用小结 1.2 什么是 ...

  5. 英文简历的几种常见形式

    英文简历的几种常见形式 英文简历的几种常见形式 [ 2006-03-30 13:41 ] 英语简历并无固定不变的单一形式.应聘者完全可以根据个人的具体情况来确定采用何种形式,灵活设计.一般来说,根据个 ...

  6. uart怎么判断帧错误_UART通讯总线工作原理的理解

    奥的斯电梯OCSS/LCBII /TCBC/GECB板与电梯轿厢和电梯井道之间的串行通讯采用了UART通讯,将井道和轿厢的输入.输出和开关部件的信号转换成串行通讯信号传输给电梯操作控制系统,大大节省了 ...

  7. uart怎么判断帧错误_UART通讯总线工作原理的理解--龚玉山

    奥的斯电梯OCSS/LCBII /TCBC/GECB板与电梯轿厢和电梯井道之间的串行通讯采用了UART通讯,将井道和轿厢的输入.输出和开关部件的信号转换成串行通讯信号传输给电梯操作控制系统,大大节省了 ...

  8. SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转)

    SPI.I2C.UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART( ...

  9. 打印机通讯 tspl指令_西门子PLC四种核心通讯方式汇总学习

    西门子作为最早进入中国市场的工控厂家,其市场占有率一直非常高. 西门子PLC的品质非常好,其网络稳定性.开放性深受工控人员的喜爱,而且编程软件分类多,使用方便.在国内工控界具有显著地位.虽然大家对西门 ...

最新文章

  1. 微生物组-宏基因组分析第8期(报名直播课免费参加线下2020.7,早鸟价仅剩1周)...
  2. java经典模式:七种模式样例
  3. JSR303—Bean Validation验证
  4. java算法 第七届 蓝桥杯B组(题+答案) 5.抽签
  5. aspnet_regsql在哪里 怎么运行它 以及功能介绍
  6. java 添加等待时间_Java中线程等待特定时间的最有效方法 - java
  7. HTML5 Geolocation API : 实时跟踪应用
  8. 大年30还多少天_大美鹅老李告诉你30天的鹅需要多少温度?
  9. android c 内存泄露,内存泄漏弄个明白
  10. 新电商正面迎战“阅读焦虑”
  11. matlab中欧姆如何表示,Excel中怎样输入欧姆特殊符号
  12. 广东省的身份证号码开头
  13. 【基础算法训练】—— 栈
  14. 「计算机日常」笔吧测评室笔记本测评科普视频笔记
  15. 2023,快手仍是品牌、商家最值得投入的流量洼地
  16. springboot下生成复杂word文档方案 在Word软件里面制作模板
  17. 随机点名器的实现!!!
  18. centos7 kubernetes
  19. 易宝正式加入openGauss社区
  20. HTML5-原声拖放

热门文章

  1. Corel VideoStudio X4培训笔记(二)——制作简单短片
  2. 个人博客开发日记01
  3. 一个简单的XML程序
  4. 前端复制、剪切、禁止复制等
  5. 【EMC专题】电磁兼容--为什么说完整的地平面对提高干扰能力非常重要
  6. el-upload上传图片成功,详情页回显base64格式的图片
  7. Oracle EBS Interface/API(31) -PR最终关闭API
  8. AI-人工智能初识,跟上时代的步伐也要走在未来的路上
  9. 引发类型为“System.ComponentModel.Design.ExceptionCollection”的异常
  10. 开发板可以ping通百度IP,但是不能ping百度域名 提示ping: bad address 'www.baidu.com'