2010年5月31日星期一

UART RX的一个细节

当UART内部支持FIFO,那么一般情况,RX interrupt的触发条件就是RX FIFO接收到的数据,超过了level trigger。但是如果只有这一种触发条件是不够的,因为如果对方发送了很少的数据,比如一个字节,但是没有超过level trigger,那么逻辑上讲就不会触发RX interrupt,也就是上层软件意识不到有数据来临,但事实是对方已经发了东西,所以是就一个条件触发RX interrupt不够的。
基于以上的原因,在UART的hardware设计时,往往会加入一些条件:如果RX FIFO中不是空,但是在很短的时间内,还没有超过level trigger,此时就认为是一种timeout,同时也会触发RX interrupt,这样就解决了上面逻辑上和事实上不符合的问题

没有评论: