W5500以太网搭建
官方移植库W5500
- 下载地址:GitCode - 全球开发者的开源社区,开源代码托管平台
- 目录结构
- Ethernet以太网移植文件文件
-
wizchip_conf 配置
-
芯片型号
-
工作模式
-
- wizchip_conf.c配置
- 临界区
- 片选
- SPI收发字节配置
- 自定义注册SPI
// 自定义注册SPI相关回调函数 void user_register_spi(void) {// 处理临界区的进入和退出reg_wizchip_cris_cbfunc(wizchip_cris_enter,wizchip_cris_exit);// 处理CS的使能和失能reg_wizchip_cs_cbfunc(wizchip_cs_select,wizchip_cs_deselect);//处理SPI读写字节操作reg_wizchip_spi_cbfunc(wizchip_spi_readbyte,wizchip_spi_writebyte);}
- 自定义注册SPI
- 临界区
W5500 功能函数和封装
-
配置MAC: setSHAR(mac);
// 设置MACvoid ethernet_set_mac(void){setSHAR(mac);}
-
设置IP信息
- 设置IP:setSIPR(ip);
-
设置子网掩码:setSUBR(submask);
-
设置网关:setGAR(gateway);
-
实现参考
// 设置IP地址 子网掩码 网关ip void ethernet_set_ip_info(void) {//设置ipsetSIPR(ip);//设置子网掩码setSUBR(submask);// 设置网关ipsetGAR(gateway);}
-
TCP服务器
-
启动服务器
-
获取socket状态:getSn_SR(SOCKET);
-
启动socket: socket(SOCKET,Sn_MR_TCP,PORT,SF_TCP_NODELAY);
-
成功返回:SOCKET的值 如(0或1等)
-
SOCKET:socket
-
Sn_MR_TCP:TCP协议
-
PORT:端口
-
SF_TCP_NODELAY:非阻塞,没有数据不会等待
-
- 监听:listen(SOCKET);
- 成功返回值:SOCK_OK
- 关闭socket:close(SOCKET);
-
判断建立连接:getSn_IR(SOCKET_SET)&Sn_IR_CON
-
清除建立连接标志位:setSn_IR(SOCKET_SET,Sn_IR_CON);
- 接收客户端的ip地址: getSn_DIPR(SOCKET_SET,client_ip);
- 接收客户端端口号: client_port=getSn_DPORT(SOCKET_SET);
- 实现参考
// 定义全局,变量保存。客户端的IP和端口号 uint8_t client_ip[4]; uint16_t client_port; //启动TCP服务器 void tcp_server_start(void) {// 获取socket状态uint8_t status=getSn_SR(SOCKET_SET);if (status==SOCK_CLOSED){// 如果关闭,打开一个socketin
-
-