打印
[ZLG-ARM]

FIFO问题

[复制链接]
1921|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
toluoxin|  楼主 | 2008-11-27 20:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
LPCARM的串口FIFO可分别设置为1,4,8,14字节触发接收中断(RDA),倘若接收的一帧数据少于触发字节将引发超时中断(CTI).
现在用LPCARM设计的一个电路来接收外部发来的串口数据,但是接收一帧数据的字节并非固定.最低有8字节,最高有18字节.我想启用FIFO来接收帧数据,请问应该如何有效利用FIFO的接收,超时中断又应该如何对应?
多谢!

相关帖子

沙发
ZLG_Dengz| | 2008-11-28 00:20 | 只看该作者

re

    根据你的数据发送速度来选择FIFO触发深度。同时应该使能超时中断,它的使用也很简单, 如果FIFO中接收到了数据而又未达到你设定的触发深度,那么在一段时间的等待后,触发接收超时中断。

使用特权

评论回复
板凳
toluoxin|  楼主 | 2008-11-28 07:39 | 只看该作者

3Q

之前我在接收一帧数据时(采用FIFO中断)我确实使用了延时(最长字节的时间长度,当时最长是16字节)来等待FIFO装满,可是当接收小于16字节的帧长时就需要额外的浪费时间,这样就导致了接收信号后响应太慢的问题.
现在我需要的是又要快速响应,一接收信号后立即动作.又要使用FIFO.
3q

使用特权

评论回复
地板
ZLG_Dengz| | 2008-11-28 09:29 | 只看该作者

RE

   把FIFO触发深度设置为1,就可以即使用FIFO,又不延时等待。
   另外,超时中断的延时时长为当前波特率下传输3.5-4.5个字符所需要的时间。 如果你要求延时小的话,还要注意中断优先级的设置。

使用特权

评论回复
5
toluoxin|  楼主 | 2008-11-28 12:57 | 只看该作者

谢谢.

假如把FIFO触发深度设置为1字节,那么就不会有超时中断了.
假如一帧数据是12字节,这样将会出现12次中断的可能?

使用特权

评论回复
6
ZLG_Dengz| | 2008-11-29 01:09 | 只看该作者

RE:

   如果触发深度为1, 那么接收12个字节,就会触发12次中断。
   个人认为,深度设为1,只适用于控制命令接收, 数据传输的话,还是建议将深度设置为大于1的其它值,同时使用超时中断,这样效率更高。

使用特权

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

本版积分规则

25

主题

79

帖子

1

粉丝