微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 请问关于UART口接收数据的问题

请问关于UART口接收数据的问题

时间:10-02 整理:3721RD 点击:
DEC2407的例程是:由PC机向UART一次发送16个整数,发生接收中断,然后DSP一次读取16个数据。
请问:是必须发送满16个字节才触发接收中断吗,这个值是不是由FIFO设置决定的?
如果希望由外部设备向UART发送一个字节就触发中断,并进行识别,应该怎么修改程序?
多谢

情况就是一次键盘按键发送3个字节数据,如AA 71 FF
如何随时接收这一帧数据?
不知这个问题是过于简单或者是问得不合理,还请指点
多谢

个人认为:一帧一帧接收是可以的,因为不管按一次键发出几个字节,毕竟发送的时候是一帧一帧发送的。在接收中断程序里应该就可以修改

关键是如何写这个中断程序呢?我到现在还没搞清楚。如何使它接收一

我知道一次读出三个字节,问题是似乎这个FIFO需要填满才能产生中断?填满的意思是一次接收到16个字节或者8个字节(这个值也就是fifo深度,可以设定为16,8等等,但是没有3)。
现在,我按一次键,产生3个字节的一帧数据,这么产生中断呢?
有没有不把字节数限制死,可以直接识别一帧的接收模式?

一次读出三个字节,其实是三次中断才完成的。也就是说,一次按键导致了三次串口读中断

多谢大家指点!目前已经实现了我想要的功能,但是还存在疑惑。
我在一个无限循环里检测UART串口的LSR寄存器,以检测FIFO中是否有数据,如下:

复制内容到剪贴板

代码:
while(1) {
if(LSR & 0x01 == 0x01) {
CMD[0] = RHX & 0xff;
CMD[1] = RHX & 0xff;
CMD[2] = RHX & 0xff;
}
}

就可以读取这三个字节。目前运行良好。但是奇怪的是即使每次多读机个字节,仍然能读出东西来,并且可以执行两次{}里的语句,例如:

复制内容到剪贴板

代码:
while(1) {
if(LSR & 0x01 == 0x01) {
CMD[0] = RHX & 0xff;
CMD[1] = RHX & 0xff;
CMD[2] = RHX & 0xff;
CMD[3] = RHX & 0xff;
CMD[4] = RHX & 0xff;
CMD[5] = RHX & 0xff;
}
}

一次按键之后,会执行两次if{}里的读取,也就是说一共读出来12个字节。其中有效的3个字节仍然在,剩下的就不明白是什么东西了

如果读,应该是总归能读出东西来的,怎么可能读了读不到内容呢?关键是内容所包含的信息是不是我们所期望的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top