网络卸载模块,开放源代码-WIZ820io用户手册
0赞大家好,WIZnet推出了网络卸载模块,开放源代码的WIZ820io啦,今天我给大家分享一下它的源代码吧 ~~
1. 简介
WIZ820io是一个高度集成的以太网控制模块,其集成了全硬件TCP/IP芯片W5200(内嵌以太网物理层)、带有以太网变压器的RJ45(MAG-JACK)以及其他外围电路。使用WIZ820io,用户可以快速地评估W5200并无需设计与以太网相关的繁琐的外围电路。
针对在已有的产品中构架以太网功能的用户,WIZ820io将是一个理想的选择。
有关全硬件TCP/IP芯片的详细信息,请参考W5200的数据手册。
WIZ820io由W5200和MAG-JACK所构成。
- TCP/IP协议栈,以太网MAC: W5200
- 以太网物理层: 内嵌于W5200
- 以太网接口: MAG-JACK(带有以太网变压器的RJ45
1.1 产品特性
- 支持10/100BaseT
- 支持全/半双工通信
- 支持自动握手(auto-negotiation)和自动极性变换
- 兼容IEEE 802.3/802.3u
- 支持高速SPI接口(SPI模式0或3)
- I/O口工作电压为3.3V,最高耐压为5V
- 具有多种网络状态信号输出
- 内部集成了TCP, IPv4, UDP, ICMP, ARP, PPPoE, IGMP等网络协议
- 内嵌以太网DLC和MAC层
- 支持8个端口同时通信
- 具有休眠模式,降低功耗
- 支持网络唤醒
- 提供Socket API,方便程序移植
- 双排2.54mm间隔1 x 6插针,便于使用
- 精巧的设计: 23mm x 25mm (PCB尺寸)
2. 管脚定义与说明
2.1 管脚定义
2.2 管脚说明
管脚编号 |
I/O |
管脚名称 |
说明 |
|
J1 |
1 |
P |
GND |
接地 |
2 |
P |
GND |
接地 |
|
3 |
I |
MOSI |
Master Out Slave In SPI MOSI信号管脚 |
|
4 |
I |
SCLK |
SPI 时钟 SPI时钟信号管脚 |
|
5 |
I |
nSS |
SPI Slave Select : 低电平有效 该管脚用于选择从设备,低电平有效 |
|
6 |
O |
nINT |
Interrupt : 低电平有效 该管脚用于输出W5200产生的中断信号,例如:连接、断开、接收数据超时, 和WOL (Wake on LAN)。 该中断被IR或Sn_IR(Socket n-th Interrupt Register)寄存器清空。 |
|
J2 |
1 |
P |
GND |
接地 |
2 |
P |
3V3D |
电源: 3.3V |
|
3 |
P |
3V3D |
电源: 3.3V |
|
4 |
I |
PWDN |
Power Down : 高电平有效 该管脚用于工作模式选择。 Low: 正常模式 High: 启动低功耗(Power Down)模式 |
|
5 |
I |
nRESET |
Reset: 低电平有效 该管脚用于初始化W5200。 当初始化W5200时,该管脚需维持至少2us低电平,并且至少维持150ms高电平。 |
|
6 |
O |
MISO |
Master In Slave Out SPI MISO信号管脚 |
3. SPI操作
WIZ820io是一个SPI从设备,其接收SPI主设备的指令并按照指令工作。SPI主设备通过SPI接口来控制W5200,SPI接口由以下4个信号所组成:从设备选择信号(nSS), SPI时钟信号(SCLK), MOSI(Master Out Slave In)信号和MISO(Master In Slave Out)信号。
SPI有4种工作模式:Mode 0~3。每种模式根据SCLK信号的极性(polarity)和相位(phase)的不同而有所差异。W5200作为SPI从设备,支持最常见的SPI模式0和模式3。
SPI模式0和模式3之间唯一的差别就是SCLK信号的极性在闲置时的不同。无论是SPI模式0或模式3,在SCLK处于上升沿时,数据都将被锁定,并且在SCLK处于下降沿时,数据将被送出。
3.1 通用SPI主设备操作例
1. 配置主设备I/O口的方向
2. 闲置时将nSCS置高
3. 在SPDR寄存器(SPI Data Register)中写入要发送的目的地址
4. 在SPDR寄存器中写入OP代码和数据长度
5. 把要传送的数据写入SPDR寄存器
6. 将nSCS置低,数据传送开始
7. 等待数据传送结束
8. 数据传送结束后,将nSCS置高
3.2 读操作
进行读操作时,需首先将nSS置低,然后通过MOSI依次输出地址、OP代码、数据长度和哑元数据(dummy data),数据字节将从MISO管脚输入。OP=0是选择读操作,OP=1则是选择写操作。
W5200的SPI支持单字节和多字节读操作。单字节读操作由4个指令组成:16位地址、1位OP代码(0)、15位数据长度和8位哑元数据;多字节读操作在发送读指令和数据长度后,需连续发送哑元数据。为区分单字节操作和多字节操作,需要定义数据长度。如果长度为1,则为单字节读操作,否则为多字节读操作。在nSS为低电平后,需将MISO置低。
/*每8bit数据包读取数据的虚拟程序代码*/ #define data_read_command 0x00 uint16 addr; //地址: 16bits int16 data_len; // 数据长度 :15bits uint8 data_buf[]; // 数据数组 SpiSendData(); // 由MCU传送数据到 W5200 SpiRecvData(); // 由W5200接收数据到 MCU { ISR_DISABLE(); // 禁止中斷服務程序 CSoff(); // CS=0, SPI 开始 // Spi传送数据 SpiSendData(((addr+idx) & 0xFF00) >> 8); // 地址字節 1 SpiSendData((addr+idx) & 0x00FF); // 地址字節 2 //读数据命令 + 数据长度上限 7bits SpiSendData((data_read_command| ((data_len& 0x7F00) >> 8))); // 最后的数据长度8bits SpiSendData((data_len& 0x00FF)); //读数据:在 data_len> 1, 突發读取處理模式(Burst Read Processing Mode) for(int idx = 0; idx { SpiSendData(0); // 虚拟数据(dummy data) data_buf[idx] = SpiRecvData(idx); // 读数据 } CSon(); // CS=1, SPI 完结 ISR_ENABLE(); // 禁止中断服务程序 |
3.3 写操作
在nSS置低后,依次在MOSI输出地址、OP代码、数据长度和数据字节。
同样,W5200支持单字节写操作和多字节写操作。单字节写操作由4个指令组成:16位地址、1位OP代码(1)、15位数据长度和8位数据数组。单字节写操作时,数据长度需设置为1;而多字节写操作时,数据长度需设置为数据实际长度。在进行写操作时,在nSS进入低电平后,需将MSO置低。
/*每8bit数据包写数据的虚拟程序代码*/ #define data_write_command 0x80 uint16 addr; //地址: 16bits int16 data_len; //数据长度 :15bits uint8 data_buf[]; // 数据数组 { |
SpiSendData(); //由MCU传送数据到 W5200
ISR_DISABLE();// 禁止中断服务程序 CSoff();// CS=0, SPI 开始 SpiSendData(((addr+idx) & 0xFF00) >> 8); //地址字節 1 SpiSendData((addr+idx) & 0x00FF); //地址字節 2 // 写数据命令 + 数据长度上限 7bits SpiSendData((data_write_command | ((data_len& 0x7F00) >> 8))); // 最后的数据长度8bits SpiSendData((data_len& 0x00FF)); //写数据:在 data_len> 1, 突發读取處理模式(Burst Read Processing Mode) for(int idx = 0; idx SpiSendData(data_buf[idx]); CSon(); // CS=1, SPI 完结 IINCHIP_ISR_ENABLE(); // 禁止中断服务程序 |
}
或者来信: Tel: 86-10-84539974(转166),QQ:2464237212,邮箱:wiznetbj@wiznettechnology.com,联系人:Lily Zhang,谢谢!