打印
[ZLG-MCU]

请ZLG的技术支持给解释一下关于UART的问题,谢谢!

[复制链接]
1778|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bigflower|  楼主 | 2008-8-6 07:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请ZLG的技术支持给解释一下关于UART的问题,谢谢·

我购买了8962的开发板,而且也仔细看了您的网站上的UART的最新例程,但关于UART的使用有以下问题,请给与解释

1.书上的第214页和手册的第301页都有如下描述

寄存器 9: UART中断的FIFO深度选择 (UARTIFLS),偏移量 0x034
UARTIFLS寄存器是中断的FIFO深度(level)选择寄存器。你可以使用该寄存器来定义UARTRIS
寄存器中TXRIS和RXRIS位触发(中断)时的FIFO深度。
中断触发的依据是,当FIFO的载入的数据量(深度)超过某一水平时触发,而不是当载入的数据量(深
度)达到某一水平的时候触发。也就是说,FIFO所装的数据量(深度)超过规定触发的水平时,就产生
中断。例如,如果接收触发的水平被设为1/2,那么中断将在模块接收第9个字符时触发。
复位完成后,TXIFLSEL和RXIFLSEL位都会被配置,因此FIFO将以1/2作为触发深度触发中断。

请问如果我的数据长度正好是8,而不是9,会产生接收中断还是超时中断??

2. 当初选LM3M主要还是看好它有超时中断,我现在想用它来检测MODBUS的数据包结束标志(每包数据发送的间隔要大于3.5个字符时间)。

请问如果我的MODBUS数据长度是变长的,那么如果收到的数据长度不是8962FIFO设定值的整数倍会产生超时中断(这是正常的状态)。如果收到的数据长度等于8962FIFO设定值的整数倍,那么就不会产生超时中断,请问有什么解决办法使用8962的超时中断来检测MODBUS结束的3.5字符的时间。

3. 请问8962的FIFO的触发深度最大是不是只能设为7/8=14字节,不能再多了吗(LM3S不是有16字节的FIFO吗)??

相关帖子

沙发
bigflower|  楼主 | 2008-8-6 10:30 | 只看该作者

如果没空回复,请留下技术支持的电话,谢谢!!

使用特权

评论回复
板凳
hyhmh| | 2008-8-6 15:45 | 只看该作者

MODBUS 3.5个字符间隔不宜依靠FIFO的超时触发来产生

使用特权

评论回复
地板
bigflower|  楼主 | 2008-8-6 21:13 | 只看该作者

谢谢:hyhmh!!看来MODBUS的超时检测的TIMER是省不了的

使用特权

评论回复
5
bigflower|  楼主 | 2008-8-6 21:21 | 只看该作者

ZLG的技术支持连个电话都不肯留吗??

使用特权

评论回复
6
zlgmcu| | 2008-8-7 09:03 | 只看该作者

建议您先与当地的销售工程师联系,他们可以帮您解决.


您也可以打020-22644252与广州的技术部门联系

使用特权

评论回复
7
bigflower|  楼主 | 2008-8-7 13:02 | 只看该作者

谢谢!!

使用特权

评论回复
8
寒雨飞扬| | 2008-8-11 23:47 | 只看该作者

不太确定的回答

假设说你的触发深度设置为8,在接收到8个字符以后就可以触发接收中断,如果不够8个,比如说收到3个字符,在等待2个字符(这个不是太确定,数据手册上有详细的说明,我记不得了)的传输时间仍RXD上仍然没有新的数据就可以触发超时中断。也就是说Modbus上3.5个字符的结束标志是可以触发超时中断的,但是不建议这样监测结束标志。原因如下:
假如说Modbus上的数据刚好是8个(触发深度),在接收到8个字符时触发接收中断CPU去读取FIFO数据,这时候FIFO为空,之后的3.5个字符的空闲时间就无法触发超时中断了。所以这种用法要小心,除非你可以保证上面介绍的情况不会发生。

使用特权

评论回复
9
BIGFLOWER| | 2008-8-19 18:10 | 只看该作者

谢谢:寒雨飞扬



您说的问题我考虑到了,我现在就是用一个定时器判断MODBUS超时的,没办法我也想省一个定时器,程序简单点,可是不行.

个人感觉,如果UART传输的数据量很大,使用FIFO确实是能增加CPU的效率
如果UART的数据量不大,FIFO用出不大

对于LM3S的UART接收一定要RX和RT同时判断,因为触发深度最小只有1/8,2个字节.而且触发RX中断的条件是接收数据超过1/8,所以LM3S是没办法每接收一个字节就产生一次中断的,这与51和AVR等8位机是不一样的

我实际测试了一下,要多2个字节即要4个字节才能触发1/8深度的中断.而且似乎对于设定的触发深度(7/8到1/8),必须要超过两个字节才能触发中断(手册上说是多1个)对于也可能是ULINK调试器的问题,我不确定.

以上只是个人只见

使用特权

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

本版积分规则

26

主题

124

帖子

2

粉丝