芯片提供寄存器供MCU訪問,具體的寄存器分類如下:控制寄存器(命令、狀態(tài)及中斷);系統(tǒng)寄存器(網(wǎng)關(guān)地址、子網(wǎng)掩碼、IP地址等);用于數(shù)據(jù)收、發(fā)的指針寄存器;通道操作的通道寄存器。其主要寄存器功能和地址如表1所示。

芯片同時(shí)支持4個(gè)通道連接,控制寄存器C0_CR(通道0的控制寄存器),用于通道0Socket(套接字)的初始化、連接、關(guān)閉和數(shù)據(jù)收發(fā),其各位定義如下:
Sys_init(僅通道0有定義):系統(tǒng)初始化位。用于設(shè)置系統(tǒng)的地址、網(wǎng)關(guān)、子網(wǎng)掩碼、物理地址。
Sock_init:通道初始化位。當(dāng)選擇了相應(yīng)的協(xié)議后,用此命令進(jìn)行初始化。
Connect:連接命令。以客戶機(jī)模式連接到服務(wù)器。
Listen:監(jiān)聽模式。以服務(wù)器模式監(jiān)聽客戶機(jī)連接。
Close:關(guān)閉通道及其連接。
Send:?jiǎn)?dòng)數(shù)據(jù)發(fā)送位。
Recv:?jiǎn)?dòng)數(shù)據(jù)接收位。
S/W Reset(僅通道0有定義):用于初始化芯片內(nèi)部的復(fù)位設(shè)定值。
其他寄存器的具體內(nèi)容可參閱文獻(xiàn)[4]。
1.3硬件接口
W3100A提供了并口(MCU接口)和串口(I2C接口)2種方式實(shí)現(xiàn)與MCU的通信。本方案為基于I2C的串口連接方式,如圖2所示。其中C8051F021為監(jiān)護(hù)儀器中的MCU,以太網(wǎng)物理層芯片選用RTL8201。
I2C是串行通信總線方式,由數(shù)據(jù)線SDA和時(shí)鐘線SCL配合完成通信。C8051F021提供SMBus(與I2C串行總線兼容)接口與W3100A通信。首先C8051F021通過設(shè)置優(yōu)先交叉開關(guān)譯碼器XBR0、XBR1和XBR2的值完成數(shù)字資源的動(dòng)態(tài)分配,優(yōu)先交叉開關(guān)譯碼器可以按優(yōu)先權(quán)順序將片內(nèi)的計(jì)數(shù)器/定時(shí)器、硬件中斷、UART,SMBus等映射到P0~P3的端口I/O引腳[5],其次初始化交叉開關(guān)配置寄存器XBR2,初始值為0X42,分別使能交叉開關(guān)和SMBus;將P0.2和P0.3分別分配給SDA,SCL,P1.5分配給外部中斷/INT1。這樣C8051F021就可以通過SMBus接口以主發(fā)送器方式向W3100A發(fā)送數(shù)據(jù)了,其對(duì)SMBus接口進(jìn)行訪問和控制通過5個(gè)特殊功能寄存器來實(shí)現(xiàn):控制寄存器SMB0CN,時(shí)鐘速率寄存器SMB0CR,地址寄存器SMB0ADR,發(fā)送和接收數(shù)據(jù)的數(shù)據(jù)寄存器SMB0DAT和狀態(tài)寄存器SMB0STA。
C8051F021可以象訪問外部RAM來寫或讀W3100A寄存器,而W3100A發(fā)送和接收的數(shù)據(jù)均保存在內(nèi)部雙口RAM中。C8051F021向W3100A寫數(shù)據(jù)的過程如圖3所示。