《杰发微课堂》今天开讲第六课啦!W5500是一款集成全硬件TCP/IP协议栈的嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案。本文将从杰发科技功能安全MCU芯片AC7840x为何适配W5500出发,提供Demo测试、代码适配流程等指导,方便用户开发更加丰富的应用方案。
方案简介
W5500集成了TCP/IP协议栈,10M/100M以太网数据链路层(MAC)及物理层(PHY),用户使用单芯片就能够在应用中拓展网络连接。久经市场考验的WIZnet全硬件TCP/IP协议栈支持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以太网自适应适配;
使用SPI接口,支持mode 0和mode 3;
SPI速率理论可以达到80MHz,实际可以提供到33.3MHz稳定传输;
支持8路Socket单独通路,具有32K片上缓存。
AC7840x-W5500 Demo测试
1. 接线图
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:物理地址 //代码默认 0cab00: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技术咨询,请联系。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !