以太网原理与开发802.3

article/2025/6/22 10:15:59

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);}

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

http://www.hkcw.cn/article/KUuZOAPkqm.shtml

相关文章

day5 cpp:,对象的组织(const对象),

1.对象的组织(类比内置类型) const对象 const对象只能调用const成员函数和数据成员,除了四大金刚 若成员函数没有加const(void print() const{}),即便里面没有_ix100修改值,也不能pt2.print()访问,因为是const Point pt2(3,5)--->对象不…

C语言进阶--动态内存管理

学习数据结构重要的三个部分:指针、结构体、动态内存管理(malloc、calloc、realloc、free)。 1.为什么存在动态内存分配? 1.空间开辟大小是固定的; 2.数组在声明时,必须指定数组的长度,它所需…

Excel如何去除公式保留数值

我们有时候使用Excel在修改一部分数值的时候会导致和该数值相关的通过公式进行计算的数值发生变化,但有时我们不想改变这些数值,同样的有时我们在移动一些数值的时候会导致通过这些数值计算的数值变为#!VALUE,这是我们不想发生的,…

C++学习-入门到精通【11】输入/输出流的深入剖析

C学习-入门到精通【11】输入/输出流的深入剖析 目录 C学习-入门到精通【11】输入/输出流的深入剖析一、流1.传统流和标准流2.iostream库的头文件3.输入/输出流的类的对象 二、输出流1.char* 变量的输出2.使用成员函数put进行字符输出 三、输入流1.get和getline成员函数2.istrea…

一周学会Pandas2之Python数据处理与分析-数据重塑与透视-melt() - 融化 / 逆透视 (宽 -> 长)

锋哥原创的Pandas2 Python数据处理与分析 视频教程: 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili melt() 是 pandas 中用于数据重塑的核心方法之一,它可以将 宽格式数据 转换为 长格式数据,特…

设计模式——工厂方法模式(创建型)

摘要 工厂方法模式是一种创建型设计模式,通过定义创建对象的接口,让子类决定实例化哪个类。它包含抽象产品、具体产品、抽象工厂和具体工厂等角色。该模式使类的实例化延迟到子类,具有良好的扩展性和灵活性,适用于多种场景&#…

软件性能之CPU

性能是个宏大而驳杂话题,从代码,到网络,到实施,方方面面都会涉及到性能问题,网上对性能讲解的文章多如牛毛,从原理到方法再到工具都有详细的介绍,本文虽不能免俗,但期望能从另外一个…

腾讯云推出云开发AI Toolkit,国内首个面向智能编程的后端服务

5月28日,腾讯云开发 CloudBase 宣布推出 AI Toolkit(CloudBase AI Toolkit),这是国内首个面向智能编程的后端服务,适配 Cursor 等主流 AI 编程工具。 云开发 AI Toolkit旨在解决 AI 辅助编程的“最后一公里”问题&…

当前用户的Git本地配置情况:git config --local --list

通过config命令可以查询当前用户的本地配置情况。这些配置项定义了 Git 在当前仓库中的行为,包括文件权限处理、符号链接处理以及大小写敏感性等。 git config --local --list core.repositoryformatversion0 指定 Git 仓库的格式版本。版本 0 是最初的格式。 cor…

修改 vscode 左侧导航栏的文字大小 (更新版)

1. 起因, 目的: 问题: vscode 左侧的文字太小了!!!我最火的一篇文章,写的就是这个问题。 看来这个问题,是很广泛的一个痛点。我最近更新了 vscode, 这个问题又出现了。再来搞一下。…

Python训练第四十天

DAY 40 训练和测试的规范写法 知识点回顾: 彩色和灰度图片测试和训练的规范写法:封装在函数中展平操作:除第一个维度batchsize外全部展平dropout操作:训练阶段随机丢弃神经元,测试阶段eval模式关闭dropout 昨天我们介绍…

Fine Pruned Tiled Light Lists(精细删减的分块光照列表)

概括 在这篇文章, 我将介绍一种Tiled Light 变体,主要针对AMD Graphics Core Next(GCN)架构进行优化,我们的方法应用于游戏 古墓丽影:崛起 中,特别是我们在通过光列表生成和阴影贴图渲染之间交错进行异步计…

《信号与系统》第 5 章 离散时间傅里叶变换

5.0 引言 第4章研究了连续时间傅里叶变换,并研究了这种变换的许多特性,这些特性使傅里叶分析方法在分析和理解连续时间信号与系统的性质时具有很大的价值。这一章将介绍并研究离散时间傅里叶变换,这样就完整地建立了傅里叶分析方法。 在第3…

5.2 初识Spark Streaming

在本节实战中,我们初步探索了Spark Streaming,它是Spark的流式数据处理子框架,具备高吞吐量、可伸缩性和强容错能力。我们了解了Spark Streaming的基本概念和运行原理,并通过两个案例演示了如何利用Spark Streaming实现词频统计。…

Kafka消息中间件

window中的安装 ①、下载并解压kafka压缩包,进入config目录下修改zookeeper.properties配置文件 因为kafka内置了zookeeper,所以不需安装zookeeper。设置zookeeper数据存储位置,如果该路径不存在,则自动创建 dataDir E:/kafka…

4.2.4 Spark SQL 数据写入模式

在本节实战中,我们详细探讨了Spark SQL中数据写入的四种模式:ErrorIfExists、Append、Overwrite和Ignore。通过具体案例,我们演示了如何使用mode()方法结合SaveMode枚举类来控制数据写入行为。我们首先读取了一个JSON文件生成DataFrame&#…

day23-计算机网络-1

1. 网络简介 1.1. 网络介质 网线:cat5,cat5e 六类网线,七类网线,芭蕾网线光纤:wifi:无线路由器,ap5G 1.2. 常见网线类型 1.2.1. 双绞线(Twisted Pair Cable)【最常用】 按性能主…

Ubuntu下编译mininim游戏全攻略

目录 一、安装mininim 软件所依赖的库(重点是allegro游戏引擎库)二、编译mininim 软件三、将mininim打包给另一个Ubuntu系统使用四、安卓手机运行mininim 一、安装mininim 软件所依赖的库(重点是allegro游戏引擎库) 1. 用apt-get…

org.junit.runners.model.InvalidTestClassError:此类问题的解决

不知道大家是否遇见过以上这种情况,我也是今天被这个错误搞得很烦,后来通过网上查找资料终于找到了问题所在————就是简单的Test注解的错误使用 Test注解的注意情况 :1 权限必须是public 2 不能有参数 3 返回值类型是void 4 本类的其他的…

2025年渗透测试面试题总结-匿名[校招]渗透测试(打击黑灰产)(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 匿名[校招]渗透测试(打击黑灰产) 2. 实习时达成的目标 3. 文件包含漏洞 4. Redis未授权访问利用 5. 钓鱼…