[ZLG-MCU] 关于Stellaris系列UART的FIFO新认识,经典!

[复制链接]
11715|25
wftyy 发表于 2008-11-21 20:24 | 显示全部楼层

就只有查询

那就只有用UARTBusy()不断的查询喽。<br />为什么不能做成发空后中断,然后直接设置RS485转为接收,该多好呢。
 楼主| zlgmcu 发表于 2008-11-22 08:44 | 显示全部楼层

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

我们不需要在每次填充发送FIFO后都用函数UARTBusy()进行查询,这是浪费。但可以在最后一次填充完发送FIFO后才用该函数查询,这样效率损失很小。
bigflower 发表于 2008-11-22 23:28 | 显示全部楼层

不能硬等待查询的

对于变长的数据发送,去判断最后一次填充FIFO是比较麻烦的,因为在发送大数据包时(一次几百个字节),在进发送FIFO之前,一般都是先进自己定义的发送buffer(通常是最长数据包长度的几倍)的。如果使用1200bps,最后一包数据是15个字节,难到要等100ms吗?<br /><br />我现在的485发送完毕转接收,就是在我的1ms定时中断里,使用UARTBusy()查询一次,所以发送完转接收最坏就是1ms的延时(当然为了缩短时间,可以使用10us的中断,但这样CPU的定时器中断开销就太大了)。所以我的系统对于485通信的响应时间就是1ms,不可能再短了(对于一般9600bps的485通信来说最够了)。<br /><br />不得不说有FIFO确实是个好东西,而且是越大越好,用了32位机不要老是停留在8位机的单字节发送的思路上。但lm3s没有发空中断,虽然可以通过别的方式解决,但是我觉得确实是不足!!<br /><br />不足就是不足,没什么必要掩饰,只要找出解决问题的办法就好。如果LM3S能有发空中断,确实就更好了。<br /><br />说实话,用LM3S就是看重他的以太网继承PHY了,如果不是这点,LM3S和STM32是无法比的。<br /><br />以上只是个人之见!
John_Lee 发表于 2008-11-25 20:51 | 显示全部楼层

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

没有发送完成中断!如果是单任务的软件系统,去不停地检测BUSY信号,还说得过去。但如果是多任务系统呢?让程序发送完后不停地检测BUSY?很傻!<br />
mohanwei 发表于 2008-11-25 22:29 | 显示全部楼层

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

,更何况32位机……<br /><br />正常9600bps的话,传输一个字节都要1ms左右了
wftyy 发表于 2008-11-26 20:00 | 显示全部楼层

希望LM能够改进一下

再加个Fifo发空中断。谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部