什么是同步通信与异步通信?它的工作原理是什么?
扫描二维码
随时随地手机看文章
同步通信的原理是发送端在发送串行数据的同时,提供一个时钟信号,并按照一定的约定(例如:在时钟信号的上升沿的时候,将数据发送出去)发送数据。接收端根据发送端提供的时钟信号,以及双方的约定,接收数据。这种通信方式中,因为数据分组较大,所以效率更高,适用于对速度要求高的传输。但同时,它对时序的要求也更高。
异步通信的原理是接收方并不知道数据什么时候会到达,收发双方可以有各自自己的时钟。发送方发送的时间间隔可以不均,接收方是在数据的起始位和停止位的帮助下实现信息同步的。这种传输通常是很小的分组,比如:一个字符为一组,数据组配备起始位和结束位。所以这种传输方式的效率是比较低的,因为额外加入了很多的辅助位作为负载,常用在低速的传输中。
具体来说,异步通信的工作原理可以分为以下几个步骤:
发送请求:异步通信的第一步是发送请求,请求可以是网络请求、文件读写请求、数据库请求等。发送请求后,程序不会阻塞等待响应,而是继续执行其他任务。
接收请求:接收请求的程序会将请求放入队列中,等待处理。在处理请求之前,程序不会阻塞等待请求的到来。
处理请求:处理请求的程序会从队列中取出请求,并进行处理。处理请求的过程可能需要一定的时间,但不会影响其他任务的执行。
发送响应:处理请求完成后,程序会发送响应。响应可以是网络响应、文件读写响应、数据库响应等。发送响应后,程序不会阻塞等待响应的返回。
接收响应:接收响应的程序会将响应放入队列中,等待处理。在处理响应之前,程序不会阻塞等待响应的到来。
处理响应:处理响应的程序会从队列中取出响应,并进行处理。处理响应的过程可能需要一定的时间,但不会影响其他任务的执行。
同步通信与异步通信区别:
(1)同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流;异步通信时不要求接收端时钟和发送端时钟同步,发送端发送完一个字节后,可经过任意长的时间间隔再发送下一个字节。
(2)同步通信效率高;异步通信效率较低。
(3)同步通信较复杂,双方时钟的允许误差较小;异步通信简单,双方时钟可允许一定误差。
(4)同步通信可用于点对多点;异步通信只适用于点对点。
UART即通用异步收发器,是一种串行通信方式。串行通信分为两种类型:同步通信方式和异步通信方式。但一般多用异步通信方式,主要因为接受和发送的时钟是可以独立的这样有利于增加发送与接收的灵活性。异步通信是一个字符接着一个字符传输,一个字符的信息由起始位、数据位、奇偶校验位和停止位组成。 每一个字符的传输靠起始位来同步,字符的前面一位是起始位,用下降沿通知收方开始传输,紧接着起始位之后的是数据位,传输时低位在前高位在后,字符本身由5~8位数据位组成。 数据位后面是奇偶校验位,最后是停止位,停止位是用高电平来标记一个字符的结束,并为下一个字符的传输做准备。停止位后面是不同长度的空闲位。停止位和空闲位都规定为高电平,这样可以保证起始位有一个下降沿。
SPI通讯是一种同步串行通信协议,英文全称是Serial Peripheral Interface。SPI通讯协议由Motorola公司推出,常用于处理器与板载外设(比如Flash存储器、实时时钟芯片、AD/DA芯片等)之间的通信。
SPI通讯使用四根线进行通信:MISO、MOSI、SCLK和CS。MISO是主设备输入/从设备输出引脚,MOSI是主设备输出/从设备输入引脚,SCLK是串行时钟信号,由主设备产生,用于同步数据传输。CS是从设备片选信号,由主设备控制,用于选中特定的从设备进行通信。SPI通讯可以配置为主从模式,一个SPI通讯系统中,必须有且仅有一个主设备,可以有一个或者多个从设备。
选择同步通讯还是异步通讯,取决于具体的应用场景和需求。同步通讯适用于需要精确时序和数据一致性要求较高的情况,比如音频、视频等多媒体数据的传输。同步通讯可以确保数据的实时性和准确性,但是需要较高的硬件和软件成本。异步通讯则适用于对时序要求不那么严格,但需要实现简单、低成本的通信的情况,比如键盘、鼠标等输入设备的通信。异步通讯可以实现简单的数据传输,但是可能会因为时钟不同步等问题而导致数据错误。因此,在选择同步通讯和异步通讯时,需要根据具体的应用场景和需求进行权衡,选择最合适的通信方式。