首先,總的來說,調(diào)好DM9000AEP的驅(qū)動就3個函數(shù):
1、DM9000A_Init();
2、DM9000A_Read();
3、DM9000A_Write();
一、對于DM9000A的初始化,網(wǎng)上有很多,主要就是配置好DM9000A的寄存器而已。在這里要特別主要幾點:
1、DAVICOM公司的產(chǎn)品命名非常怪異,至少我感覺是這樣。DM9000(100pin)和DM9000A(48pin)是不同的,另外還有什么 DM9000C系列的,這個大家注意一點就行。另外在他們的官網(wǎng)是找不到充足的資料的,連datasheet有些產(chǎn)品都找不到,我在調(diào)試DM9000A的 時候碰到一些大家很少遇到的問題(接收慢),于是我發(fā)了封郵件給他們的技術(shù)支持,結(jié)果他們并沒有第一回復我的問題,而是先只是問了我是哪家公司的,于是我 就沒回他們了(是我太天真了),你們還是靠廣大勞動群眾吧。在這里我要特別感謝那些開源的開發(fā)板商,像正點原子、安富萊等,大家可以在他們的官網(wǎng)找到很多 相關(guān)例程和問題的答案。
2、DM9000A的初始化的復位延時一定要夠,要不就會初始化不成功,之前用安富萊的例程就因為延時不夠網(wǎng)口工作不了。
3、注意官方資料的初始化教程什么的,大家一定要辯證地看啊(我感覺他們的官方資料寫得不怎么樣,大家還是從網(wǎng)上看廣大網(wǎng)友上傳的資料和經(jīng)驗會更好一點, 我一開始還以為官方的資料會比網(wǎng)友上傳的會好點,結(jié)果~~~,于是我懂得了大公司像STM、ATMEL等公司就看官網(wǎng)的資料會好點,他們的資料會非常完 整,其他的小公司他們的官網(wǎng)資料非常少,有些資料不開放,大家能下的資料看時還是注意一點吧)。我之前遇到的接收慢的問題還以為是初始化的問題,于是按照 官方的初始化改了一下,結(jié)果網(wǎng)口的燈都亮不了,于是我就不再看官方的教程了。
二、DM9000A的讀操作大家一定要注意了。你要先了解它的FIFO原理和包頭格式,按照官方的datasheet,讀操作似乎很簡單,網(wǎng)上大部分例程 也是非常簡單的,我看了網(wǎng)上的很多例程都是那樣用的,不知他們的芯片跟我用的是不是有點不同,我直接用他們的例程總會出現(xiàn)接收非常慢的狀況,網(wǎng)上也很少人 有討論過這個問題,后來頗費周折看了安富萊的例程,他們用軟件寫了接收FIFO的地址指針變動,不再依照像官方說的芯片會自動移動FIFO的地址指針(盡 管安富萊的例程在初始化時也是配置成了FIFO自動循環(huán)接收的模式,不知這是不是一個硬件BUG,還是我用的芯片有問題)。一開始我還以為是硬件的問題, 再后來以為是初始化的問題,最后還看了接收FIFO的地址指針等寄存器,才發(fā)覺它老是辨別不了接收到數(shù)據(jù)包,還經(jīng)常溢出,后來用了安富萊的例程后,效果還 不錯,問題解決。
三、DM9000A的寫操作全世界都差不多,我也沒遇到什么問題,就沒什么好說的了。
其次,說說調(diào)試方法的問題,如果驅(qū)動端的串口可以用的話,用串口查看 DM9000A寄存器是一個非常有用的找到問題所在的方法(在寫驅(qū)動時)。PC端大家可以裝個wireshark抓包工具,我們可以先從最簡單的ARP協(xié) 議開始調(diào)試發(fā)送與接收是否可以成功,至于ARP協(xié)議的格式大家可以百度,其實很簡單,一個數(shù)組就解決了。在確認DM9000A可以正常收發(fā)時,大家可以移 植uIP實現(xiàn)其他功能,uIP的移植教程網(wǎng)上也有很多,大家可以參考正點原子的,如果前面的工作做好了,這里一般不會有什么大問題。如果可以的話,大家直 接用uC/OS-II+LwIP會更好點。
最后,說下硬件的問題,在畫PCB時可以參考官方的注意事項,官方說的也挺詳細的 了。單片機和DM9000A最好離近點,DM9000A與網(wǎng)口之間的收發(fā)線要走差分線,還有DM9000A與網(wǎng)口的鋪地問題,datasheet說得非常 詳細了。由于硬件不是我畫的,所以之前出現(xiàn)接收慢的問題時我一度懷疑是硬件問題,后來看了PCB后更加懷疑是硬件問題了,布局布線太奇葩了(一個新手畫 的),可是我聽老大說這硬件是可以的,于是~~~直到找到安富萊的例程才解決問題。由于我用的環(huán)境比較一般,就算你畫得再差,一般布通了就可以了,根本不 用管什么差分線,但是,做硬件的還是應(yīng)該多注意一下自己的板子,免得出現(xiàn)其他問題,或者在其他環(huán)境才出現(xiàn)問題那就痛苦了,到時排查都搞死你,更別說給做軟 件的會帶來什么致命困擾了。