| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> STM32——通信基础概念 -> 正文阅读 |
|
[嵌入式]STM32——通信基础概念 |
目录 一、通信的本质通信通信,说白的就是信息互通。人跟人间的信息互通、机器跟机器间的信息互通、机器根人之间信息互通。 而想要做到互通,主要有两个问题需要解决,“信息如何表示”和“信息该如何传输”两个核心问题。 我们知道信息交互中,最原始,朴素的表示是0和1.其中,信息传输主要指01串在介质上传输的过程,这个过程具体上跟诸如无线电、光纤和电缆如何操作实现有关,本文主要讨论的是“信息该如何表示”这一问题。 那么:
就是值得讨论的问题了 二、信息表示2.1 0/1信号表示首先,在电子世界中0和1的表示,目前大致有两种方式
2.1.1 电平信号电平信号,简单来说就是根据一根线上的不同的电压区间划分成高电平和低电平(如:大于3.3V为高电平,低1.5V为低电平等),通过人为定义高低电平为0或1来传输信息。 而又因为几乎不可能做到不同设备间电压完全一致,所以为了保证收发双方电压的一致性,电平信号传输通常要加一根GND线作共地作用。 2.1.2 差分信号差分信号这哥们可以说是电平信号的弟弟,前人发现,在长距离传输信息时,传输线会变成不可忽略的等效电阻,从而造成明显的压差,致使信息丢失、失真等现象。而且电平信号只有一根数据线,容易受到电磁干扰等等。 因为以上的原因,差分信号线就粉墨登场。 ?既然你一根信号线容易受到电磁干扰,长距离传输有明显的压差,那么我用两根信号线表示,根据两根信号线同一时刻的压差区间定义0和1不就可以增强抗干扰性和增长了传输距离嘛。这就是差分信号的思想。 但差分信号也不是没有缺点的。 它的问题在于线材的花销是电平信号的两倍,当我们同时传输N路信号时,电平信号只要N+1根线(N根信号线,1根共地线),而差分需要2N根线。所以电平信号和差分信号本身并无优劣之分,主要看使用场景进行选择 2.2 信号解析信号解析的操作过程而言,其实就是信号解码的过程,发送方通过对01串进行编码发送给接收方,而接收方通过之前的约定的编码规则逆向解析。 这个发送和接收过程中会产生两个问题:
由以上的问题可以引申出两种不同的通信方式:
2.2.1 同步通信同步通信,在表现形式上就是在收发双方之间加了一条时钟线。通过结合时钟线SCL的电平状态和信号线SDA的电平状态组合出诸如:起始信号、终止信号、实际想要发送的0/1信号等。 如单片机中最常用的I2C协议,它的起始和终止信号就是通过判断时钟线SCL在高电平时,信号线SDA的边沿跳变情况决定的。(关于I2C的具体内容,不了解的可以自行搜索学习)下图为同步通信示例,I2C协议的拓扑连接图 。 ?2.2.2 异步通信异步通信跟同步通信的最大区别在于——异步通信没有时钟线,只有信号线和地线。 既然没有时钟线作为辅助,那么信号线SDA就需要传输包含更多的信息,以替代时钟线的作用,诸如:
因此,异步通信传输的01串里面,必然包含起始位,停止位,以及真正需要传输的数据的数据长度。 不仅如此,我们还需要统一一下收发双方的传输速率,以便接收方能及时且准确的处理发送方发来的数据。 这个传输率,我们一般称之为波特率。波特率指的是每秒钟传送的码元个数。至于码元是啥。这里可以自行搜索学习。所以在通信过程中,波特率在大多数情况下,可以理解为比特率。即每秒钟传送的比特个数。 2.2.3 小结同步通信 优点:
缺点:
异步通信 优点:
缺点:
比较结论:
2.3 通信协议知道了0/1如何表示,也知道了收发双方对信号解析应该注意的事项。那么就还剩最后一个重要的问题,即:如何用0和1的组合表示我们所要传达的信息? 换句话说,对于一大串0和1序列应该如何解读? 这个问题就属于编码的范畴了,如何编码是通信协议所规定的。不同的协议有不同的编码方式,这个在学习具体通信协议时就会感受到。但它们无外乎遵从以下几点:
传输方向前面没有提到,这里简单的介绍下: 2.3.1 传输方向通信的传输方向可以分为以下三种:
由以上的定义可以看出,一般单工和半双工都是通过一根信号线实现的,而想要实现全双工,则需要两根信号线用两个端口接收 2.3.2 常见通信协议有关通信协议的主要问题,个人觉得由有上面的理解差不多就够了。下面是简单介绍下单片机中常用的通信协议:
三、缓存方式在通信过程中,缓存机制是很有必要的,至于为什么,请看下图: 接收端其实也是同样的道理,由此看来缓存机制的必要性。 而常见的缓存机制有两种:
学过数据结构的对FIFO应该都不陌生,first in first out,先进先出的队列结构 还是以发送端为例,应用到上述过程的话,就是CPU把要传输的数据先丢给寄存器,由该寄存器一个bit一个bit的丢给发送端口,CPU就去干其他的活了。 但寄存器的存储空间有限,很多时候还是要把需要发送的数据拆分成多个段落分次传输,所以引申了一个原理类似,但比寄存器存储空间要大的缓存机制——DMA。 关于DMA的讨论,后续再聊。? |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/9 3:10:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |