前段时间接触到W5100这款集成了PHY的以太网芯片,用作工业场合的通讯以及数据传输。大概要做些什么事呢? 首先 stm32F4通过FSMC总线,将待发送的数据传至W5100的tempbuffer中,然后W5100通过TCP或者UDP传输方式,分包将数据发到上位机,存储到上位机设备中,以备后面分析用。

用这款芯片的理由:集成了PHY,避免了外部再接转换芯片,另外有4个独立的SOCKET,可并行工作,具备TCP/UDP/UDP_Broadcasting可分配功能。

TCP:

  服务器端:

  配置FSMC端口--->写入gateway和IP--->Socket初始化-->Socket_Listen--->中断服务函数

  客户端:

  配置FSMC端口--->IP和端口配置 --->Socket初始化-->Socket_Connect--->中断服务函数

UDP:

  组网广播:

  配置FSMC端口--->IP配置--->Socket初始化 --->Socket_UDP处理函数

FSMC总线时钟过大,导致数据丢帧。增大分频系数,降低总线时钟即可解决。

写W5100地址的时候,分成高位和低位,读数据和写数据,都是操作W5100的基址后面的3个偏移地址。(具体可参照W5100手册)

TCP客户端比服务端复杂,因为客户端的处理函数比服务端麻烦,而且客户端的状态比服务端多,服务端开启之后,只需要监听客户端是否接入,对应将接入的客户端数据处理返回即可。

UDP在传输过程中,前面8个字节用来存放发送IP,目的端口,数据长度,后面的才是帧数据,这样针对不同的IP端口,执行不同的操作。

以上两个Socket同时开启,可以正常传输数据。但是发热量有点大,芯片温度比周围其他芯片烫,集成PHY的原因。

具体的手册和相关资料,见网站:http://www.9mcu.com/9mcubbs/forum.php?mod=forumdisplay&fid=432

转载于:https://www.cnblogs.com/Blog-c/p/6602319.html

芯片应用——W5100TCP/UDP通讯相关推荐

  1. STM32驱动W5100S网口模块实现UDP通讯

    本文博客链接:https://blog.csdn.net/zsj2016o/article/details/88883863 作者:zsj ,转载请注明. STM32驱动W5100S网口模块实现UDP ...

  2. LWIP裸机环境下实现TCP与UDP通讯(转)

    源: LWIP裸机环境下实现TCP与UDP通讯

  3. 基于Delphi API写的UDP通讯类

    转载地址:http://www.codefans.net/articles/159.shtml 基于Delphi API写的UDP通讯类,可以广播和单播,类作者:王彦鹏.这个类是作者2007年的时候写 ...

  4. LWIP裸机环境下实现TCP与UDP通讯

    前面移植了LWIP,并且简单的实用了DHCP的功能,今天来使用一下实际的数据通讯的功能 首先是实现TCP客户端,我先上代码 #ifndef __TCP_CLIENT_H_ #define __TCP_ ...

  5. linux系统udp通信程序,Linux UDP socket编程(UDP通讯模型) | C/C++程序员之家

    Linux UDP socket编程(UDP通讯模型): UDPClient + UDPService. Linux下大多数网络程序都是基于TCP的,很少基于UDP,简单的通讯模型如下,开发时候备用! ...

  6. C#UDP通讯UdpClient

    目录(?)[+] 遇到如下两个问题 远程主机强迫关闭了一个现有的连接的错误 [html] view plaincopy print? class UdpClientClass { /// <su ...

  7. UDP 通讯协议 局域网通信发送消息 简单实现

    发送端 import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; imp ...

  8. UDP通讯之字节流与protobuf转换(C++版)

    UDP通讯之字节流与protobuf转换(C++版) 说明 工程内容 VS2017工程介绍 VS2017工程基本设置 数据结构体 UDP服务端server与客户端client类的封装 初始化IP与Po ...

  9. socket之UDP通讯

    该文章简单的讲解linux中socket UDP通讯 UDP(user datagram protocol)的中文叫用户数据报协议,属于传输层.UDP是面向非连接的协议,它不与对方建立连接,而是直接把 ...

最新文章

  1. angular 发布订阅
  2. java速查表_Java8新功能速查表 - 穿梭于偶然
  3. bootstrap设置button不显示_电脑便签怎么显示不关闭?电脑云便签敬业签怎么设置显示桌面?...
  4. [技术分享]【DLI跨源】当DLI遇见MongoDB
  5. MFC关闭对话框可以不析构吗_Win10关闭Defender和防火墙
  6. JavaScript 数字前补“0”的五种方法
  7. 彻底明白Java的IO系统
  8. 【机器学习案例】酒店用机器学习,预测哪些客人会放鸽子
  9. Spark:聚类算法
  10. resetuser.php,Php开发过程中不常碰到的error (2.25更新)
  11. java 中高级面试题_Java中高级面试题
  12. 计算机无法安装网卡驱动,电脑经验遇到网卡驱动安装不上的问题,该如何解决呢?一起来看看...
  13. jquery 遍历java对象_jquery中object对象循环遍历的方法
  14. java web开发(一) Java Web开发框架对比
  15. linux运维cadn,Aprende an elaborar un amasamiento tГЎntrico citaciГіn
  16. GOM引擎登录器配置教程
  17. 使用QE绘制Band Structure
  18. matlab工具箱拟合函数
  19. 推荐一些常用的中外学术文献数据库网站
  20. 六、文件管理(5.文件存储空间的管理)

热门文章

  1. 对于制造业企业来说,有效的提高生产效率是降低生产成本的关键。
  2. linux如何查看丢弃数据包,如何查看被iptables丢弃的数据包
  3. 进制在c语言中的作用,C语言中的进制关系
  4. EMQ X 与物联网平台的关系是什么
  5. android:onKeyDown 方法
  6. 用C语言求1-2000之间哪些是闰年
  7. 计算机连不上网络了怎么办,电脑连不上网,手把手教你电脑连不上网怎么办
  8. MATLAB基础-矩阵输入
  9. linux消息队列go的channel,浅谈Go Channel 高级实践
  10. R语言 使用RODBC连接oracle数据库