转贴:LM3S单片机UART的FIFO理解 和μDMA方式的UART
[复制链接]
最近在看UART,看到这篇理解的不错,特转发过来,和大家一起学习学习。
Stellaris单片机有两个16字FIFO,分别用于缓存收和发的数据。FIFO触发中断的深度可设置,设置为8个数据(1/8)触发发送中断时,就是当发送FIFO中数据少于8时触发发送中断。设置为14(7/8)个数据触发接收中断时,就是当接收FIFO中的数据多于14时产生接受中断。
在实际应用中,接收中断要配合接收超时中断一起使用,因为当接收中断配置为7/8时,就是要等到接收FIFO中的数据达到15时,才能产生中断,然后进入中断服务函数进行相应的处理。实际上如果上位机发送了数据(累计没有达到15)希望下位机立即进行处理(处理程序一般放在中断服务函数里),这是就要用到接收超时中断,接收超时的定义为:接收FIFO已有数据但未满,而后续数据长时间不来,在对方发送过程中出现3个数据的传输时间间隔,MCU就会产生接收超时中断。
希望更多的高手提出你对UART的理解,UART已经很普遍了,肯定有好多人有更深层次的理解,欢迎讨论!!
在给大家分享个μDMA(Direct Memory Access)的uart(这是lm3s3000或5000才有的),这样就节省cpu资源了。大家可以参考下!! 没有的就不用下载了,楼下有fifo的适合8962.
DMA的UART程序下载
TI的LM3S系列采用DMA方式进行UART通信例程.zip
(414.24 KB, 下载次数: 396, 售价: 1 分芯积分)
[ 本帖最后由 fxw451 于 2010-12-27 20:48 编辑 ]
|