SCI系统具有3个独立的中断向量,可产生多种中断,用户需要判断引起中断的原因。第一个中断向量(SCI发送中断)和发送器的TDRE和TC事件有关。第二个中断向量(SCI接收中断)和接收器的RDRF和IDLE事件有关。第三个中断向量(SCI错误中断)用于OR、NF、FE和PE等出错情况。每一种中断源都能被局部中断允许控制位单独屏蔽,当局部中断允许位为0禁止响应中断产生中断请求时,还可以软件轮询标志位。
SCI发送器具有两个状态标志位TDRE和TC,可用于产生硬件中断请求。发送数据寄存器空标志位TDRE用于指示发送数据缓冲器具有空间,可以写入一个待发送字符到SCIxD,如果发送中断允许位TIE被设为1,那么一旦TDRE=1就会产生一个硬件中断请求。发送完成标志位TC用于指示发送器已经完成所有数据、前导码、暂停符的发送,TxD引脚已经处于空闲高电平,此标志位常被用在具有Modem的系统中,用来决定何时安全可靠地关闭Modem。如果发送完成中断允许TCIE位为1,那么一旦TC=1就会产生一个硬件中断请求。如果TIE或者TCIE局部中断屏蔽为都为0,那么可以使用软件轮询来监控TDRE和TC的状态。
SCI接收器中状态位RDRF可用来产生于接收状态有关的中断请求,当用户程序检测到接收数据寄存器满(RDRF=1)时,可以通过读SCIxD从接收数据寄存器中获得数据。在RDRF=1时读SCIxSl然后读SCIxD可以清零RDRF标志;如果SCI被配置为9位模式,那么要清零RDRF还需要再读SCIxC3;如果使用硬件中断,那么读SCIxSl操作必须要在中断服务子程序中完成。当采用轮询时,此操作顺序通过用户程序实现。(www.xing528.com)
IDLE状态位具有控制逻辑,使用时要避免当RxD保持空闲的时间里IDLE重复不断地变为1。当IDLE=1时,读SClxSl然后读SCIxD可以清零IDLE。当IDLE被清零之后,只要接收器已经收完一个新字符且置RDRF位为l时,就会再次被置1。如果引起RDRF置1的接收字符有相应的错误发生,那么相应的错误标志位如噪声标志NF、成帧错误标志FE、奇偶错误标志PF等,会在RDRF置1的同时也相应置l。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。