1.W5500簡(jiǎn)介
W5500 是一款全硬件 TCP/IP 嵌入式以太網(wǎng)控制器,為嵌入式系統(tǒng)提供了更加簡(jiǎn)易的互聯(lián)網(wǎng)連接方案。 W5500 集成了 TCP/IP 協(xié)議棧, 10/100M 以太網(wǎng)數(shù)據(jù)鏈路層(MAC)及物理層(PHY) ,使得用戶使用單芯片就能夠在他們的應(yīng)用中拓展網(wǎng)絡(luò)連接。
久經(jīng)市場(chǎng)考驗(yàn)的 WIZnet 全硬件 TCP/IP 協(xié)議棧支TCP,UDP,IPv4,ICMP,ARP,IGMP 以及 PPPoE 協(xié)議。 W5500 內(nèi)嵌 32K 字節(jié)片上緩存以供以太網(wǎng)包處理。如果你使用 W5500,你只需要一些簡(jiǎn)單的 Socket 編程就能實(shí)現(xiàn)以太網(wǎng)應(yīng)用。這將會(huì)比其他嵌入式以太網(wǎng)方案更加快捷、簡(jiǎn)便。用戶可以同時(shí)使用 8 個(gè)硬件 Socket 獨(dú)立通訊。
W5500 提供了 SPI(外設(shè)串行接口)從而能夠更加容易與外設(shè) MCU 整合。而且,W5500 的使用了新的高效 SPI 協(xié)議支持 80MHz 速率,從而能夠更好的實(shí)現(xiàn)高速網(wǎng)絡(luò)通訊。為了減少系統(tǒng)能耗, W5500 提供了網(wǎng)絡(luò)喚醒模式(WOL)及掉電模式供客戶選擇使用。
2.W5500底層驅(qū)動(dòng)編寫(xiě)與移植
W5500底層底層驅(qū)動(dòng)移植參考示例:http://ttokpm.com/d/1843264.html?track_id=myCenter&mod=article&share
STM32連接騰訊云參考示例:http://ttokpm.com/d/1842055.html?track_id=myCenter&mod=article&share
騰訊物聯(lián)網(wǎng)絡(luò)平臺(tái)連接
#include "stm32f10x.h"
#include "usart.h"
#include "timer.h"
#include "aliyun_mqtt.h"
/*w5500相關(guān)頭文件*/
#include "w5500api.h"
#include "dhcp.h"
#include "dns.h"
#define SERVER_IP "LA57WTHWL6.iotcloud.tencentdevices.com"http://服務(wù)器IP
#define SERVER_PORT 1883 //端口號(hào)
//客戶端ID:{產(chǎn)品ID}{設(shè)備名}
#define ClientID "LA57WTHWL6Smart_home"
//用戶名和密碼可使用密碼生成工具完成
#define Username "LA57WTHWL2Smart_home;120310126;HK8V9;1635948714"
#define Password "2a915cae4489b591ce556e71f4e9f1ka21c354a37d12fee7c46f56abee1f048a;hmacsha256"http://密文
//訂閱題:$thing/down/property/{ProductID}/{DeviceName} ---{ProductID}產(chǎn)品ID,{DeviceName}設(shè)備名
#define SET_TOPIC "$thing/down/property/Lb57WTHWL3/Smart_home"http://訂閱
//發(fā)布主題:$thing/up/property/{ProductID}/{DeviceName}
#define POST_TOPIC "$thing/up/property/Lb57WTHWL3/Smart_home"http://發(fā)布
char mqtt_message[200];//上報(bào)數(shù)據(jù)緩存區(qū)
u8 rx_buff[200];
void init_Net(void)
{
u8 try_times=0;
init_W5500();/*W5500初始化*/
init_dhcp_client();//動(dòng)態(tài)分配IP
while(check_DHCP_state(SOCK_DHCP)!=DHCP_RET_UPDATE)
{
try_times++;
if(try_times==255)//超時(shí) 重啟芯片
{
Reset_W5500();
init_dhcp_client();
try_times=0;
}
delay_ms(10);
}
while(!set_Network());
/*判斷數(shù)據(jù)是否寫(xiě)入成功*/
u8 ipaddr[4];//ip地址
u8 subnet[4];//子網(wǎng)掩碼
u8 gateway[4];//網(wǎng)關(guān)
getSIPR (ipaddr);
printf(" W5500 IP地址 : %d.%d.%d.%d\r\n", ipaddr[0],ipaddr[1],ipaddr[2],ipaddr[3]);
getSUBR(subnet);
printf(" W5500 子網(wǎng)掩碼 : %d.%d.%d.%d\r\n", subnet[0],subnet[1],subnet[2],subnet[3]);
getGAR(gateway);
printf(" W5500 網(wǎng)關(guān) : %d.%d.%d.%d\r\n", gateway[0],gateway[1],gateway[2],gateway[3]);
}
/*連接服務(wù)器*/
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);/*連接服務(wù)器*/
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模擬時(shí)序寄存器版,連接騰訊云VER1.0 \r\n");
init_Net();/*W5500硬件初始化,動(dòng)態(tài)分配IP*/
printf("W5500 硬件初始化成功\r\n");
while(!do_dns((u8 *)SERVER_IP)){}/*域名解析*/
while(1)
{
stat=TCP_Connect(MQTT_SOCK,NET_CONFIG.rip,1883,5500);/*連接服務(wù)器*/
printf("stat=%d\r\n",stat);
if(stat)break;
delay_ms(1000);
}
printf("騰訊物聯(lián)網(wǎng)平臺(tái)連接中....\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("騰訊云平臺(tái)連接成功\r\n");
break;
}
}
}
stat=MQTT_SubscribeTopic(SET_TOPIC,0,1);
if(stat)printf("訂閱失敗\r\n");
while(1)
{
/*接收數(shù)據(jù)*/
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();//發(fā)送心跳包
}
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.運(yùn)行效果
審核編輯:符乾江
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2902文章
44122瀏覽量
370429 -
騰訊云
+關(guān)注
關(guān)注
0文章
207瀏覽量
16750
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論