zynq uart timeout应用理解

2015-10-29 22:43 阅读 1,083 次 评论 0 条

Zynq uart中timeout的作用很好理解,就是在设置了uart RX_FIFO_LVL后,为了保证不是RX_FIFO_LVL整数倍的字符也能短时间快速响应并处理。

根据UG585上面的说明,The counter is reloaded and starts counting down whenever a new start bit is received on the RxD signal, or whenever software writes a 1 to uart.Control_reg0 [RSTTO] (regardless of the previous [RSTTO] value)。

这个理解为timeout启动并计时的条件为RxD上有起始bit,或者是软件写uart.Control_reg0 [RSTTO]。那么如果不写uart.Control_reg0 [RSTTO],就只有等待RxD上有数据才会产生timeout中断。并且没有接收到数据都会产生至少一个timeout中断,或者有一个RTRIG中断。

If no start bit or reset timeout occurs for 1,023 bit periods, a timeout occurs. The Receiver timeout error bit [TIMEOUT] will be set in the interrupt status register。

意思是在没有start bit或者在1023bit周期内没有复位timeout,也会产生timeout,并且在中断状态寄存器中产生[TIMEOUT]中断状态标志。

如果是这样理解的话,在没有数据接收时,会产生周期性的中断。但我在程序中测试,并没有产生周期性的中断,还是在有数据起始bit后开始计时,然后再超时才会产生中断。

或许与控制寄存器(CR)中的timeout复位使能有关,我在测试程序中未设置,并且测试程序达到我的要求,没有继续测试下去。

PS:处理完timeout中断后,需要清除中断,不然软件可能被卡死。在设置完timeout收不能再将接收复位。如果复位将使timeout为0,即timeout无效。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:zynq uart timeout应用理解 | 起点博客
分类:应用笔记 标签:, , ,

发表评论


表情