MCS-51单片机串行接口
1. 发送
CPU执行一条写SBUF指令后便启动了串行口发送,数据从TXD输出,时序见图7-8a。 在指令执行期间,CPU送来“写SBUF”信号,将并行数据送入SBUF,并启动发送控制器,经一个机器周期,发送控制器的SEND、DATA相继有效,通过输出控制门从TXD上逐位输出一帧信号。一帧信号发送完毕后,SEND、DATA失效,发送控制器硬件置发送中断标志TI=1,向CPU申请中断。
2. 接收
方式1的接收时序见图7-8b。允许接收位REN被置1接收器就开始工作,跳变检测器以波特率16倍的速率采样RXD引脚上电平,当采样到从1到0的负跳变时,启动接收控制器接收数据,由于发送、接收双方各自使用自己的时钟,两者的频率总有少许差异。为了避免这种影响,控制器将1位送时间等分成16分、位检测器在7、8、9三个状态也就是在位信号中央采样RXD三次。 而且,三次采样中至少两次相同的值被确认为数据,这是为了减小干扰的影响。如果起始位接收到的值不是0,由起始位无效,复位接收电路。如果起始位为0,则开始开始接收本帧其他数据。控制器发出的内部移位脉冲将RXD上的数据逐位移入移位寄存器,当8位数据及停止位全移入后:
(1) 如果RI=0、SM2=0,接收控制器发出“装载SBUF”信号,将8位数据装入接收数据缓冲器SBUF,停止装入RB8,并置RI=1,向CPU申请中断。
(2) 如果RI=0、SM2=1,那么只有停止位为1时才发生上述动作。
(3) 如果RI=0、SM2=1且停止位为0,(通常由传输过程中的干扰所致)所接收的数据应会丢失,不再恢复。
(4) 如果RI=1,则所接收的数据在任何情况下都会丢失。
无论出现哪一种情况,跳变检测器将继续采样RXD引脚的负跳变,以便接收下一帧信息。
接收器采用移位寄存器和SBUF双缓冲结构,以避免在接收后一帧数据之前,CPU尚未及时响应中断将前一帧数据取走,造成两帧数据重叠问题。采用双缓冲器后,前、后两帧数据进入SBUF的时间间隔至少有10个位传送周期。在后一帧数据送入SBUF之前,CPU有足够的时间将前一帧数据取走。
三、 串行接口工作方式2和与方式3
串行口工作在方式2、方式3时,为9位异步通信接口。发送或接收的一帧信息由11位组成,见图7-2b。方式2与方式3仅波特率不同,方式2的波特率为fosc/32(SMOD=1时)或fosc/64(SMOD=0时),而方式3的波特率由定时器/计数器具或定时器/计数器2及SMOD决定。
1. 发送
方式2、方式3发送时,数据从TXD引脚输出,附加的第九位数据由SCON中的TB8提供。CPU执行一条写入SBUF的指令后立即启动发送器发送。发送完一帧信息后由硬件置TI=1。
2. 接收
与方式1相似,REN置1后,跳变检测器不断对RXD引脚采样。当采样到负跳变后就启动接收控制器。位检测器对每位数据采集3个值,用采3取2办法确定每位的数值。当第九位数据移入移位寄存器后,将8位数据装入SBUF,第九位数据装入RB8,并置RI=1,其时序见图2-26b。
与方式1相同,方式2、方式3中也设置有数据辨别功能,即当RI=1或SM2=1且第九位数据为0时所接收的一帧信息被丢失。
四、各方式波特率的设计