单片机间多机串行通信方式
扫描二维码
随时随地手机看文章
单片机双机通信完成的只是点对点之间的数据传输,但是,在实际应用中,经常会出现由多个单片机构成的多机通信系统。
单片机多机通信是指由两台以上单片机组成的网络结构,可以通过串行通信方式共同实现对某一过程的最终控制。多机通信的网络拓扑形式较多,可分为星型、环型和主从式多机型等多种,其中以主从式多机型应用较多。主从式多机通信系统中,一般有一台主机和多台从机。主机发送的信息可以传送到各个从机或指定从机,从机发送的信息只能被主机所接收,各从机之间不能直接通信,其结构形式如下图所示。
由图可知,主机的RXD、TXD与所有从机的TXD、RXD端相连接,主机发送的信号可被各从机接收,而各从机发送的信息则只能由主机接收。
在多机通信系统中,首先要解决的是如何识别从机的问题,其次才是如何发送数据等。
识别从机一般都是通过地址来实现,即给从机分别设定地址信息。MCS-51系列单片机串行通信中的SM2位(多机通信控制位)专门用来识别不同的从机。
MCS-51系列单片机串行口方式2、3很适合主从式的通信结构。当串口以方式2或方式3工作时,发送和接收的每一帧数据都是11位(如下图所示):1位起始位(0),8位数据位(低位在前),一位可设置的第9位数据和一位停止位。其中,第9位数据位可用于识别发送的前8位数据是地址帧还是数据帧,为1则为地址帧,为0则为数据帧,此位可通过对SCON寄存器的TB8位赋值来置位。当TB8为1时,单片机发出的一帧数据中的第9位为1,否则为0。
作为接收方的串行口同样工作在方式2或方式3状态,它的SM2和RB8(接收到的第9位)的组合有如下的特性。
·若从机的控制位SM2设为1,则当接收数据的第9位是l时,即地址帧时,数据装入SBUF,并置RI为l,向CPU发出中断申请;当接收数据的第9位是0时,即数据帧时,不会产生中断,信息被丢弃。
·若SM2设为0,则无论是地址帧还是数据帧都将产生RI=1中断标志,8位数据均装入SBUF。
利用这个特征,单片机在进行主从式多机通信时,系统初始化后,所有从机的SM2均置为1,并处于允许串行口中断接收状态;主机要与某一从机通信时,首先向所有从机发出地址帧,由于各从机的SM2=1,并处于允许串行口中断接收状态,各从机均接收该地址帧,从机接收到该地址帧后,申请中断,转向中断服务程序,各从机在中断服务程序里判断本机地址是否与主机所发送的地址相同,若相同,该从机将SM2置为0,并向主机发送回应答信号。此时,只有主机和被呼叫的从机之间能交换数据。因为若从机的地址与主机发送的地址不同,则该从机继续维持SM2为1,在主机后来发来的数据和命令时,其第9位数据位(RB8)为0,由于SM2为l,从机不会发生中断。