基于CP2200的嵌入式以太網接口設計
4. 以太網接口軟件設計
4.1 CP2200驅動程序
以太網中,網絡接口就是一個以太網控制芯片及其驅動程序。以太網接口驅動程序包含管理控制器芯片與網絡協議棧中上一層之間通信的程序代碼,為了在以太網上傳送IP數據報,IP層將數據報傳遞給以太網控制器的驅動程序,驅動程序指示以太網控制器傳送以太網幀。在接收來自網絡的IP數據報時,以太網控制器檢查目標地址是否與接口硬件地址或控制器可接收的組播或廣播地址一致,如果一致,則控制器檢查錯誤,驅動程序把數據報或出錯指示傳遞給IP層。
這里以太網接口驅動程序主要是CP2200的初始化配置和收發配置。
(1) CP2200復位初始化
CP2200復位初始化過程可以確保設備正常工作。復位開始時,首先要等待復位引腳升高,然后等待振蕩器初始化完成,振蕩器初始化完成后會發送一個中斷信號。之后是CP2200自身初始化,可以通過檢測INT0中斷狀態寄存器確定自身初始化的完成。由于系統默認的是允許所有的中斷,通過設置INT0EN和INT1EN關閉哪些不被主處理器處理的中斷事件。初始化過程還包括物理層(PHY)的初始化,以及媒體訪問層(MAC)的初始化。最后配置接收過濾器,系統復位后,過濾器允許廣播包和組播包,通過設置RXFILT寄存器可以決定是接收還是忽略諸如廣播、組播、短幀(幀長度小于64字節)或者CRC錯誤的幀等。初始化完成后,接收緩沖區為空,CP2200開始準備發送或接收數據.
圖3 CP2200發送流程圖
(2) 數據的接收和發送
單片機C8051F020通過使用CP2200的直接和間接寄存器來控制CP2200,直接寄存器可
以訪問RAM緩沖區,FLASH存儲區,間接的MAC配置寄存器及其它的狀態和控制寄存器。CP2200具有2K(0x0000–0x07FF)字節的發送緩沖區和4K(0x0000–0x0FFF)字節的接收緩沖區,它們共享相同的地址空間,都使用RAMADDRH:RAMADDRL指針訪問,每個緩沖區都有一個專門的數據寄存器。其中CP2200發送數據的流程圖如圖3所示:
使用隨機儲存器訪問方法將該包裝入發送緩沖區:
a.將RAMADDRH:RAMADDRL設為0x0000。
b.將第一個字節寫入 RAMTXDATA。
c.將RAMADDRH:RAMADDRL加1。
d.將另一個數據字節寫入 RAMTXDATA.
e.重復步驟c和d直到整個包全部裝入發送緩存區。
f.長度小于64字節的幀需要填充為至少64字節。
g.將TXENDH:TXENDL設置為最后一個字節的地址。該地址值必須大于等于0x0040。
評論