理论教育 零点起步:使用PIC单片机中的USART接收器系统

零点起步:使用PIC单片机中的USART接收器系统

时间:2023-10-19 理论教育 版权反馈
【摘要】:USART接收器的系统结构如图9-3所示。图9-3 USART接收器的系统结构图USART接收器的工作过程如下。3)数据经由数据恢复模块输入到内部的移位接收寄存器RSR中。4)当RSR接收完一帧数据后把实际数据字节打入到RCREG寄存器,同时会根据接收协议约定自动设置相关OERR、FERR等错误标志位。可以对RCREG寄存器读两次重新获得缓冲区中的两个字节。如果OERR位被置1,则系统会禁止将RSR中的数据传送到RCREG寄存器,因此如果OERR位被置1,必须将它清零。

零点起步:使用PIC单片机中的USART接收器系统

USART接收器的系统结构如图9-3所示。

978-7-111-33274-9-Chapter09-15.jpg

图9-3 USART接收器的系统结构图

USART接收器的工作过程如下。

1)当SPEN信号为1时,通过SYNC选择异步模式后,将CREN位置位使能异步接收器。2)在RX/DT引脚上接收数据,RX的数据才能在SPBRG指定的波特率下输入到接收器中进入数据恢复模块。

3)数据经由数据恢复模块输入到内部的移位接收寄存器RSR(用户无法访问)中。

4)当RSR接收完一帧数据后把实际数据字节打入到RCREG寄存器,同时会根据接收协议约定自动设置相关OERR、FERR等错误标志位。

5)RCREG收到数据后RCIF标志位自动置1,它在RCREG寄存器被读之后或RCREG寄存器为空时被硬件清零。(www.daowen.com)

6)当RCIF为1时,用户即可从RCREG读取接收到的数据。若此时中断使能位RCIE、GIE、PEIE为1,则会产生中断响应。

7)重复步骤6)即可连续接收多个数据。

以上过程是没有错误发生的情况,然而实际在通信过程中会发生数据溢出错误、帧格式错误等问题。下面分析错误产生的原因及避免方法。

RCREG寄存器是一个双缓冲寄存器结构(FIFO),因此最多可以暂存两个字节。若此时有第3个字节开始移位到RSR寄存器,在检测到第3个字节的停止位后,如果RCREG缓冲区仍然是满的(没有读取过RCREG),则溢出错误标志位(OERR)会被自动置位,RSR寄存器中的数据会丢失。可以对RCREG寄存器读两次重新获得缓冲区中的两个字节。为了避免溢出错误,建议当RCIF为1时要立刻读取RCREG。

OERR位必须由软件清零,还可以通过复位接收逻辑(将CREN位清零后再置位)实现。如果OERR位被置1,则系统会禁止将RSR中的数据传送到RCREG寄存器,因此如果OERR位被置1,必须将它清零。

如果停止位检测为0(正常情况下停止位应该是高电平1),当读取RCREG时,RCSTA的帧出错标志位(FERR)将被置位。FERR位和接收到的第9位数据也会被双缓冲器缓冲。每次读RCREG寄存器将会给RX9D和FERR位装入新值,用户应该在此时判断FERR是否为1,若为1则编程处理此错误,或者通知主机重传,或者产生警告信号通知用户。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈