如何设置UART超时

4个帖子/ 0新
最后一篇
Caicx.
离线
最后一次露面:6年1周前
加入:2014-07-24 04:25
如何设置UART超时

嗨对话框,
当我想使用UART时,我观看DA14580的数据表,请参见第54页,它说:

“中断使能寄存器:erbfi,这用于启用/禁用所接收的数据可用中断的生成和字符超时中断(如果在FIFO模式和FIFO的启用中)。”

在查看DSPS样本项目内部后,有一个处理程序,

静态void UART_SPS_TIMEOUT_DATA_AVAIL_ISR(void),在“UART_SPS.C”中,似乎用于处理UART数据接收超时。

但我不知道超时会发生多少时间,我有机会定义我的有限超时值。

另一个问题,在UART接收中断处理程序中,完成所有数据传输到本地数据缓冲区时,
要通知应用程序任务,还有新数据。我可以在处理程序中,构建内核消息并将其发送到应用程序任务,
像这样:

my_define_data_struct * cmd = ke_msg_alloc(my_define_msg,desk_task_id,null,my_define_data_struct);
KE_MSG_SEND(CMD)

感谢帮助,
蔡。

py_dialog.
离线
最后一次露面:2年7个月前
员工
加入:2014-08-25 09:59
嗨Caicx,

嗨Caicx,

UART超时将使用UART的预定义计时器,您不需要设置它。如果您在最后收到字节后没有收到有效的字节,则会超时。
如果您愿意,您可以将消息发布到应用程序。

PY
对话

nhtvinh.
离线
最后一次露面:4年9月前
加入:2014-11-18 02:59
嗨py,

嗨py,

作为您的回复,我们如何在代码中更改超时间隔?我们的目的正在减少从UART接收数据的响应时间,并尽快发送TX消息。
在我们的发展过程中,我们还有一件事,我们看到了以下缺陷:

通过修改此代码,我们尝试将RX FIFO中断从半个FIFO到1个字符更改为1个字符:

setword16(UART2_IIR_FCR_REG,0x87);

setword16(UART2_IIR_FCR_REG,0x07);// rcv int当1字符rx时
在UART_SPS_INIT函数上在UART_SPS.C文件上进行函数,并如下所示进行测试:
- 将UART从DA14580 Basic使用UART在PC上,并在DA14580上的UART循环返回RX
- 我们期待在从PC的UART输入一个角色时,我们将收到相同但结果如下:
当尝试插入超过8个字符时,我们只收到了Rx的第一个输入。我们只输入一个并在大约20次或更多时间后输入一个并收到相同的测试。

是已知问题吗?或者与UART IP有限?
我们需要您帮助解决这个问题。

最好的祝福,
Vinh Nguyen。

nhtvinh.
离线
最后一次露面:4年9月前
加入:2014-11-18 02:59
嗨py,

嗨py,

现在我知道为什么你的释放代码有延迟。它来自ext_sleep设置。

最好的祝福,
Vinh Nguyen。