前段时间接触到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. Linux目录是否是否为空,在Linux上使用C检查目录是否为空
  2. TCP数据流稳定性--TCP分片,重组及乱序
  3. hdu5253最小生成树
  4. 计算机网络信息安全的含义,计算机网络信息安全内涵及其重要性
  5. java2期末考试试题及答案_《JAVA语言程序设计》期末考试试题及答案(2)
  6. 陈百强原来这么帅_外套假两件,原来这么帅。
  7. 实现根据条件删除_常见数据结构的实现(一):跳跃表
  8. Unity2018新功能抢先预览 | Preset功能
  9. 种子点生长算法下——三维种子点生长
  10. 赵伯平--警惕台湾的企业管理垃圾!
  11. sap Payment Terms Terms of payment 收付款条件
  12. 用Python批量缩放图片
  13. SprintBoot:Post请求的参数多一个逗号的解决方法
  14. sau交流学习社区-songEagle开发系列:Vue + Vuex + Koa 中使用JWT(JSON Web Token)认证
  15. 如何将图片背景变为透明色
  16. Java的MessageDigest类、MD5算法
  17. android 获取刘海高度,Android各厂商的刘海屏高度获取工具类
  18. MySQL 数据库文件 详解
  19. Python实现王者荣耀小助手(二)
  20. 【历史上的今天】2 月 2 日:公钥密码学发明者诞生;苹果的衰落期;测谎仪首次被使用

热门文章

  1. 物联网——智慧消防云平台
  2. 有向图 寻路算法_第2部分探索寻路图算法
  3. OSS 上传文件 报 Invalid according to Policy: Policy expired
  4. matlab中的并行方法与理解(2):parfor中的变量类型
  5. Cannot resolve Build.VERSION_CODES.Q with build tools 29 in Android Studio 找不到符号
  6. 什么是happens-before原则?
  7. Win系统 - 内存稳定性测试软件(MemTest)
  8. NLP--社区检测算法(Community Detection)总结【原理】
  9. [Cookie]解决Cookie跨域访问
  10. PDF转word免费在线转换