精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

有線網(wǎng)卡驅(qū)動和動態(tài)分配IP的詳細說明

嵌入式技術(shù) ? 來源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2022-05-31 17:40 ? 次閱讀

1.W5500簡介

W5500 是一款全硬件 TCP/IP 嵌入式以太網(wǎng)控制器,為嵌入式系統(tǒng)提供了更加簡易的互聯(lián)網(wǎng)連接方案。 W5500 集成了 TCP/IP 協(xié)議棧, 10/100M 以太網(wǎng)數(shù)據(jù)鏈路層(MAC)及物理層(PHY) ,使得用戶使用單芯片就能夠在他們的應(yīng)用中拓展網(wǎng)絡(luò)連接。
久經(jīng)市場考驗的 WIZnet 全硬件 TCP/IP 協(xié)議棧支TCP,UDP,IPv4,ICMP,ARP,IGMP 以及 PPPoE 協(xié)議。 W5500 內(nèi)嵌 32K 字節(jié)片上緩存以供以太網(wǎng)包處理。如果你使用 W5500,你只需要一些簡單的 Socket 編程就能實現(xiàn)以太網(wǎng)應(yīng)用。這將會比其他嵌入式以太網(wǎng)方案更加快捷、簡便。用戶可以同時使用 8 個硬件 Socket 獨立通訊。
W5500 提供了 SPI(外設(shè)串行接口)從而能夠更加容易與外設(shè) MCU 整合。而且,W5500 的使用了新的高效 SPI 協(xié)議支持 80MHz 速率,從而能夠更好的實現(xiàn)高速網(wǎng)絡(luò)通訊。為了減少系統(tǒng)能耗, W5500 提供了網(wǎng)絡(luò)喚醒模式(WOL)及掉電模式供客戶選擇使用。

2.W5500特性

支持硬件 TCP/IP 協(xié)議: TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE

  • 支持 8 個獨立端口(Socket)同時通訊
  • 支持掉電模式
  • 支持網(wǎng)絡(luò)喚醒
  • 支持高速串行外設(shè)接口(SPI 模式 0, 3)
  • 內(nèi)部 32K 字節(jié)收發(fā)緩存
  • 內(nèi)嵌 10BaseT/100BaseTX 以太網(wǎng)物理層( PHY)
  • 支持自動協(xié)商(10/100-Based 全雙工/半雙工)
  • 不支持 IP 分片
  • 3.3V 工作電壓, I/O 信號口 5V 耐壓;
  • LED 狀態(tài)顯示(全雙工/半雙工,網(wǎng)絡(luò)連接,網(wǎng)絡(luò)速度,活動狀態(tài))
  • 48 引腳 LQFP 無鉛封裝(7x7mm, 0.5mm 間距)

3.應(yīng)用場合

  • 家庭網(wǎng)絡(luò)設(shè)備: 機頂盒、個人錄像機、數(shù)碼媒體適配器
  • 串行轉(zhuǎn)以太網(wǎng): 門禁控制、 LED 顯示屏、無線 AP 繼電器等
  • 并行轉(zhuǎn)以太網(wǎng): POS/微型打印機、復(fù)印機
  • USB 轉(zhuǎn)以太網(wǎng): 存儲設(shè)備、網(wǎng)絡(luò)打印機
  • GPIO 轉(zhuǎn)以太網(wǎng): 家庭網(wǎng)絡(luò)傳感器
  • 安全系統(tǒng): 數(shù)字錄像機、網(wǎng)絡(luò)攝像機、信息
  • 工廠和樓宇自動化控制系統(tǒng)
  • 醫(yī)療監(jiān)測設(shè)備
  • 嵌入式服務(wù)器

W5500模塊圖

poYBAGKV4YCAPQeYAAXS4rkfy70626.png

4.接線方式

W5500模塊 STM32核心板
片選CS PB12
時鐘SCLK PB13
主機輸入MISO PB14
主機輸出MOSI PB15
INT PB0
RST PB1

5.SPI底層驅(qū)動編寫

CONFIG_MSG  ConfigMsg;																	/*配置結(jié)構(gòu)體*/
/*定義MAC地址,如果多塊W5500網(wǎng)絡(luò)適配板在同一現(xiàn)場工作,請使用不同的MAC地址*/
uint8 mac[6]={0x00,0x08,0xdc,0x11,0x11,0x11};

/*定義默認(rèn)IP信息*/
uint8 local_ip[4]  ={192,168,1,88};											/*定義W5500默認(rèn)IP地址*/
uint8 subnet[4]    ={255,255,255,0};										/*定義W5500默認(rèn)子網(wǎng)掩碼*/
uint8 gateway[4]   ={192,168,1,1};											/*定義W5500默認(rèn)網(wǎng)關(guān)*/
uint8 dns_server[4]={114,114,114,114};									/*定義W5500默認(rèn)DNS*/

uint16 local_port=5000;	                       					/*定義本地端口*/

/*定義遠端IP信息*/
uint8  remote_ip[4]={192,168,1,102};										/*遠端IP地址*/
uint16 remote_port=5000;																/*遠端端口號*/

/*IP配置方法選擇,請自行選擇*/
uint8	ip_from=IP_FROM_DHCP;				

uint8   dhcp_ok   = 0;																	/*dhcp成功獲取IP*/
uint32	ms        = 0;																	/*毫秒計數(shù)*/
uint32	dhcp_time = 0;																	/*DHCP運行計數(shù)*/
vu8	    ntptimer  = 0;																	/*NPT秒計數(shù)*/
/*硬件配置*/
void W5500_GPIO_Init(void)
{
  RCC->APB2ENR|=1<<3;
  GPIOB->CRH&=0x0000FFFF;
  GPIOB->CRH|=0x38330000;
  GPIOB->CRL&=0xFFFFFF00;
  GPIOB->CRL|=0x00000038;
  W5500_CS=1;
  W5500_RST=1;
}
/*模塊復(fù)位*/
void W5500_reset(void)
{
  W5500_RST=0;
  Delay_Us(2);
  W5500_RST=1;
  Delay_Ms(1000);
  Delay_Ms(600);
}
/*SPI讀寫一個字節(jié)*/
u8 SPI_WR_Byte(u8 byte)
{
  u8 data_rx=0;
  u8 i=0;
  for(i=0;i<8;i++)
  {
    W5500_SCLK=0;
    if(byte&0x80)W5500_MOSI=1;
    else W5500_MOSI=0;
    W5500_SCLK=1;
    byte<<=1;
    
    data_rx<<=1;
    if(W5500_MISO)data_rx|=0x01;
  }
  W5500_SCLK=0;
  return data_rx;
}
/*W5500底層收發(fā)一個字節(jié)*/
static u8 IINCHIP_SpiSendData(u8 dat)
{
   return(SPI_WR_Byte(dat));
}
/*向指定地址寫入一字節(jié)數(shù)據(jù)*/
void IINCHIP_WRITE( u32 addrbsb,  u8 data)
{
  W5500_CS=0;
  IINCHIP_SpiSendData( (addrbsb & 0x00FF0000)>>16);	
  IINCHIP_SpiSendData( (addrbsb & 0x0000FF00)>> 8);
  IINCHIP_SpiSendData( (addrbsb & 0x000000F8) + 4);  
  IINCHIP_SpiSendData(data); 
  W5500_CS=1;
}
/*從地址讀取讀取一字節(jié)數(shù)據(jù)*/
u8 IINCHIP_READ(u32 addrbsb)
{
  u8 data = 0;
  W5500_CS=0;
  IINCHIP_SpiSendData( (addrbsb & 0x00FF0000)>>16);
  IINCHIP_SpiSendData( (addrbsb & 0x0000FF00)>> 8);
  IINCHIP_SpiSendData( (addrbsb & 0x000000F8))    ;
  data = IINCHIP_SpiSendData(0x00); 
  W5500_CS=1;
  return data;
}
/*
向W5500指定地址寫入指定長度數(shù)據(jù)
形參:addrbsb  -- 寫入的地址
	 buf  -- 要寫入的數(shù)據(jù)
	 len  -- 寫入的長度
返回值:寫入的數(shù)據(jù)長度
*/
u16 wiz_write_buf(u32 addrbsb,u8* buf,u16 len)
{
  u16 idx = 0;
  if(len == 0) printf("êy?Y3¤?è?a0\r\n");
  W5500_CS=0;
  IINCHIP_SpiSendData( (addrbsb & 0x00FF0000)>>16);
  IINCHIP_SpiSendData( (addrbsb & 0x0000FF00)>> 8);
  IINCHIP_SpiSendData( (addrbsb & 0x000000F8) + 4);
  for(idx = 0; idx < len; idx++)
   {
     IINCHIP_SpiSendData(buf[idx]);
   }
   W5500_CS=1;                          
   return len;   
}
/*
從指定地址讀取指定長度數(shù)據(jù)
形參:addrbsb  -- 讀取的地址
	 buf  -- 讀取的數(shù)據(jù)保存地址
	 len  -- 讀取的長度
返回值:讀取的數(shù)據(jù)長度 
*/
u16 wiz_read_buf(u32 addrbsb, u8* buf,u16 len)
{
  u16 idx = 0;
  W5500_CS=0;
  IINCHIP_SpiSendData( (addrbsb & 0x00FF0000)>>16);
  IINCHIP_SpiSendData( (addrbsb & 0x0000FF00)>> 8);
  IINCHIP_SpiSendData( (addrbsb & 0x000000F8)); 
  for(idx = 0; idx < len; idx++)                   
  {
    buf[idx] = IINCHIP_SpiSendData(0x00);
  }  
  W5500_CS=1;
  return len;
}
/*DHCP用到定時器初始化*/
void dhcp_timer_init(void)
{
  TIMx_Init(TIM3,72,1000);
  TIM3->CR1|=1<<0;
}
/*ntp用到定時器出事化*/
void ntp_timer_init(void)
{
  TIMx_Init(TIM3,72,1000);												
}
/*中斷處理函數(shù)*/
void timer3_isr(void)
{
  ms++;	
  if(ms>=1000)
  {  
    ms=0;
    dhcp_time++;	/*DHCP定時+1S*/
    #ifndef	__NTP_H__
	  ntptimer++;	/*NTP重試時間+1s*/
    #endif
  }  
}
/*配置W5500網(wǎng)卡信息*/
void set_w5500_ip(void)
{
  /*復(fù)制定義的配置信息到配置結(jié)構(gòu)體*/
	memcpy(ConfigMsg.mac, mac, 6);//MAC地址
  memcpy(ConfigMsg.lip,local_ip,4);//IP
  memcpy(ConfigMsg.sub,subnet,4);//子網(wǎng)掩碼
  memcpy(ConfigMsg.gw,gateway,4);//網(wǎng)關(guān)
  memcpy(ConfigMsg.dns,dns_server,4);//DNS
  
  
  if(ip_from == IP_FROM_DHCP)/*動態(tài)獲取IP*/
  {
    if(dhcp_ok==1)/*動態(tài)獲取IP成功*/
    {
      printf(" IP from DHCP\r\n");		 
			memcpy(ConfigMsg.lip,DHCP_GET.lip, 4);
			memcpy(ConfigMsg.sub,DHCP_GET.sub, 4);
			memcpy(ConfigMsg.gw,DHCP_GET.gw, 4);
			memcpy(ConfigMsg.dns,DHCP_GET.dns,4);
    }
  }
  
  /*將IP配置信息寫入W5500相應(yīng)寄存器*/	
	setSUBR(ConfigMsg.sub);
	setGAR(ConfigMsg.gw);
	setSIPR(ConfigMsg.lip);
  /*判斷數(shù)據(jù)是否寫入成功*/
	getSIPR (local_ip);			
	printf(" W5500 IP地址   : %d.%d.%d.%d\r\n", local_ip[0],local_ip[1],local_ip[2],local_ip[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]);  
}
//配置W5500的MAC地址
void set_w5500_mac(void)
{
	memcpy(ConfigMsg.mac, mac, 6);
	setSHAR(ConfigMsg.mac);	
	memcpy(DHCP_GET.mac, mac, 6);
}

W5500初始化,動態(tài)IP分配

#include "stm32f10x.h"
#include "usart.h"
#include "timer.h"
#include "w5500_config.h"
#include "socket.h"
#include "w5500.h"
#include "dhcp.h"
int main()
{
  USART1_Init(115200);
  printf("W5500 SPI模擬時序,動態(tài)分配IP VER1.0 \r\n");
  W5500_GPIO_Init();/*w5500_GPIO初始化*/
  W5500_reset();//硬件復(fù)位w5500
  set_w5500_mac();/*配置MAC地址*/
  socket_buf_init(txsize, rxsize);		/*初始化8個Socket的發(fā)送接收緩存大小*/
  printf("網(wǎng)絡(luò)初始化完成\r\n");
  while(1)
  {
    do_dhcp();/*DHCP測試程序*/
  }
}

W5500底層寄存器配置文件w5500.c;socket編程相關(guān)函數(shù)文件socket.c、w5500延時函數(shù)、數(shù)據(jù)格式轉(zhuǎn)換文件utility.c;動態(tài)分配IP函數(shù)接口文件dhcp.c這些文件移植可參考示例代碼或參考官方示例工程。

6.效果展示

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASVRf6Zi_5rC0,size_20,color_FFFFFF,t_70,g_se,x_16#pic_centerpoYBAGKV4mKAH1tmAAGchgToQNM793.png

審核編輯:符乾江

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • IP
    IP
    +關(guān)注

    關(guān)注

    5

    文章

    1658

    瀏覽量

    149334
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1701

    瀏覽量

    91333
  • 動態(tài)分配
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    9727
收藏 人收藏

    評論

    相關(guān)推薦

    深入解析:住宅靜態(tài)IP動態(tài)IP的區(qū)別

    住宅靜態(tài)IP動態(tài)IP是兩種不同類型的IP分配方式,它們在多個方面存在顯著差異。
    的頭像 發(fā)表于 11-20 08:37 ?125次閱讀

    住宅動態(tài)IP解析:優(yōu)勢、應(yīng)用場景與未來趨勢

    住宅動態(tài)IP是指由互聯(lián)網(wǎng)服務(wù)提供商(ISP)分配給家庭用戶的、能夠隨時間自動更換的IP地址。
    的頭像 發(fā)表于 10-21 08:07 ?154次閱讀

    安全暢游世界:動態(tài)分配海外住宅IP,保護隱私與加速網(wǎng)絡(luò)訪問

    在數(shù)字化時代,互聯(lián)網(wǎng)已成為人們獲取信息、交流思想、開展業(yè)務(wù)的重要平臺。然而,隨著網(wǎng)絡(luò)環(huán)境的日益復(fù)雜,網(wǎng)絡(luò)安全與隱私保護問題日益凸顯。動態(tài)分配海外住宅IP作為一種先進的網(wǎng)絡(luò)工具,為用戶提供了在全球范圍內(nèi)安全暢游的可能性。
    的頭像 發(fā)表于 09-26 08:13 ?203次閱讀

    【龍芯2K0300蜂鳥板試用】tinnu-02-有線網(wǎng)卡驅(qū)動問題導(dǎo)致的SSH連接問題

    SSH2_MSG_KEX_ECDH_INIT 等待的問題,我生出一個大膽的想法: 會不會是網(wǎng)卡本身有問題? 由于一開始ping都是正常的,沒往這邊想,于是我換了路由器、掛了USB網(wǎng)卡,設(shè)置靜態(tài)IP全部試過,都不行。 又試了試
    發(fā)表于 08-11 23:57

    IP地址的分配

    公有IP地址與私有IP地址 公有IP地址:用于互聯(lián)網(wǎng)上的全球唯一地址,由互聯(lián)網(wǎng)號碼分配機構(gòu)(IANA)和區(qū)域互聯(lián)網(wǎng)注冊機構(gòu)(RIR)分配。比
    的頭像 發(fā)表于 08-09 14:55 ?486次閱讀

    有線網(wǎng)卡和無線網(wǎng)卡分別指的是什么

    有線網(wǎng)卡和無線網(wǎng)卡是計算機或網(wǎng)絡(luò)設(shè)備中用于連接網(wǎng)絡(luò)的兩種不同類型的網(wǎng)絡(luò)接口卡。它們的主要區(qū)別在于傳輸媒介和連接方式。
    的頭像 發(fā)表于 05-28 15:28 ?3287次閱讀

    3KW工業(yè)變頻器電路設(shè)計方案詳細說明

    3KW工業(yè)變頻器電路設(shè)計方案詳細說明
    的頭像 發(fā)表于 03-19 08:33 ?881次閱讀
    3KW工業(yè)變頻器電路設(shè)計方案<b class='flag-5'>詳細說明</b>

    Intel近日發(fā)布新版Wi-Fi 7無線網(wǎng)卡驅(qū)動 依然和AMD系統(tǒng)不對付

    Intel近日發(fā)布了新版Wi-Fi 7無線網(wǎng)卡驅(qū)動,增加新功能,修復(fù)已知Bug,但遺憾的是,依然和AMD系統(tǒng)不對付。
    的頭像 發(fā)表于 03-04 15:29 ?1000次閱讀

    線網(wǎng)卡驅(qū)動怎么安裝 無線網(wǎng)卡怎么連接臺式電腦

    如今,隨著科技的不斷發(fā)展,無線網(wǎng)絡(luò)已經(jīng)成為了我們生活中不可或缺的一部分。對于臺式電腦用戶而言,如果沒有內(nèi)置無線網(wǎng)卡,就需要通過安裝外置無線網(wǎng)卡來連接無線網(wǎng)絡(luò)。本文將
    的頭像 發(fā)表于 01-19 09:54 ?3120次閱讀

    什么是無線網(wǎng)卡?它是如何工作的?如何安裝無線網(wǎng)卡

    什么是無線網(wǎng)卡?它是如何工作的?如何安裝無線網(wǎng)卡? 無線網(wǎng)卡(無線適配器)是一種設(shè)備,用于使計算機或其他設(shè)備能夠連接到無線局域網(wǎng)(WLAN)。在沒有無線網(wǎng)卡的情況下,設(shè)備只能通過
    的頭像 發(fā)表于 12-15 09:58 ?1641次閱讀

    線網(wǎng)卡槽位有哪些種類及其優(yōu)勢介紹

    線網(wǎng)卡槽位有哪些種類及其優(yōu)勢介紹 無線網(wǎng)卡是一種用于連接電腦或其他設(shè)備與無線網(wǎng)絡(luò)的硬件設(shè)備。它通常插入到計算機內(nèi)部的擴展槽位上,以提供無線連接功能。現(xiàn)在市場上有多種類型的無線網(wǎng)卡槽位
    的頭像 發(fā)表于 12-15 09:58 ?1225次閱讀

    選擇無線網(wǎng)卡的原則和方法

    選擇無線網(wǎng)卡的原則和方法 無線網(wǎng)卡是一種用于連接電腦或其他設(shè)備與無線網(wǎng)絡(luò)的設(shè)備,它可以通過Wi-Fi信號接收和發(fā)送數(shù)據(jù)。隨著無線網(wǎng)絡(luò)的廣泛應(yīng)用,選擇一款合適的無
    的頭像 發(fā)表于 12-11 11:38 ?1138次閱讀

    線網(wǎng)IP靜態(tài)好還是DHCP好

    靜態(tài)IP動態(tài)主機配置協(xié)議(DHCP)是兩種不同的IP地址分配方法。每種方法都有其優(yōu)點和適用場景,選擇哪種方法取決于您的具體需求和網(wǎng)絡(luò)環(huán)境。下面將
    的頭像 發(fā)表于 11-27 15:03 ?1.7w次閱讀

    網(wǎng)絡(luò)靜態(tài)ip動態(tài)區(qū)別

    網(wǎng)絡(luò)靜態(tài)IP動態(tài)IP是指在網(wǎng)絡(luò)中分配給設(shè)備的唯一標(biāo)識符,下面將詳細探討網(wǎng)絡(luò)靜態(tài)IP
    的頭像 發(fā)表于 11-27 14:46 ?1394次閱讀

    靜態(tài)IP動態(tài)IP的區(qū)別

    靜態(tài)IP動態(tài)IP是計算機網(wǎng)絡(luò)中常用的兩種IP地址分配方式,它們在分配方式、使用范圍、安全性和適
    的頭像 發(fā)表于 11-27 14:44 ?3780次閱讀