历史上的今天
今天是:2024年09月18日(星期三)
2019年09月18日 | 第19章 通讯的基本概念—零死角玩转STM32-F429系列
2019-09-18 来源:eefocus
在计算机设备与设备之间或集成电路之间常常需要进行数据传输,在本书后面的章节中我们会学习到各种各样的通讯方式,所以在本章中我们先统一介绍这些通讯的基本概念。
19.1 串行通讯与并行通讯
按数据传送的方式,通讯可分为串行通讯与并行通讯,串行通讯是指设备之间通过少量数据信号线(一般是8根以下),地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式。而并行通讯一般是指使用8、16、32及64根或更多的数据线进行传输的通讯方式,它们的通讯传输对比说明见图 191,并行通讯就像多个车道的公路,可以同时传输多个数据位的数据,而串行通讯,而串行通讯就像单个车道的公路,同一时刻只能传输一个数据位的数据。

图 191 并行通讯与串行通讯的对比图
很明显,因为一次可传输多个数据位的数据,在数据传输速率相同的情况下,并行通讯传输的数据量要大得多,而串行通讯则可以节省数据线的硬件成本(特别是远距离时)以及PCB的布线面积,串行通讯与并行通讯的特性对比见表 191。
表 191 串行通讯与并行通讯的特性对比

不过由于并行传输对同步要求较高,且随着通讯速率的提高,信号干扰的问题会显著影响通讯性能,现在随着技术的发展,越来越多的应用场合采用高速率的串行差分传输。
19.2 全双工、半双工及单工通讯
根据数据通讯的方向,通讯又分为全双工、半双工及单工通讯,它们主要以信道的方向来区分,见图 192及表 192。
表 192 通讯方式说明

仍以公路来类比,全双工的通讯就是一个双向车道,两个方向上的车流互不相干;半双工则像乡间小道那样,同一时刻只能让一辆小车通过,另一方向的来车只能等待道路空出来时才能经过;而单工则像单行道,另一方向的车辆完全禁止通行。

图 192 全双工、半双工及单工通讯
19.3 同步通讯与异步通讯
根据通讯的数据同步方式,又分为同步和异步两种,可以根据通讯过程中是否有使用到时钟信号进行简单的区分。
在同步通讯中,收发设备双方会使用一根信号线表示时钟信号,在时钟信号的驱动下双方进行协调,同步数据,见图 193。通讯中通常双方会统一规定在时钟信号的上升沿或下降沿对数据线进行采样。

图 193 同步通讯
在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些同步用的信号位,或者把主体数据进行打包,以数据帧的格式传输数据,见图 194,某些通讯中还需要双方约定数据的传输速率,以便更好地同步。

图 194 某种异步通讯
在同步通讯中,数据信号所传输的内容绝大部分就是有效数据,而异步通讯中会包含有帧的各种标识符,所以同步通讯的效率更高,但是同步通讯双方的时钟允许误差较小,而异步通讯双方的时钟允许误差较大。
19.4 通讯速率
衡量通讯性能的一个非常重要的参数就是通讯速率,通常以比特率(Bitrate)来表示,即每秒钟传输的二进制位数,单位为比特每秒(bit/s)。容易与比特率混淆的概念是"波特率"(Baudrate),它表示每秒钟传输了多少个码元。而码元是通讯信号调制的概念,通讯中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。如常见的通讯传输中,用0V表示数字0,5V表示数字1,那么一个码元可以表示两种状态0和1,所以一个码元等于一个二进制比特位,此时波特率的大小与比特率一致;如果在通讯传输中,有0V、2V、4V以及6V分别表示二进制数00、01、10、11,那么每个码元可以表示四种状态,即两个二进制比特位,所以码元数是二进制比特位数的一半,这个时候的波特率为比特率的一半。因为很多常见的通讯中一个码元都是表示两种状态,人们常常直接以波特率来表示比特率,虽然严格来说没什么错误,但希望您能了解它们的区别。
史海拾趣
|
在职场中,简历就好比是一个企业和个人牵线搭桥的红娘,能否顺利得找到自己心仪得工作,那就得看这个红娘的能力有几分了。在我自己长期从事人力资源招聘工作过程中总结了一下几点建议,希望能帮助在职场中求职屡遭败阵的求职者,特别是应届毕业生。 ...… 查看全部问答> |
|
linux/config.h: No such file or directory解决办法 本帖最后由 paulhyde 于 2014-9-15 08:55 编辑 $ make make -C /lib/modules/2.6.18-1.2798a_FC6/build SUBDIRS=/home/njc/stuff/linux-labjack/driver/linux-2.6 modules make[1]: Entering directory `/usr/src/redhat/BUILD/kernel-2.6.181.27 ...… 查看全部问答> |
|
使用PIC16F737,在MAPLAB的PICC中编译时,报错误的flag pic16f737。PICC是支持PIC16F73的。如何让PICC支持PIC16F737?… 查看全部问答> |
|
请问这是什么意思呀,看不懂,是嵌入式中的东西vivi中的vivi.lds.in里面的 SECTIONS { . = TEXTADDR; .text : { __ro_start = . ; *(.text) __initcmd_start = .; *(.cmd.init) & ...… 查看全部问答> |
|
各位有去过华清远见培训过的吗?我说的那个就业班,怎么样啊?给点意见可以吗? 有人了解尚观吗?那怎么样啊?我想去培训,因为嵌入式要是自学可能会走好多弯路,忽忽~~~… 查看全部问答> |
|
请教,2440板子,evc下播放声音的api哪个能用? playSound和sndPlaySound都不能使用啊。 我用了sndPlaySound(),怎么操作后,总是滴一声,根本不是播放的声音呢。 说明:声音为wav格式文件,13k,很小。 不胜感激… 查看全部问答> |
|
使用的s3c2440+wince5,想要在flash保存注册信息,增加hive后,结果wince不能启动。删除后重新sysgen又可以正常启动。 请问问题出在呢??是否有demo可参考 1.当我在PB中添加了“hive_based_registry” 2.修改platform.reg,有两个地方;HIVE BOOT ...… 查看全部问答> |
|
用比较器做的24V/20A的短路保护电路怎么都实现不了保护效果,请各位大侠帮下 我做了个24V/20A的系统,想做个短路保护电路,想法就是通过检测R2两端的电压给比较器,当系统正常时,比较器的同相端电压大于反向端电压,比较器输出高电平,Q3截止,当短路时比较器输出反向让Q3导通。 问题是比较器输出无法让Q3导通,请各位大侠 ...… 查看全部问答> |




