|
FIFO的邊界問題對于基于W5100的以太網(wǎng)收發(fā)存儲器是個令我頭疼的地方。在宏觀上表現(xiàn)為可以接收數(shù)據(jù)也可以發(fā)送數(shù)據(jù),但是發(fā)送的時候會莫名的多很多亂碼,接收的時候也會有很多亂碼,很令人頭疼的問題,這個問題怎么解決呢?開始我自己寫了一個邊界算法,用軟件檢測FIFO的物理邊界,結(jié)果是改善了好多可以收發(fā)數(shù)據(jù)了,但是問題又來了,在發(fā)送數(shù)據(jù)或者接收數(shù)據(jù)時會出亂碼,無論我怎么改進(jìn)還是不行而且是隨即出現(xiàn)的很頭疼。萬般無奈之時DATESHEET讓我眼前一亮。我仔細(xì)看了看數(shù)據(jù)發(fā)送和接收原來手冊上有一套完整的算法,可是看懂他又是個挑戰(zhàn),又是一次一次的看,一遍又一遍,寫完之后發(fā)現(xiàn)竟然在一段時間內(nèi)沒有出錯,我喜出望外,遺憾的是有測試了一會出問題了,發(fā)到一定的數(shù)據(jù)量會出錯,而且是周期性的,我目標(biāo)就是這一段程序,后來發(fā)現(xiàn)一個錯誤,就是讀出來數(shù)據(jù)向內(nèi)存里面寫的時候有一個地址沒有累加,后來做了累加,測試后數(shù)據(jù)果然沒有丟失,至少我檢測的是這樣的,。。。。。。。可見發(fā)送緩存和接收緩存的邊界掃描方面W5100是多么的操蛋!這樣的FIFO我想只有那老外們做出的這么操蛋的東西!好在他們也知道這個,所以提供了算法,要不我絕對是寫不出來的!!
|
|