历史上的今天
今天是:2025年08月09日(星期六)
2021年08月09日 | STM32 | 什么是通讯?
2021-08-09 来源:eefocus
一、什么是串行通讯与并行通讯?
按数据传送的方式,通讯可分为串行通讯与并行通讯,串行通讯是指设备之间通过少量数据信号线(一般是 8 根以下),地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式。
而并行通讯一般是指使用 8、 16、 32 及 64 根或更多的数据线进行传输的通讯方式。并行通讯就像多个车道的公路,可以同时传输多个数据位的数据,而串行通讯,而串行通讯就像单个车道的公路,同一时刻只能传输一个数据位的数据。 并行通讯与串行通讯的对比图如下:
很明显,因为一次可传输多个数据位的数据 ,在数据传输速率相同的情况下,并行通讯传输的数据量要大得多,而串行通讯则可以节省数据线的硬件成本(特别是远距离时)以及 PCB 的布线面积,串行通讯与并行通讯的特性对比如下:
不过由于并行传输对同步要求较高,且随着通讯速率的提高,信号干扰的问题会显著影响通讯性能,现在随着技术的发展,越来越多的应用场合采用高速率的串行差分传输。
根据数据通讯的方向,通讯又分为全双工、半双工及单工通讯,它们主要以信道的方向来区分:
仍以公路来类比,全双工的通讯就是一个双向车道,两个方向上的车流互不相干;半双工则像乡间小道那样,同一时刻只能让一辆小车通过,另一方向的来车只能等待道路空出来时才能经过;而单工则像单行道,另一方向的车辆完全禁止通行。
根据通讯的数据同步方式,又分为同步和异步两种,可以根据通讯过程中是否有使用到时钟信号进行简单的区分。
在同步通讯中,收发设备双方会使用一根信号线表示时钟信号,在时钟信号的驱动下双方进行协调,同步数据。通讯中通常双方会统一规定在时钟信号的上升沿或下降沿对数据线进行采样。 同步通讯:
在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些同步用的信号位,或者把主体数据进行打包,以数据帧的格式传输数据,某些通讯中还需要双方约定数据的传输速率,以便更好地同步。异步通讯:
在同步通讯中,数据信号所传输的内容绝大部分就是有效数据,而异步通讯中会包含有帧的各种标识符,所以同步通讯的效率更高,但是同步通讯双方的时钟允许误差较小,而异步通讯双方的时钟允许误差较大。
衡量通讯性能的一个非常重要的参数就是通讯速率,通常以比特率(Bitrate)来表示,即每秒钟传输的二进制位数,单位为比特每秒(bit/s)。容易与比特率混淆的概念是波特率(Baudrate),它表示每秒钟传输了多少个码元。
而码元是通讯信号调制的概念,通讯中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。
如常见的通讯传输中,用 0V 表示数字 0, 5V 表示数字 1,那么一个码元可以表示两种状态 0 和 1,所以一个码元等于一个二进制比特位,此时波特率的大小与比特率一致;如果在通讯传输中,有 0V、2V、 4V 以及 6V 分别表示二进制数 00、 01、 10、 11,那么每个码元可以表示四种状态,即两个二进制比特位,所以码元数是二进制比特位数的一半,这个时候的波特率为比特率的一半。
因为很多常见的通讯中一个码元都是表示两种状态,人们常常直接以波特率来表示比特率。
史海拾趣
|
学习FPGA经历了这么几个阶段 ①、VHDL和Verilog语言的学习,熟悉VHDL和Verilog语言的各种语法。 ②、FPGA的学习,熟悉QuartusII软件的各种功能,各种逻辑算法设计,接口模块(RS232,LCD,VGA,SPI,I2c ...… 查看全部问答> |
|
经验之一:用“软件陷阱+程序口令”对付PC指针的弹飞 当CPU受到外界干扰,有时PC指针会飞到另一段程序中,或跳到空白段去。其实,如 果PC指针飞到空白段去,倒也好处理。只要在空白段设立软件陷阱(拦截指令),将程序拦截到初始化段或程序错误处理段。 ...… 查看全部问答> |
|
哈哈,看看这个新闻,http://www.expo-shandong.cn/news/gfxw/gfxw902.html 上海计测院利用“镇院之宝”对上海世博钟进行时间校正,一款示波器竟也成了“镇院之宝”,这个示波器到底是哪方利器啊,有了解的出来说说。。 … 查看全部问答> |
|
#include #include #define keyborad P0 #define LCD_data P1 //数据口 #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();}; #define uchar unsigned char #define u ...… 查看全部问答> |
|
Window CE调试中,在 VS2005的debugger中,只能看到当前Thread的Callstack,如何查看其它Thread的Callstack呢? Window CE调试中,在 VS2005的debugger中,只能看到当前Thread的Callstack,如何查看其它Thread的Callstack呢? 从Threads Window看,除了当前 Thread: A_Thread 能看到停在 A_WndProc function中,并能在 Callstack Window 查看 其他 Threads 都 ...… 查看全部问答> |
|
今天开始学习WINCE跑2440,但是教材好垃圾,我所必需的软件和环境都装好了,但我现在只会用Microsoft eMbedded VC++编写MFC程序并(例如HELLO WORLD)放到开发板中的系统运行,但是我想实现通过界面控制硬件(就是通过上位机控制下位机的效果),应 ...… 查看全部问答> |
|
As far as I am concerned, the only true stupid thing you can do is not to be sure about something and don\'t dare to ask! Remember: the one that asks the question (might) look stupid for 5 minutes; the one that does not dare askin ...… 查看全部问答> |
|
调试程序的时候发现,单步运行的时候接收到的数据是正确的,连续运行的时候数据前一部分是不正确的,后一部分是正确的,不知道问题出在哪里,请高手指点!! 同样的发送子程序放在其它程序里,在同一个硬件上运行是没问题的。 程序: send_data( ...… 查看全部问答> |




