异步通信
异步通信的双方模块事先设置为同一数据传输频率。这就是异步通信的本质依据。讲解往下看。
当发送一个7bit或者8bit的数据时,写入TXBUF后,由模块自动添加上起始位、地址位、奇偶校验位、结束位发送出去。
当接受数据时,由模块自动去除这些标志位而仅仅留下“纯”数据保存到RXBUF中。
发送引脚在不发送数据的空闲时间都是高电平,而接受引脚由模块时刻在进行电平检测,当检测到低电平(发送数据的起始位就是滴电平)后,便知道数据开始传输了,模块便做接受数据的准备。
在异步通信中:
●接收方的引脚时刻都有模块进行检测,只要发现低电平便做接受的准备。注意,进行检
测的频率要比收发数据的频率高上3倍以上,因此模块检测到低电平并作接受准备完全来得急。模块检测接受引脚电平是这样进行的:既然知道检测引脚的频率在发送数据频率的3倍以上,当发送一个bit的时间内,接受引脚在此期间检测电平的次数至少有3次,采取三取二表决的方式来确定发送方发送的这个bit究竟是什么电平,保存于接受移位寄存器中。然后是确定下一个bit的电平。CPU读取数据RXBUF的主频更高,比检测接受引脚的电平高多了。
●发送方引脚在为发送数据或者在制造10bit以上的空闲时间的期间都是高电平。
发送引脚的空闲高电平以及接受引脚的电平检测都是由模块自动完成的,不用编程者考虑。
发送数据有两种方式:
1.地址方式
2.线路空闲方式。具体使用哪种方式,事先异步通信的两个模块必须统一为一种。因为确定了模块发送的方式,接受数据的方式也跟随为统一方式。具体介绍如下。
●地址方式发送数据。发送方式为一个带有地址位的一针数据+N个不带有地址位的数据。
发送首字节时,由模块添加上地址位发送出去,接收方检测到有地址位便得知这是首字节。而发送不带地址位的字节时,接受方便知道这是后续的数据。可见只要发送方发送带有地址位的数据时,接收方就会发觉这是首字节,而发送不带有地址位的数据时,便知道这是数据。
●线路空闲方式发送数据域地址方式相仿,不同点在于发送首字节之前要制造10bit以上
的一个空闲高电平(此方式下,没有地址位)。当接受方检测到与上次接受的数据相隔10bit以上时间(
由硬件自动完成)就认为本次接受到的数据时首字节。可见只要让发送方发送的前后数据之间禅城10bit的空闲时间间隔,接收方边认为将要接受的数据就是首字节。
数据帧的收发(数据帧包括三部分:帧头,数据部分(N个字节),帧尾。具体介绍在下边)
UART变长数据帧处理方法如下:
●结束符的处理办法通常有三种
1.利用特定的字符(如回车,CR+LF,实际上对应的ASCII码是0x0D和0x0A)作为结束符,但是要求该字节不会再数据帧中出现;
2.利用数据帧的第二字节表示数据帧长度,一遍接受成勋能够判断数据帧的结束条件;
3.利用帧空间空闲超时来判别数据帧的结束,这要求一帧数据在时间上必须是连续的。
数据帧的帧头的识别方法有两种,在“发送数据有两种方式”中有提及,就是利用地址方式或者线路空闲方式进行帧首字节的判定。
数据帧
所谓数据帧,就是数据链路层的协议数据单元,它包括三部分:帧头,数据部分(N个字节),帧尾。其中,帧头和帧尾包含一些必要得控制信息,比如同步信息、地址信息、差错控制信息等;数据部分则包含网络层传下来的数据,比如ip数据包。
在发送端,数据链路层把网络层传下来得数据封装成帧,然后发送到链路上去;在接收端,数据链路层把收到的帧中的数据取出并交给网络层。不同的数据链路层协议对应着不同的帧,所以,帧有多种,比如PPP帧、MAC帧等,其具体格式也不尽相同。
下面以MAC帧的格式为例进行说明:
同步通信和异步通信的区别MAC帧的帧头包括三个字段。前两个字段分别为6字节长的目的地址字段和源地址字段,目的地址字段包含目的MAC地址信息,源地址字段包含源MAC地址信息。第三个字段为2字节的类型字段,里面包含的信息用来标志上一层使用的是什么协议,以便接收端把收到的MAC帧的数据部分上交给上一层的这个协议。例如,当类型字段的值是0x0800时,就表示上层使用的是IP数据报;若类型字段的值为0x8137,则表示该帧是由Novell IPX 发过来的。
MAC帧的数据部分只有一个字段,其长度在46到1500字节之间,包含的信息是网络层传下来的数据。
MAC帧的帧尾也只有一个字段,为4字节长,包含的信息是帧校验序列FCS(使用CRC 校验)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论