问题:
两片MAX14830之间进行通讯,一个设置为自动流控模式,一个设置为没有流控模式,测试结果如下:
双方发送127字节时:
双方均无流控时,正常发送127字节,对方正常接收127字节;
双方均有流控时,正常发送127字节,对方正常接收127字节;
发送无流控,接收有流控时,正常发送127字节,对方正常接收127字节;
发送有流控,接收无流控时,正常发送127字节,对方正常接收127字节;
双方发送255字节时:
双方均无流控时,正常发送255字节,对方正常接收255字节;
双方均有流控时,正常发送255字节,对方正常接收255字节;
发送无流控,接收有流控时,正常发送255字节,对方正常接收255字节;
发送有流控,接收无流控时,正常发送255字节,对方正常接收255字节;
双方发送511字节时:
双方均无流控时,正常发送511字节,对方只接收255字节;
双方均有流控时,正常发送511字节,对方只接收255字节;
发送无流控,接收有流控时,正常发送511字节,对方只接收255字节;
发送有流控,接收无流控时,正常发送511字节,对方只接收255字节;
请问是什么原因?
-------------------------------------------------------------------------------------
解答:
如果能够正常收到255个,也应该能够正常收到511个,如果只收到255个的话,可能和您设置的接收缓冲器只有255 或者变量定义有关。
如果一方有流控,一方没有流控的话,和没有流控是一样的。但是如果发送有流控,接收没有流控的话,会造成要么通讯正常,要么无法通讯。
采用流控时,通常用查询的方式进行,比如可以定时查询缓冲器,如果没有流控,即使缓冲器满了,发送也还继续发送,这样就会造成数据丢失,如果有流控,则等待到缓冲器能够接收数据后才再次发送,就不会造成数据丢失。如果您读取的很快,缓冲器一直都没有满,那么这样有没有流控效果是一样的。