问个问题,在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:请问你可以分享一下每次接受不定数据的程序吗,我也遇到了这个问题
TI中文支持网


