[求助] 关于LM3S800UART使用了FIFO后的接收超时中断

暖暖美少   2011-12-14 15:38 楼主

各位坛友,我使用UART时,设置了FIFO接收中断深度,同时使能接收超时中断。

请问,这个接收超时中断是什么情况下触发的?手册上有这样一句话,“当接收FIFO不为空时接收超时中断有效”。

我做了一块modbus主机板,没接从机的时候,也就没有接收,这个时候没有接收超时中断;这跟那句话是对得上的,也是合理的。

后来,调试好了,准备提交测试了,程序烧到另一块板上,诡异的事情出现了,没接从机,那个芯片却一直进入接收超时中断。。

 

因为接收中断RX和接收超时中断RT都是进入到接收处理函数里的,在接收处理函数里,我会清零通信超时计数器的;如果没有接从机也就是没有通信的时候,处理器一直有触发接收超时中断,在接收处理函数里,通信超时计数器一直清零,那通信超时就无法判断到了。

 

请问坛友们,有木有遇到过这么纠结的情况,如何解决呢?

 

 

回复评论 (7)

应该是,当FIFO里面有数据没有读出的时候,才能触发超时中断,如果FIFO空不可能发生超时中断。产生超时中断后,除了清楚中断标志位,还应该读出FIFO里面的全部数据,否则还会触发超时中断的。。

点赞  2011-12-14 16:26

回复 沙发 brucege888 的帖子

相当的痛苦,为什么它没有接收也触发接收超时中断呢,这样叫我好为难!!如何是好?
点赞  2011-12-14 19:04

回复 板凳 暖暖美少 的帖子

能确定就是超时引起的中断吗?
点赞  2011-12-15 08:50
调试判断一下中断类型,建议使用UART时先清空FIFO。
点赞  2011-12-16 08:59

回复 5楼 永远的不知 的帖子

朋友,你是对的。因为硬件上485芯片RE脚和DE脚接在一起了,我以为就不会自发自收了,所以发完切换为收时,我没有去清接收FIFO,而用示波器监测时发现虽然没有接从机就应该没有接收的,但接收引脚却测到有一个负脉冲,原来是DE和RE接一起、切换为收时拉低DE引出来的。但其实还是解释不通的,因为这个时候只是打开接收三态门,总线上应该是没有信号的,我发的并不会锁存在总线上。。但不管如何,我就想到要去清除接收FIFO了,然后不接通信也不会触发进入到接收超时中断了。。
点赞  2011-12-26 22:26
我遇到的问题和你很像,我在硬件上485芯片RE脚和DE脚接上滤波电容104,没用
请问如何做到清除接收FIFO
点赞  2014-11-21 16:46
需要等待数据发送完成,在打开接收!数据发送完成是数据在硬件端口发送完成。MODBUS的我做了很多的应用,这个要注意!
点赞  2014-11-21 17:04
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复