由CPU送来的待发送的并行数据,首先写入发送缓冲器TBR[7..0]。发送缓冲区中有数据待发送时,数据自动装入移位寄存器TSR[7..0]并自动完成串行数据的发送。首先传送一位起始位0,然后根据帧结构中定义的数据长度,分别串行移出TSR[7..0]中的数据,数据的低位在前,高位在后。当没有数据发送的时候,SDO管脚保持高电平。
2.2.2 发送模块功能仿真
发送器功能仿真结果如图3所示。二进制数11110000从引脚DIN[7..0]并行输入,当WRN为0时,启动发送程序,计数器开始计数,使发送器将并行数据锁存到发送缓冲器TBR[7..0],并通过发送移位寄存器TSR[7..0]逐位移位发送串行数据至串行数据输出端SDO。在数据发送过程中用输出信号TBRE,TSRE作为标志信号。当一帧数据由发送缓冲器TBR[7..0]送到发送移位寄存器TSR[7..0]时,TBRE信号为1。由发送数据缓冲器传给发送移位寄存器主要由信号TSRE控制。当TSRE为1时,表示发送移位寄存器TSR[7..0]串行发送完毕;为0时表示还没
有发送完一帧数据。由仿真结果验证了发送模块的正确性。
2.3 接收模块
2.3.1 接收模块及其功能
接收模块的作用是把收到的串行数据转换成并行数据进行输出,并判断收到的数据是否有错。接收模块的引脚如图4所示,各引脚功能见表2。
接收器进入准备接收数据状态,不断监视串行输入线RXD端,如果出现低电平,立刻启动起始位检测电路进行确认,一旦确认为接收到正确的起始位,则以波特率作为采样时钟,对每个数据位的中间位置采样一次,并把采样到的信息以移位方式送人接收移位寄存器RSR。接收到一帧数据位后,把串行数据转化成并行数据,并进行奇偶校验、停止位、中止态的检查。接收完毕后,DAT_READ置1。