ww5500与stm

一、TCPUDPDebug102_Setup

1.安装

![在这里插入图片描述](https://img-blog.csdnimg.cn/cac0cea9ea6a4a3ba2f433a0906e1e63.pn

2.STM32与W5500接线方法
PA3 -> W5500_RST
PA4 -> W5500_SCS
PA5 -> W5500_SCLK
PA6 -> W5500_MISO
PA7 -> W5500_MOSI

二、STM32+W5500+modbus协议编程

1.主函数部分

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_SPI1_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */
	System_Initialization();	//STM32系统初始化函数(初始化STM32时钟及外设)
	Load_Net_Parameters();		//装载网络参数	
	W5500_Hardware_Reset();		//硬件复位W5500
	W5500_Initialization();		//W5500初始货配置
	

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
		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接收并发送接收到的数据
		}
//		else //定时发送字符串
//		{
//			if(S0_State == (S_INIT|S_CONN))
//			{
//				S0_Data&=~S_TRANSMITOK;
//				memcpy(Tx_Buffer, "\r\n你好服务器,我是客户1!\r\n", 23);	
//				Write_SOCK_Data_Buffer(0, Tx_Buffer, 23);//指定Socket(0~7)发送数据处理,端口0发送23字节数据
//			}
//		}
//		HAL_Delay(500);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
//		data++;
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

2.响应函数

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


3.TCP连接
在这里插入图片描述

三、设置

1.setup->read/write definition…
在这里插入图片描述
2.Connection->Connect…
在这里插入图片描述
3.修改tcp
在这里插入图片描述

四、参考链接

http://www.ad.siemens.com.cn/productportal/Prods/published/Comm/Comm_9.1/Comm_9.1.html#:~:text=Modbus%20TCP%E6%95%B0%E6%8D%AE%E5%B8%A7%20Modbus%E6%95%B0%E6%8D%AE%E5%9C%A8TCP/IP%E4%BB%A5%E5%A4%AA%E7%BD%91%E4%B8%8A%E4%BC%A0%E8%BE%93%EF%BC%8C%E6%94%AF%E6%8C%81Ethernet%20II%E5%92%8C802.3%E4%B8%A4%E7%A7%8D%E5%B8%A7%E6%A0%BC%E5%BC%8F%EF%BC%8CModbus,TCP%E6%95%B0%E6%8D%AE%E5%B8%A7%E5%8C%85%E5%90%AB%E6%8A%A5%E6%96%87%E5%A4%B4%E3%80%81%E5%8A%9F%E8%83%BD%E4%BB%A3%E7%A0%81%E5%92%8C%E6%95%B0%E6%8D%AE3%E9%83%A8%E5%88%86%EF%BC%8CMBAP%E6%8A%A5%E6%96%87%E5%A4%B4%28MBAP%E3%80%81Modbus%20Application%20Protocol%E3%80%81Modbus%E5%BA%94%E7%94%A8%E5%8D%8F%E8%AE%AE%29%E5%88%864%E4%B8%AA%E5%9F%9F%EF%BC%8C%E5%85%B17%E4%B8%AA%E5%AD%97%E8%8A%82%EF%BC%8C%E5%A6%82%E5%9B%BE1%E6%89%80%E7%A4%BA%EF%BC%9A%20%E5%9B%BE1%EF%BC%9AMODBUS%20TCP%E6%8A%A5%E6%96%87
https://blog.csdn.net/tcjy1000/article/details/22962067
https://blog.csdn.net/qq_47281915/article/details/121927294?spm=1001.2014.3001.5501

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值