发新帖我要提问
12
返回列表
打印
[ZLG-MCU]

关于Stellaris系列UART的FIFO新认识,经典!

[复制链接]
楼主: zlgmcu
手机看帖
扫描二维码
随时随地手机跟帖
21
wftyy| | 2008-11-21 20:24 | 只看该作者 回帖奖励 |倒序浏览

就只有查询

那就只有用UARTBusy()不断的查询喽。
为什么不能做成发空后中断,然后直接设置RS485转为接收,该多好呢。

使用特权

评论回复
22
zlgmcu|  楼主 | 2008-11-22 08:44 | 只看该作者

只有在最后一次填充发送FIFO后才进行查询不就可以了吗?

我们不需要在每次填充发送FIFO后都用函数UARTBusy()进行查询,这是浪费。但可以在最后一次填充完发送FIFO后才用该函数查询,这样效率损失很小。

使用特权

评论回复
23
bigflower| | 2008-11-22 23:28 | 只看该作者

不能硬等待查询的

对于变长的数据发送,去判断最后一次填充FIFO是比较麻烦的,因为在发送大数据包时(一次几百个字节),在进发送FIFO之前,一般都是先进自己定义的发送buffer(通常是最长数据包长度的几倍)的。如果使用1200bps,最后一包数据是15个字节,难到要等100ms吗?

我现在的485发送完毕转接收,就是在我的1ms定时中断里,使用UARTBusy()查询一次,所以发送完转接收最坏就是1ms的延时(当然为了缩短时间,可以使用10us的中断,但这样CPU的定时器中断开销就太大了)。所以我的系统对于485通信的响应时间就是1ms,不可能再短了(对于一般9600bps的485通信来说最够了)。

不得不说有FIFO确实是个好东西,而且是越大越好,用了32位机不要老是停留在8位机的单字节发送的思路上。但lm3s没有发空中断,虽然可以通过别的方式解决,但是我觉得确实是不足!!

不足就是不足,没什么必要掩饰,只要找出解决问题的办法就好。如果LM3S能有发空中断,确实就更好了。

说实话,用LM3S就是看重他的以太网继承PHY了,如果不是这点,LM3S和STM32是无法比的。

以上只是个人之见!

使用特权

评论回复
24
John_Lee| | 2008-11-25 20:51 | 只看该作者

lm3s的UART就没有考虑485的应用!!

没有发送完成中断!如果是单任务的软件系统,去不停地检测BUSY信号,还说得过去。但如果是多任务系统呢?让程序发送完后不停地检测BUSY?很傻!

使用特权

评论回复
25
mohanwei| | 2008-11-25 22:29 | 只看该作者

不想用的话关了不就是了么……低速的8位机都可以做得很完

,更何况32位机……

正常9600bps的话,传输一个字节都要1ms左右了

使用特权

评论回复
26
wftyy| | 2008-11-26 20:00 | 只看该作者

希望LM能够改进一下

再加个Fifo发空中断。谢谢。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则