請教發(fā)包時間的問題

請教一個發(fā)包時間的問題,使用的CH395,在文檔中沒有找到立即發(fā)送的指令;

那么我把一個小包(20byte)的數(shù)據(jù)放到tx buff之后,沒有新數(shù)據(jù)進來的情況下,模塊會在等待一定時間后通過tcp發(fā)出去,這個等待時間是多少?我測試下來有40ms,可以調(diào)整嗎?

您好,在使用CH395發(fā)送數(shù)據(jù)是,主控會調(diào)用類ch395_send_data()函數(shù),寫入socket索引、數(shù)據(jù)指針、數(shù)據(jù)長度三個參數(shù)。直至寫完最后一個字節(jié)數(shù)據(jù)后,CH395才會啟動傳輸,從此數(shù)計算到對端接收(局域網(wǎng)與PC直連),時間差不會達到毫秒級。您可以檢查一下測量時間節(jié)點是否存在誤差。


謝謝樓上2#,這個論壇沒有回復(fù)功能嗎?只在樓主層看到了“回復(fù)”按鈕,2#沒看到。。。


我上午又做了另一種測試,以10ms周期,定時通過CH395發(fā)報文(50Byte),接收端40ms才收到一次,一次收到四條報文,如下圖所示,第一次收到一條報文,從第二次開始都是間隔40ms收到4條報文了,第二次、第三次的報文中,我用不同顏色表示出了四條報文:

1634190300168743.png


但將間隔時間改為50ms,除了第一次是一次收到兩條報文外,后續(xù)都是一次收一條報文了,如下圖:

1634190300289473.png


那么以10ms間隔時,我發(fā)的前三條報文肯定是有延時的,我沒找到CH395的立即發(fā)送指令,如果確實沒有的話,那他的機制應(yīng)該是接收到SPI數(shù)據(jù)后,如果數(shù)據(jù)量不大,就會等待一段時間,以便把多個短報文拼成長報文,以提高通訊效率,如果沒有后續(xù)報文,那么timeout時就會把buff中的短報文發(fā)送出去。

另外,我用其他的芯片測試過,可以排除調(diào)試軟件的問題。


產(chǎn)生timeout發(fā)送是不正常的發(fā)送現(xiàn)象。CH395在使用發(fā)送的時候,需要確保在下一次調(diào)用發(fā)送函數(shù)之前產(chǎn)生“發(fā)送緩沖區(qū)空中斷”和“發(fā)送完成中斷”,具體說明可以參考?http://www.findthetime.net/bbs/thread-65756-1.html 這條置頂帖。您使用10ms間隔發(fā)送的時候可能還沒產(chǎn)生發(fā)送完成中斷(10ms發(fā)50字節(jié),速度過快)。

排出時間問題,您可以在接收中斷里回傳,可以看到上位機發(fā)送端的發(fā)送時間和上位機接收到的時間并會達到您說的延時值。



謝謝回復(fù),上周我將TCP_MSS設(shè)置為60,并每次發(fā)送60字節(jié),測試基本無延時。

再按您說的方式試試。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频