STM32F103+W5500网络通信

  • 一、W5500模块
    • (一)W5500以太网模块介绍
    • (二)模块排针功能表
  • 二、 modbus协议
    • (一)modbus协议原理
    • (二)Modbus 通讯方式
      • 1.Modbus三种通讯方式
      • 2.在Modbus网络上传输
      • 3.以太网(modbus tcp/ip)
  • 三、代码实现
    • (一)初始化从机网络
    • (二)响应函数
    • (三)main函数循环等待连接
  • 四、结果
    • (一)modbus poll建立连接
    • (二)串口显示
  • 五、总结
  • 六、参考资料

一、W5500模块

(一)W5500以太网模块介绍

  • D-W5500 EVB以太网模块是一款基于WIZnet W5500芯片的以太网模块,且性价比高的以太网模块。W5500是一款全硬件TCP/IP嵌入式以太网控制器,为嵌入式系统提供了更加建议的互联网连接方案。
  • W5500固化了TCP/IP协议栈,10/100Mbps以太网数据链路层(MAC)及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。内嵌32K字节片上缓存以供以太网处理,并且可以同时使用8个硬件Socket独立通讯;SPI(外设船型接口)从而能够更加容易与外设MCU整合,并且W5500使用了高效SPI协议支持80MHz,从而实现高速网络通讯。
  • 模块还支持3.3V或者5V电源供电,当5V供电时还可以输出3.3V的电压,方便用户在不同的单片机系统中使用。

(二)模块排针功能表

线路接法
PA3 -> W5500_RST
PA4 -> W5500_SCS
PA5 -> W5500_SCK
PA6 -> W5500_MISO
PA7 -> W5500_MOSI

二、 modbus协议

(一)modbus协议原理

Modbus协议是一种已广泛应用于当今工业控制领域的通用通讯协议。通过此协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为Modbus Master,从设备方使用的协议称为Modbus Slave。典型的主设备包括工控机和工业控制器等;典型的从设备如PLC可编程控制器等。

Modbus通讯物理接口可以选用串口(包括RS232、RS485和RS422),也可以选择以太网口。其通信遵循以下的过程:

  • 主设备向从设备发送请求
  • 从设备分析并处理主设备的请求,然后向主设备发送结果
  • 如果出现任何差错,从设备将返回一个异常功能码

Modbus的工作方式是请求/应答,每次通讯都是主站先发送指令,可以是广播,或是向特定从站的单播;从站响应指令,并按要求应答,或者报告异常。当主站不发送请求时,从站不会自己发出数据,从站和从站之间不能直接通讯。

Modbus协议是应用层(协议层)报文传输协议,它定义了一个与物理层无关的协议数据单元(PDU),即PDU=功能码+数据域,功能码1byte,数据域不确定。

Modbus协议能够应用在不同类型的总线或网络。对应不同的总线或网络,Modbus协议引入一些附加域映射成应用数据单元(ADU),即ADU=附加域+PDU,例如modbus tcp/ip------ ADU=MBAP+ADU。

(二)Modbus 通讯方式

1.Modbus三种通讯方式

Modbus有下列三种通信方式:

(1)、以太网:对应的通信模式是Modbus TCP/IP

(2)、异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线等):对应的通信模式是Modbus RTU或Modbus ASCII

(3)、高速令牌传递网络:对应的通信模式是Modbus PLUS

Modbus RTU和Modbus ASCII协议应用于串口链接(RS232、RS485、RS422),Modbus tcp/ip协议应用于以太网链接。

2.在Modbus网络上传输

标准的Modbus口是使用RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem组网。

控制器通信使用主/从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。

典型的主设备:主机和可编程仪表。

典型的从设备:可编程控制器。

主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。

Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。

从设备回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。

3.以太网(modbus tcp/ip)

对于Modbus TCP而言,主站通常称为Client,从站称为Server;而对于Modbus RTU和Modbus ASCII来说,主站是Master,从站是Slave。

ModbusTCP的数据帧可分为两部分:ADU=MBAP+PDU = MBAP + 功能码 + 数据域,MBAP 7byte,功能码1byte,数据域不确定,由具体功能决定。

三、代码实现

(一)初始化从机网络

void Load_Net_Parameters(void)
{Gateway_IP[0] = 192;//加载网关参数Gateway_IP[1] = 168;Gateway_IP[2] = 1;Gateway_IP[3] = 1;Sub_Mask[0]=255;//加载子网掩码Sub_Mask[1]=255;Sub_Mask[2]=255;Sub_Mask[3]=0;Phy_Addr[0]=0x0c;//加载物理地址Phy_Addr[1]=0x29;Phy_Addr[2]=0xab;Phy_Addr[3]=0x7c;Phy_Addr[4]=0x00;Phy_Addr[5]=0x01;IP_Addr[0]=192;//加载本机IP地址IP_Addr[1]=168;IP_Addr[2]=1;IP_Addr[3]=199;S0_Port[0] = 0x13;//加载端口0的端口号5000 S0_Port[1] = 0x88;S0_Mode=TCP_SERVER;//加载端口0的工作模式,TCP服务端模式

(二)响应函数

void Process_Socket_Data(SOCKET s)
{int len;unsigned char msg[11]={0x00,0x00,0x00 ,0x00, 0x00, 0x05, 0x01, 0x03, 0x02, 0x00, 0x70};len=sizeof(msg);unsigned short size;size=Read_SOCK_Data_Buffer(s, Rx_Buffer);memcpy(Tx_Buffer, Rx_Buffer, size);//打印查询报文for (int j=0;j<size;j++){printf("0x%02X ",Tx_Buffer[j]);}//写响应报文//检验码msg[0]=Tx_Buffer[0];msg[1]=Tx_Buffer[1];//协议msg[2]=0x00;msg[3]=0x00;//数据包长度msg[4]=0x00;msg[5]=0x05;//设备编号msg[6]=Tx_Buffer[6];//功能码msg[7]=Tx_Buffer[7];//数据长度msg[8]=0x02;//低八位msg[10]=data&0XFF;//高八位msg[9]=data>>8;memcpy(Tx_Buffer, msg, len);    //发送响应报文Write_SOCK_Data_Buffer(0, Tx_Buffer, len);data++;
}

(三)main函数循环等待连接

 while (1){W5500_Socket_Set();//W5500端口初始化配置W5500_Interrupt_Process();//W5500中断处理程序框架if((S0_Data & S_RECEIVE) == S_RECEIVE)//如果Socket0接收到数据{S0_Data&=~S_RECEIVE;Process_Socket_Data(0);//W5500接收并发送接收到的数据}//从机状态标志HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);}

四、结果

(一)modbus poll建立连接

1.设置id、地址、读取位数

2.TCP/IP建立连接,设置地址、端口

3.连接成功如下

(二)串口显示

五、总结

本次实验用了Mudbus协议栈,参考了大佬的代码,真不错,实现了简单的TCP通信,可以实现串口数据的收发。

六、参考资料

MODBUS通讯协议完整介绍
modbus通讯协议详解
STM32F103基于W5500实现Modbus简单TCP通信

STM32F103+W5500网络通信相关推荐

  1. STM32之W5500网络通信

    STM32之W5500网络通信 一.W5500 二.DHCP 三.modbus 四.实现web服务 参考 一.W5500 Niren_W5500模块是一款基于WIZnet W5500芯片的以太网模块, ...

  2. STM32F103+W5500,HAL库

    调试遇到的问题 移植了官方的源码 基本源码过来以后就是需要改一下SPI配置: HAL库的初始化配置完成以后没有使能. hspi1.Instance = SPI1;hspi1.Init.Mode = S ...

  3. stm32f103 w5500 tcp server

    背景 项目中需要使用网络,开始使用的stm32f4+lwip的方案,但是硬件成本有些高,更主要的是lwip不好用,老是断,可能是自己没有研究透它吧.经过长时间的调研论证,最终选择了w5500这款芯片. ...

  4. AD原理图设计、STM32+W5500网络通信

    一.Altium Designer (一)简介 Altium Designer 提供了唯一一款统一的应用方案,其综合电子产品一体化开发所需的所有必须技术和功能.Altium Designer 在单一设 ...

  5. STM32基于W5500模块实现通信

    目录 一.W5500及modbus 二.代码实现 1.初始化网络 2.响应函数 3.main函数循环 三.通信结果 链接 一.W5500及modbus W5500 芯片是一款集成全硬件 TCP/IP ...

  6. WIZnet W5500系列培训活动之“MQTT协议讲解和实践(接入OneNET)”

     万物联网的时代已经到来,物联网也由当初的概念开始进一步落实.物联网通信协议当中发展最迅速.应用最广泛的就是MQTT,它是轻量级基于代理的发布/订阅的消息传输协议,并且可以通过很少的代码和带宽与远程设 ...

  7. swiftui视频_swiftui视频播放器实时处理核心图像

    swiftui视频 SwiftUI in iOS 14 introduced native support for playing movie files. The new VideoPlayer c ...

  8. 物联网开发笔记(52)- 使用Micropython开发ESP32开发板之W5500以太网网络模块有线网络通信

    一.目的 这一节我们学习如何使用我们的ESP32开发板来进行有线网络通信. 二.环境 ESP32 + W5500以太网网络模块有线网络通信模块 + Thonny IDE + 几根杜邦线 接线方法: 网 ...

  9. Spi通信,写操作时,发送缓冲区非空停留在while里面。arm a5与w5500芯片udp网络通信。网络调试助手界面及sscom无法点击

    问题描述 w5500 与SAMA5D3x处理器通过硬件spi实现网络通信.采用w5500自带的函数进行udp通信,接口函数sendto,发送100Hz的数据一段时间后,程序停留在函数SPI_write ...

最新文章

  1. 转:WebApi(一)
  2. PHP变量的变量——可变变量
  3. Collection集合总结
  4. LeetCode OJ - Valid Palindrome
  5. UI设计灵感|这才是分享美图的正确姿势!
  6. 《计算机应用基础实训教程》,《计算机应用基础实训教程》修改稿(文).doc
  7. 计算机科学与技术a类学科,清华大学a类学科有哪些?附清华a类学科名单
  8. java web 课程设计_关于Javaweb课程设计的心得体会.doc
  9. java绝对路径和相对路径_Java文件路径,绝对路径和规范路径
  10. 线性代数 矩阵 知识技巧思维导图 [21考研上岸之旅]
  11. 计算机软件退税,软件企业2021增值税退税
  12. 读书笔记-干法-付出不亚于任何人的努力!
  13. WATTMAN瓦特曼完成新一轮战略融资,持续深耕钢铁冶金等领域,推出机器人集群平台化产品...
  14. win10 使用IBM-kui链接kubectl
  15. 【解析】Token to Token Vision Transformer
  16. 仿照源码,手写一个自定义 Spring MVC 框架
  17. Android 亮度调节
  18. 计算机名弹出输入网络密码错误,win10系统登录网络打印机出现用户名和密码错误的设置办法...
  19. 晨风机器人安卓版_晨风qq机器人
  20. 那天我和小姐姐扯了半小时的JVM~

热门文章

  1. Svelte的UI组件库
  2. Proteus安装后点击“ISIS 7 professional”报错:cannot find a valid licence key for ISIS Professional on this co
  3. 一种简单的封装VP8/VP9视频的容器:IVF格式
  4. VMware 11虚拟机安装Mac OS X 10.10
  5. 图片压缩算法,保证图片不失真
  6. 在小程序中使用dayjs
  7. 关于线程池的“惊群效应”
  8. Vue 项目打包部署实战完整流程总结!
  9. CLRS 2.2分析算法
  10. 大数据分析:新浪微博兴趣圈自动挖掘