TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28069 SCI串口接收FIFO中断

问个问题,在SCI模块中,使能FIFO接收中断,怎么才能一次读取所有的数据。

举个例子来说,我定义FIFO中断的深度为4,需要接收7个数据。因为7个数据只能触发一次中断,怎么才能在不触发第二次中断情况下读取后3个数据?如果由其他设备发送一串数据,怎样判断我已经接收完所有的数据?我查看数据手册,没发现相关的说明,请指点。

rookiecalf:

FIFO是多少级深度的(不是和delfino一样16级吗)?如果设定4级,想要一次读是不行的,FIFO 深度决定在那里呢

问个问题,在SCI模块中,使能FIFO接收中断,怎么才能一次读取所有的数据。

举个例子来说,我定义FIFO中断的深度为4,需要接收7个数据。因为7个数据只能触发一次中断,怎么才能在不触发第二次中断情况下读取后3个数据?如果由其他设备发送一串数据,怎样判断我已经接收完所有的数据?我查看数据手册,没发现相关的说明,请指点。

囧:

回复 rookiecalf:

F28069的SCI FIFO深度是4级,深度本身是不能配置的,只能使能或者禁止,但是可以通过TXFFST4位来判断当前深度,进行控制,或者通过TXFFIL来控制中断触发的深度。

问个问题,在SCI模块中,使能FIFO接收中断,怎么才能一次读取所有的数据。

举个例子来说,我定义FIFO中断的深度为4,需要接收7个数据。因为7个数据只能触发一次中断,怎么才能在不触发第二次中断情况下读取后3个数据?如果由其他设备发送一串数据,怎样判断我已经接收完所有的数据?我查看数据手册,没发现相关的说明,请指点。

Hong Liu37:请问这个问题你解决了吗?有什么好的方法来解决这个问题吗?

问个问题,在SCI模块中,使能FIFO接收中断,怎么才能一次读取所有的数据。

举个例子来说,我定义FIFO中断的深度为4,需要接收7个数据。因为7个数据只能触发一次中断,怎么才能在不触发第二次中断情况下读取后3个数据?如果由其他设备发送一串数据,怎样判断我已经接收完所有的数据?我查看数据手册,没发现相关的说明,请指点。

Jingyuan Zhao:

回复 Hong Liu37:

F28069 SCI FIFO深度只有4级。如果单次连续接收超过4字节数据,无法在单次中断中完成接收,可利用多次中断接收实现。您可参考下图的设计思路:

问个问题,在SCI模块中,使能FIFO接收中断,怎么才能一次读取所有的数据。

举个例子来说,我定义FIFO中断的深度为4,需要接收7个数据。因为7个数据只能触发一次中断,怎么才能在不触发第二次中断情况下读取后3个数据?如果由其他设备发送一串数据,怎样判断我已经接收完所有的数据?我查看数据手册,没发现相关的说明,请指点。

Hong Liu37:

回复 Jingyuan Zhao:

谢谢!可是你说的缓存1BYTe数据,应该怎么做呢?我看了F28069,接收到的数据他最多只能保存4个字节,其余的都丢失了,我即使重新进中断,也还是重新发送,重新接收呀?从上位机下位机发过来的数据,CPU只能保存4个字节,我这样理解对吗?还是有什么寄存器我没注意到?

问个问题,在SCI模块中,使能FIFO接收中断,怎么才能一次读取所有的数据。

举个例子来说,我定义FIFO中断的深度为4,需要接收7个数据。因为7个数据只能触发一次中断,怎么才能在不触发第二次中断情况下读取后3个数据?如果由其他设备发送一串数据,怎样判断我已经接收完所有的数据?我查看数据手册,没发现相关的说明,请指点。

Hong Liu37:

回复 Jingyuan Zhao:

谢谢!可是你说的缓存1BYTe数据,应该怎么做呢?我看了F28069,接收到的数据他最多只能保存4个字节,其余的都丢失了,我即使重新进中断,也还是重新发送,重新接收呀?从上位机下位机发过来的数据,CPU只能保存4个字节,我这样理解对吗?还是有什么寄存器我没注意到?

问个问题,在SCI模块中,使能FIFO接收中断,怎么才能一次读取所有的数据。

举个例子来说,我定义FIFO中断的深度为4,需要接收7个数据。因为7个数据只能触发一次中断,怎么才能在不触发第二次中断情况下读取后3个数据?如果由其他设备发送一串数据,怎样判断我已经接收完所有的数据?我查看数据手册,没发现相关的说明,请指点。

Jingyuan Zhao:

回复 Hong Liu37:

缓存1Byte只要读取SCIRXBUF寄存器中的数据即可。如果是连续的串口数据接收的话,您可以简单理解为接收单字节所需要的时间较短,接收中断完成后不会影响下一字节数据的接收,也就是下一字节数据到来时依旧会产生接收中断,从而实现多字节数据的连续接收。4级FIFO深度意味着如果接收超过4个字节且没有进行处理,只能保存四个字节而其他数据丢失。只要在接收中断中及时处理,就可以多字节连续接收,不会产生数据丢失。

问个问题,在SCI模块中,使能FIFO接收中断,怎么才能一次读取所有的数据。

举个例子来说,我定义FIFO中断的深度为4,需要接收7个数据。因为7个数据只能触发一次中断,怎么才能在不触发第二次中断情况下读取后3个数据?如果由其他设备发送一串数据,怎样判断我已经接收完所有的数据?我查看数据手册,没发现相关的说明,请指点。

Hong Liu37:

回复 Jingyuan Zhao:

哦哦,你说的这个方案我已经试过了,但是关键是接收中断中及时处理,我现在是程序什么都不做,可是还是会数据丢失,既然你也提出了这个方案,那我再试试。谢谢!试玩再来回复你!

问个问题,在SCI模块中,使能FIFO接收中断,怎么才能一次读取所有的数据。

举个例子来说,我定义FIFO中断的深度为4,需要接收7个数据。因为7个数据只能触发一次中断,怎么才能在不触发第二次中断情况下读取后3个数据?如果由其他设备发送一串数据,怎样判断我已经接收完所有的数据?我查看数据手册,没发现相关的说明,请指点。

Hong Liu37:

回复 Jingyuan Zhao:

我刚刚又试了一下,是OK的,虽然在我的UCOS里面还需要再调整,但是这个方案是可以的,谢谢谢谢!

问个问题,在SCI模块中,使能FIFO接收中断,怎么才能一次读取所有的数据。

举个例子来说,我定义FIFO中断的深度为4,需要接收7个数据。因为7个数据只能触发一次中断,怎么才能在不触发第二次中断情况下读取后3个数据?如果由其他设备发送一串数据,怎样判断我已经接收完所有的数据?我查看数据手册,没发现相关的说明,请指点。

user5759960:请问你可以分享一下每次接受不定数据的程序吗,我也遇到了这个问题

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28069 SCI串口接收FIFO中断
分享到: 更多 (0)