方案简介
w5500集成了tcp/ip协议栈,10m/100m以太网(mac)及物理层(phy),用户使用单芯片就能够在应用中拓展网络连接。久经市场考验的wiznet全硬件支持tcp,udp,ipv4,icmp,arp,igmp和pppoe协议。用户使用w5500时只需简单的socket编程就能实现以太网应用。与传统软件协议栈不同,w5500内嵌的8个独立硬件 socket可进行8路独立通信,相互之间通信效率互不影响,可通过w5500片上32k字节的收/发缓存灵活定义每个socket的大小。
w5500提供高速标准4线spi(外设串行接口),速率可达到80mhz,更容易与外设mcu整合,从而能更好地实现高速网络通讯。为减少系统能耗,w5500还提供了网络唤醒模式(wol)和掉电模式供用户选择使用。
方案主要特性:
支持10m/100m以太网自适应适配;
使用,支持mode 0和mode 3;
spi速率理论可以达到80mhz,实际可以提供到33.3mhz稳定传输;
支持8路socket单独通路,具有32k片上缓存。
2. 实物图
3. w5500通过网线连接路由器,电脑也通过网线或wifi连接到路由器(确保在同一网段)。
4. 参数配置
打开代码,在main.c的load_net_parameters配置自己的网络参数,网络工具端网络参数需为本地电脑参数,以demo为例:
gateway_ip:网关ip //代码默认 192.168.50.1
sub_mask:子网掩码 //代码默认 255.255.255.0
phy_addr:物理地址 //代码默认 0c:29:ab:7c:00:01
ip_addr:本机ip地址 //代码默认 192.168.50.199
s0_port:本机断开0端口号 //代码默认 5000
s0_dip:目的ip //代码默认 192.168.50.232
s0_dport:目的端口 //代码默认 6000
5. tcp客户端测试
5.1 打开网络测试工具,点击创建服务器→设置本机端口→点击确定→启动服务器。
5.2 给开发板上电
5.3 可以看到w5500已经连接上tcp服务器
5.4 进行数据收发,发送数据,开发板可以收到,并且log打印出来,开发板按下k4,会向tcp服务器发送数据。
6. tcp服务器测试
6.1 修改网络参数后(参考步骤4),下载到开发板,并且给开发板上电。
6.2 打开网络工具,创建tcp客户端,点击创建连接→选择类型为tcp,设置目标ip和端口号,点击创建。
6.3 点击连接,可以看到开发板log连接成功。
7. udp测试
7.1 打开网络工具,创建udp:点击创建连接→选择类型为udp,设置目标ip和端口号→点击创建。
7.2 给开发板上电
7.3 收发数据测试
代码适配流程
1. gpio配置
w5500的rst和init引脚,rst是重启的作用,低电平有效,时间大于500us,init是中断脚,低电平有效,当w5500有事件发生时,会将init脚拉低,提示ac7840x处理事件。
2. spi配置
2.1 spi主设备配置
2.2 spi读写时序
w5500的帧分为3段:地址段、控制段、数据段。地址段为w5500寄存器或tx/rx内存指定了16位的偏移地址。控制段指定了地址段设定的偏移区域的归属,读/写访问模式以及spi工作模式(可变长度模式/固定长度模式)。数据段可以设定为任意长度(n-字节,1≤n)或者是固定的长度:1字节,2字节或4字节,如果spi工作模式设置为可变数据长度模式(vdm),spi的scsn信号需要由外部主机通过spi帧控制。在可变数据长度模式下,scsn控制spi帧的开始和停止:scsn信号拉低(高电平到低电平),即代表w5500的spi帧开始(地址段);scsn信号拉高(低电平到高电平),即代表w5500的spi帧结束(数据段的随机n字节数据结尾)。
spi数据帧
w5500的spi数据帧包括了16位地址段的偏移地址,8位控制段和n字节数据段,如下图所示。8位控制段可以通过修改区域选择位(bsb[4:0]),读/写访问模式位(rwb)以及spi工作模式位(om[1:0])来重新定义。区域选择位选择了归属于偏移地址的区域。w5500支持数据的连续读/写,其流程为数据从(2/4/n字节连续数据的)偏移地址的基址开始传输,偏移地址会(自增寻址)加1传输接下来的数据。
地址段
地址段为w5500的寄存器或tx/rx缓存区指定了16位的偏移地址,这16位偏移地址的值来自于从最高标志位到最低标志位的顺序传输。spi数据帧的数据段(2/4/n字节)通过偏移地址自增(每传输1字节偏移地址加1)支持连续数据读/写。
控制段
控制段指定了地址段设定的偏移区域的归属,读/写访问模式以及spi工作模式。具体见w5500数据手册。
向w5500指定寄存器地址发送一个字节数据
向w5500指定寄存器地址发送n字节数据
读取w5500指定寄存器n字节数据
3. w5500 socket配置
3.1 配置w5500 mac地址、网关、ip等网络参数
3.2 配置socket的读写缓存大小(默认为2k)
3.3 配置socket收发超时时间和重传次数
3.4 配置对端网络ip、端口号等网络参数
3.5 监听或者连接服务器
4. 中断处理流程
4.1 w5500会拉低init io,抛出中断时间,ac7840x获取中断后,读取sir寄存器,获取socket事件号。
4.2 再根据事件号读取对应sn_ir,获取事件(如connect/receive/timeout)。
4.3 处理具体事件
4.4 中断事件处理
更多关于ac7840x适配w5500技术咨询,请联系support@autochips.com。