本节承接上一节,介绍通信中常用的串行通信,其中串行通信依然能分为好几类。
一、分类
1、按传输方向分类
1、单工:只能一方发送数据,另一方接收数据。日常生活中如遥控器,收音机。
2、半双工:双方都可以发送数据和接受数据,但二者不能同时进行。也就是发送数据时,不能接受数据。接受数据的同时,不能发送数据。日常生活中如:对讲机。
3、全双工:二者的发送数据和传输数据可以同步进行。如:电话。
总结,我们的51单片机就是全双工
2、按时钟信号分类
1、同步通信:有CLK引脚。
上图是同步通信的相关特点,以及SPI通信引脚。大家要知道的是同步通信的双方得要有时钟引脚。接下来,我们介绍同步通信的工作原理。(如下图)
同步通信最直观的一个特点就是,发送数据和接收数据同时进行。首先是主机发送数据,由发送到接收的这个过程可以看作是SCLK这个引脚由高电平到低电平再到高电平。
一个信息帧可以;理解为一次通信所传输的数据。一个信息帧可以传输多个bit位的数据,直到遇到结束标志(图中只写了8位,这里特地解释一下)
因此,同步通信有个巨大的优点,就是传输效率特别高。
对于同步通信,我们之后会结合SPI讲解具体使用方法。
2、异步通信:无CLK引脚。
上图是异步通信的工作方式。每次异步通信传输数据时,都是以一个起始位开头,没有传输数据时,陷入空闲,默认为高电平1。通信时,数据位为0,最后结束位给一个1,代表一次数据传输结束。具体传输过程可以参考下图。
总结:异步通信在面临较大的数据信息时它的传输效率肯定会不如同步通信。
次外,使用异步通信是必须令发送设备和接受设备的频率相同。那为了使它俩的频率相同,就有了波特率。
二、波特率
定义:单位时间传输了多少个码元(大家可能对码元这歌概念比较陌生,简而言之,在单片机中码元就是二进制位,也就是0或1)
比如每秒传输9600个码元(9600的波特率),意思就是,传输一个0或1得用1/9600s(注意:该方法只用于单片机中,不同领域对码元的介绍是不一样的)
波特率越大,那传输的速度就越快。但也会让波特率的传错率增加。所以我们在选择波特率时,尽量采用与单片机合适的波特率(一般情况下,单片机的波特率都会在晶振处标明)
三、总结
本节与上一节一样没有代码示例,属于理论篇,但依然很重要,为以后的代码,提供了良好的基础。
重点:了解串口通信的分类,以及全双工、异步通信的工作原理。
难点:理解异步通信和同步通信如何工作。