0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TCP/IP嵌入式以太网控制器连接腾讯云

嵌入式技术 来源:嵌入式技术 作者:嵌入式技术 2022-05-31 17:56 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1.W5500简介

W5500 是一款全硬件 TCP/IP 嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案。 W5500 集成了 TCP/IP 协议栈, 10/100M 以太网数据链路层(MAC)及物理层(PHY) ,使得用户使用单芯片就能够在他们的应用中拓展网络连接。
久经市场考验的 WIZnet 全硬件 TCP/IP 协议栈支TCP,UDP,IPv4,ICMP,ARP,IGMP 以及 PPPoE 协议。 W5500 内嵌 32K 字节片上缓存以供以太网包处理。如果你使用 W5500,你只需要一些简单的 Socket 编程就能实现以太网应用。这将会比其他嵌入式以太网方案更加快捷、简便。用户可以同时使用 8 个硬件 Socket 独立通讯。
W5500 提供了 SPI(外设串行接口)从而能够更加容易与外设 MCU 整合。而且,W5500 的使用了新的高效 SPI 协议支持 80MHz 速率,从而能够更好的实现高速网络通讯。为了减少系统能耗, W5500 提供了网络唤醒模式(WOL)及掉电模式供客户选择使用。

2.W5500底层驱动编写与移植

W5500底层底层驱动移植参考示例:http://www.elecfans.com/d/1843264.html?track_id=myCenter&mod=article&share
STM32连接腾讯云参考示例:http://www.elecfans.com/d/1842055.html?track_id=myCenter&mod=article&share

腾讯物联网络平台连接

#include "stm32f10x.h"
#include "usart.h"
#include "timer.h"
#include "aliyun_mqtt.h"

/*w5500相关头文件*/
#include "w5500api.h"
#include "dhcp.h"
#include "dns.h"
#define SERVER_IP "LA57WTHWL6.iotcloud.tencentdevices.com"//服务器IP
#define SERVER_PORT 1883 //端口号
//客户端ID:{产品ID}{设备名}
#define ClientID "LA57WTHWL6Smart_home"
//用户名和密码可使用密码生成工具完成
#define Username "LA57WTHWL2Smart_home;120310126;HK8V9;1635948714"
#define Password "2a915cae4489b591ce556e71f4e9f1ka21c354a37d12fee7c46f56abee1f048a;hmacsha256"//密文 

//订阅题:$thing/down/property/{ProductID}/{DeviceName} ---{ProductID}产品ID,{DeviceName}设备名
#define SET_TOPIC  "$thing/down/property/Lb57WTHWL3/Smart_home"//订阅
//发布主题:$thing/up/property/{ProductID}/{DeviceName}
#define POST_TOPIC "$thing/up/property/Lb57WTHWL3/Smart_home"//发布

char mqtt_message[200];//上报数据缓存区
u8 rx_buff[200];
void init_Net(void)
{
	u8 try_times=0;
	init_W5500();/*W5500初始化*/
	init_dhcp_client();//动态分配IP
	while(check_DHCP_state(SOCK_DHCP)!=DHCP_RET_UPDATE)
  {
			try_times++;
			if(try_times==255)//超时 重启芯片
      {							
				Reset_W5500();
				init_dhcp_client();
				try_times=0;
			}
			delay_ms(10);
		}
    while(!set_Network());
  /*判断数据是否写入成功*/
  u8 ipaddr[4];//ip地址
  u8 subnet[4];//子网掩码
  u8 gateway[4];//网关
	getSIPR (ipaddr);			
	printf(" W5500 IP地址   : %d.%d.%d.%d\r\n", ipaddr[0],ipaddr[1],ipaddr[2],ipaddr[3]);
	getSUBR(subnet);
	printf(" W5500 子网掩码 : %d.%d.%d.%d\r\n", subnet[0],subnet[1],subnet[2],subnet[3]);
	getGAR(gateway);
	printf(" W5500 网关     : %d.%d.%d.%d\r\n", gateway[0],gateway[1],gateway[2],gateway[3]);  
}
/*连接服务器*/
uint8 TCP_Connect(SOCKET Socket,uint8 *sip,uint16 sport,uint16 lport)
{
  static uint8 CONNECT_FLAG = 0;
  switch(getSn_SR(Socket))
  {
    case SOCK_INIT:
			 CONNECT_FLAG=connect(Socket,sip,sport);/*连接服务器*/
       break;
    case SOCK_CLOSE_WAIT:
      disconnect(Socket);
      close(Socket);
      break;
    case SOCK_CLOSED:
			 CONNECT_FLAG=0;
			 socket(Socket,Sn_MR_TCP,lport,Sn_MR_ND);
			 break;
  }
  return CONNECT_FLAG;
}
int main()
{
  u16 i=0;
  u8 stat=0;
  u16 time=0,cnt=0;
  float temp=10;
  u16 rlen;
  USART1_Init(115200);
  printf("W5500 SPI模拟时序寄存器版,连接腾讯云VER1.0 \r\n");
  init_Net();/*W5500硬件初始化,动态分配IP*/
  printf("W5500 硬件初始化成功\r\n");
  while(!do_dns((u8 *)SERVER_IP)){}/*域名解析*/
  while(1)
  {
    stat=TCP_Connect(MQTT_SOCK,NET_CONFIG.rip,1883,5500);/*连接服务器*/
    printf("stat=%d\r\n",stat);
    if(stat)break;
    delay_ms(1000);
  } 
  printf("腾讯物联网平台连接中....\n");
  while(1)
  {
    if(getSn_SR(MQTT_SOCK)==SOCK_ESTABLISHED)
    {
       if(getSn_IR(MQTT_SOCK)&Sn_IR_CON)
       {
         setSn_IR(MQTT_SOCK,Sn_IR_CON);
       }
       MQTT_Init();
       if(MQTT_Connect(ClientID,Username,Password)==0)
       {
          printf("腾讯云平台连接成功\r\n");
         break;
       }
    }
  }
  stat=MQTT_SubscribeTopic(SET_TOPIC,0,1);
  if(stat)printf("订阅失败\r\n"); 
  while(1)
  {
    /*接收数据*/
    rlen=getSn_RX_RSR(MQTT_SOCK);
    if(rlen>0)
    {
      rlen=recv(MQTT_SOCK,rx_buff,rlen);
      printf("len=%d\r\n",rlen);
      for(i=0;i=5000)
    {
      time=0;
      MQTT_SentHeart();//发送心跳包
    }
    if(cnt>=2000)
    {
      temp+=1.5;
      if(temp>=85)temp=-15;
      cnt=0;
      sprintf(mqtt_message,"{"method":"report","clientToken":"123","params":{"LED1":1,"temp":%.2f,"L":356}}",temp);//温度
      MQTT_PublishData(POST_TOPIC,mqtt_message,0);
    }    
  }
}

;i++)>

3.运行效果

在这里插入图片描述pYYBAGKV5dqARxLmAAFgecWP9iw664.pngpoYBAGKV5euAbEYzAAHmv-GPGTk926.png

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2939

    文章

    47324

    浏览量

    407972
  • 腾讯云
    +关注

    关注

    0

    文章

    224

    浏览量

    17383
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ProfiNet嵌入式板卡,主流替代可实现ProfiNet工业以太网的应用实例

    ProfiNet嵌入式板卡,主流替代可实现ProfiNet工业以太网的应用实例
    的头像 发表于 12-01 17:11 907次阅读
    ProfiNet<b class='flag-5'>嵌入式</b>板卡,主流替代可实现ProfiNet工业<b class='flag-5'>以太网</b>的应用实例

    C语言在嵌入式开发中的应用

    到家庭网络,并与云端服务进行通信,用户可以通过手机 APP 远程控制这些设备。在工业物联网中,工厂中的各种设备通过以太网、Wi-Fi、蓝牙等网络接口连接到企业内部网络,实现设备之间的
    发表于 11-21 08:09

    Molex 单对以太网(SPE)连接器技术解析与应用指南

    Molex单对以太网 (SPE) 连接器和电缆组件采用标准T1工业接口和单双绞线布线。SPE 220957系列提供IP20防护等级插头、插孔和电缆组件,可轻松实现以太网
    的头像 发表于 11-20 14:33 279次阅读

    以太网通讯在FPGA上的实现

    协议的载体,IP协议规定了数据传输时的基本单元和格式。其位于以太网MAC帧格式的数据段,IP协议内容由IP首部和数据字段组成。所有的TCP
    发表于 10-30 07:45

    基于Microchip LAN8650/1的10BASE-T1S以太网控制器技术解析

    的微控制器)能够访问10BASE-T1S网络。LAN8650和LAN8651的通用标准串行外设接口 (SPI) 支持连接几乎任何微控制器,以传输以太网数据包,LAN8650和LAN86
    的头像 发表于 10-11 09:48 443次阅读
    基于Microchip LAN8650/1的10BASE-T1S<b class='flag-5'>以太网</b><b class='flag-5'>控制器</b>技术解析

    Microchip LAN9211-ABZJ 集成 10/100 以太网 PHY的以太网控制器

    Microchip LAN9211-ABZJ 集成 10/100 以太网 PHY的以太网控制器
    的头像 发表于 06-04 14:56 812次阅读
    Microchip LAN9211-ABZJ 集成 10/100 <b class='flag-5'>以太网</b> PHY的<b class='flag-5'>以太网</b><b class='flag-5'>控制器</b>

    MAXQ1061/MAXQ1062用于嵌入式设备的DeepCover加密控制器技术手册

    DeepCover®嵌入式安全方案采用多重先进的物理安全机制保护敏感数据,提供最高等级的密钥存储安全保护。 DeepCover加密控制器(MAXQ1061)保护软件IP、通信和盈利模式的保密性、真实性和完整性。它是用于
    的头像 发表于 05-14 10:43 689次阅读

    一文读懂~ 源码开放:Air8101快速实现以太网功能!

    以太网(Ethernet)外设驱动涉及硬件与软件的深度交互,其核心在于通过特定接口连接主处理以太网控制器,实现数据的发送、接收以及数据链
    的头像 发表于 04-01 14:18 522次阅读
    一文读懂~ 源码开放:Air8101快速实现<b class='flag-5'>以太网</b>功能!

    以太网线缆测试解决方案

    工业以太网是指在工业环境的自动化控制及过程控制中应用以太网的相关组件及技术。工业以太网会采用TCP
    的头像 发表于 03-21 14:12 1643次阅读
    <b class='flag-5'>以太网</b>线缆测试解决方案

    汽车以太网的演化进程

    相对落后的日系车,基本上每一辆车都至少会有一个100Mbps汽车以太网网络,通常对应五个设备,即智能驾驶域控制器、座舱域控制器、T-BOX、诊断和网关。
    的头像 发表于 02-07 09:49 2464次阅读
    汽车<b class='flag-5'>以太网</b>的演化进程

    交换机与以太网怎么连接

    在现代网络通信中,交换机和以太网作为构建局域(LAN)的核心组件,其连接方式和配置对于网络的性能和稳定性至关重要。本文旨在深入探讨交换机与以太网
    的头像 发表于 02-02 16:44 2150次阅读

    AN4754-将Microchip桥接控制器与外部以太网PHY搭配使用

    电子发烧友网站提供《AN4754-将Microchip桥接控制器与外部以太网PHY搭配使用.pdf》资料免费下载
    发表于 01-21 13:54 0次下载
    AN4754-将Microchip桥接<b class='flag-5'>控制器</b>与外部<b class='flag-5'>以太网</b>PHY搭配使用

    【新品】嵌入式核心板、4G手机遥控开关、CAN转以太网协议转换

    上新啦!国产嵌入式核心板4G手机遥控开关CAN-Bus转以太网模组一起来看看吧~部分新品还有免费送样文末了解详情↓↓↓ECK31系列全国产嵌入式核心板亿佰特ECK31-T13SA系列核心板是基于全志
    的头像 发表于 01-09 19:33 1147次阅读
    【新品】<b class='flag-5'>嵌入式</b>核心板、4G手机遥控开关、CAN转<b class='flag-5'>以太网</b>协议转换<b class='flag-5'>器</b>

    新思科技推出超以太网与UALink IP解决方案

    高性能计算(HPC)和人工智能(AI)加速对基于标准、高带宽和低延迟互连的迫切需求。 随着超大规模数据中心基础设施的迅猛发展,支持处理大型语言模型中数万亿个参数的能力成为关键。为实现这一目标,数据中心必须扩展到数十万个具有高效快速连接的加速
    的头像 发表于 12-25 11:12 1078次阅读

    新思科技推出业界首款连接大规模AI加速集群的超以太网和UALink IP 解决方案

    控制器、PHY 和验证 IP,以满足对基于标准、高带宽和低延迟 HPC 和 AI 加速互连的需求。超大规模数据中心基础设施正在加速发展,必须扩展到数十万个具有高效快速连接的加速
    发表于 12-20 11:47 747次阅读