IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 单?机常?的?种通信协议 -> 正文阅读

[嵌入式]单?机常?的?种通信协议

通信协议

通过查看电子信号在传说过程中的动态图,可以更好的帮助我们更直观,更形象的理解传输的机理:https://mp.weixin.qq.com/s/1cesD9cwwef7cfFamm9ang

通信分为串行通信和并行通信,串行通信比并行通信传输速度慢,但占用的引脚资源多,数据是按位顺序传输。因此并行通信适合近距离(数米内)的高效通信(成本),而远距离一般用串行。

按照数据传送方向,分为:
单工: 数据传输只支持数据在一个方向上传输
半双工: 允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信:
全双工: 允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。

并行通信的通信方式:常见用在显示屏和显示芯片之间的通信,以及cpu和内存见的通信

串行通信的通信方式:分同步通信和异步通信
同步通信:带时钟同步信号传输,随着同步时钟进行传输数据,保证传输的稳定性和准确性。如:SPI,IIC通信接口
异步通信:不带时钟同步信号,虽然没有同步时钟,但是通信双方必须有约定,比如传输的波特率要相同。如UART(通用异步收发器),单总线。
在这里插入图片描述

1、UART和USART

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

学习超链接:
(1)UART协议快速扫盲(图文并茂+超详细)_GREYWALL-CSDN博客:https://blog.csdn.net/u010632165/article/details/109084542

(2)UART串口协议详解 - 知乎:https://zhuanlan.zhihu.com/p/150504364

(3)基于STM32之UART串口通信协议(一)详解 - LLLIN000 - 博客园:https://www.cnblogs.com/ChurF-Lin/p/10793111.html

2、I2C(IIC)

双向、两线、串?、多主控接?标准。速率不快,半双?,同步接?,具有总线仲裁机制,?常适合器件间近距离经常性数据通信,可实现设备组?。总线仲裁:线与,谁发0就仲裁成功。
I2C为串行通信总线的一种协议,I2C总线上的所有设备都支持主从关系,支持多个主设备在线,且支持仲裁和冲突检测。
I2C支持最大的从机数理论上是127个,每个设备都只有一个唯一的地址。(7位寻址、112个非保留地址;10位寻址1008个非保留地址)
I2C只需SCL(时钟信号)和SDA(数据信号)两条线。因两条线都是开漏输出,所以需要上拉电阻。一般情况下100Kbps用10K上拉,400Kbps用2K上拉。I2C还有高速模式的3.4Mbps和超快速的5Mbps。
第一位是开始信号,主设备发送此信号时所有从机唤醒准备接受地址。

(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限制。

(3)I2C总线特征总结

I2C总线上的每一个设备都可以作为主设备或者从设备,而且每一个设备都会对应一个唯一的地址(可以从I2C器件的数据手册得知),主从设备之间就通过这个地址来确定与哪个器件进行通信,在通常的应用中,我们把CPU带I2C总线接口的模块作为主设备,把挂接在总线上的其他设备都作为从设备。I2C总线上可挂接的设备数量受总线的最大电容400pF限制,如果所挂接的是相同型号的器件,则还受器件地位的限制。I2C总线数据传输速率在标准模式下可达 100kbit/s,快速模式下可达 400kbit/s,高速模式下可达3.4Mbit/s。一般通过 I2C总线接口可编程时钟来实现传输速率的调整。I2C总线上的主设备与从设备之间以字节(8位)为单位进行双向的数据传。

学习超链接:
(1)对不起!我还是坚持把I2C肝完了_GREYWALL-CSDN博客:https://blog.csdn.net/u010632165/article/details/116024653

(2)一文看懂I2C协议 - 知乎:https://zhuanlan.zhihu.com/p/362287272

3、SPI

?速同步串??,?速,可全双?,收发独?,同步接?,可实现多个SPI设备互联,硬件3~4线;也是所有基于SPI的设备公共有的,他们是SDI(数据输?),SDO(数据输出),SCK(时钟),CS(?选)。

  1. 通常SPI通信要求4根线,分别是MOSI(mast output salve input), MISO, CLK, CS。
  2. 当发送和接受数据的工作都准备好了,只要有时钟CLK,就发送数据,没有时钟就不发送,而且一个时钟周期发送一位(bit)数据,所以发送数据的快慢由时钟频率来控制。
  3. 至于时钟和数据的相位没有特别严格的要求(而IIC中,数据的变化只能在SCL是低电平的时候发生),SPI数据的变化是一个时钟周期一次,这样的方法来传输数据就简单多了。我们可以根据需求对时钟的极性和相位做调整,看看是在时钟上升沿还是下降沿来发送数据,还有停止发送时时钟的极性,是保持高电平还是低电平。
  4. 另外在多机通信时,SPI只是简单的通过一个片选信号来选择哪个设备占用总线,但是IIC是通过发送从设备地址来自动选择的。
    在这里插入图片描述

学习超链接:
(1)SPI协议详解(图文并茂+超详细)_GREYWALL-CSDN博客:https://blog.csdn.net/u010632165/article/details/109460814

4、USB

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

学习超链接:
(1)图解USB标准之架构概览_GREYWALL-CSDN博客:https://blog.csdn.net/u010632165/article/details/121005939

5、CAN

采?双线传输,两根导线分别作为CAN_H、CAN_L,并在终端配备有120Ω的电阻。收到总线信号时,CAN收发器将信号电平转化为逻辑状态,即CAN_H与CAN_L电平相减后,得到?个插值电平。各种?扰在两根导线上的作?相同,相减后的插值电平可以滤过这些?扰。

学习超链接:
(1)CAN详解(小白教程)_xwwwj的博客-CSDN博客:https://blog.csdn.net/xwwwj/article/details/105372234

(2)CAN总线简易入门教程_GREYWALL-CSDN博客:https://blog.csdn.net/u010632165/article/details/121661555

6、DMA

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

学习超链接:
(1)DMA原理,步骤超细详解,一文看懂DMA_Z小旋-CSDN博客:https://blog.csdn.net/as480133937/article/details/104927922

常见问题

常见差分平衡电平

RS422、RS485(232不是)、RJ47、CAN、USB、LVDS

什么是TTL电平、CMOS电平?

TTL电平信号被利用的最多是因为通常数据表示采用二进制规定,+5V等价于逻辑"1",0V等价于逻辑"0",这被称做TTL(晶体管-晶体管逻辑电平)信号系统,这是计算机处理器控制的设备内部各部分之间通信的标准技术。
CMOS电平和TTL电平:CMOS电平电压范围在3~15V,比如:当5V供电时,输出在4.6以上为高电平,输出在0.05V以下为低电平。输入在3.5V以上为高电平,输入在1.5V以下为低电平。而对于TTL芯片,供电范围在0~5V,常见都是5V,如74系列5V供电,输出在2.7V以上为高电平,输出在0.5V以下为低电平,输入在2V以上为高电平,在0.8V以下为低电平。因此,CMOS电路与TTL电路就有一个电平转换的问题,使两者电平域值能匹配。
TTL高电平3.6~ 5V,低电平0V ~2.4V
CMOS电平Vcc可达到12V

RS232/485的理解
1)RS-232标准

RS-232是美国电子工业协会EIA(Electronic Industry Association)制定的一种串行物理接口标准。RS是英文“推荐标准”的缩写,232为标识号。RS-232是对电气特性以及物理特性的规定,只作用于数据的传输通路上,它并不内含对数据的处理方式。需要说明一下,很多人经常把RS-232、RS-422、RS-485 误称为通讯协议,这是很不应该的,其实它们仅是关于UART通讯的一个机械和电气接口标准(顶多是网络协议中的物理层面)。
该标准规定采用一个25 个脚的DB-25 连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。后来IBM的PC 机将RS-232 简化成了DB-9 连接器,从而成为今天的事实标准。而工业控制的RS-232 口一般只使用RXD(2)、TXD(3)、GND(5) 三条线。

2)RS-485/ RS-422标准

RS-232接口可以实现点对点的通信方式,但这种方式不能实现联网功能。于是,为了解决这个问题,一个新的标准RS-485产生了。RS-485的数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B。
通常情况下,发送驱动器A、B之间的正电平在+2~+6V,是一个逻辑状态,负电平在-2~6V,是另一个逻辑状态。另有一个信号地C,在RS-485中还有一“使能”端,而在RS-422中这是可用可不用的。
RS-422 的电气性能与RS-485完全一样。主要的区别在于:RS-422 有4 根信号线:两根发送、两根接收。由于RS-422 的收与发是分开的所以可以同时收和发(全双工),也正因为全双工要求收发要有单独的信道,所以RS-422适用于两个站之间通信,星型网、环网,不可用于总线网;RS-485 只有2 根信号线,所以只能工作在半双工模式,常用于总线网。
其实RS232/485只是上面提到的UART数据帧的传输方式、途径。直白点就是怎么将数据帧中的0和1bit通过物理的接线传输出去。这就涉及到一个问题,在不同的线路上如何表示0和1呢?当然,我们都知道他们肯定是通过电平信号表示的0和1,所以他们的差异就只是表示0和1的电平或者叫电压是多少不同,判定多少伏表示0和1的方式的区别。线路上传输的数据是一样的,只是表现形式略有差异。

对比

RS232/RS485,是两种不同的电气协议,也就是说,是对电气特性以及物理特性的规定,作用于数据的传输通路上,它并不内含对数据的处理方式。比如,最显著的特征是:RS232使用3-15v有效电平,而UART,因为对电气特性并没有规定,所以直接使用CPU使用的电平,就是所谓的TTL电平(可能在0~3.3V之间)。更具体的,电气的特性也决定了线路的连接方式,比如RS232,规定用电平表示数据,因此线路就是单线路的,用两根线才能达到全双工的目的;而RS485, 使用差分电平表示数据,因此,必须用两根线才能达到传输数据的基本要求,要实现全双工,必需用4根线,因为485是差分电平,所以抑制共模干扰能力更强,传输距离可达几千米。但是,无论使用RS232还是RS485,它们与UART是相对独立的,但是由于电气特性的差别,必须要有专用的器件和UART接驳,才能完成数据在线路和UART之间的正常流动。从某种意义上来说,线路上存在的仅仅是电流,RS232/RS485规定了这些电流在什么样的线路上流动和流动的样式;在UART那里,电流才被解释和组装成数据,并变成CPU可直接读写的形式。
所以RS232/485就是代表一种电平标准,只是同TTL不同的一种电平。
RS232串口可以与485之间互转,在单片机上使用485总线与使用RS232串口一样,需要使用芯片转换电平即可!

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-16 11:25:15  更:2022-05-16 11:25:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:29:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码