久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
w5500 dhcp優化版+udp nrf52832程序源碼 M4內核芯片
[打印本頁]
作者:
f78fk
時間:
2019-1-8 11:09
標題:
w5500 dhcp優化版+udp nrf52832程序源碼 M4內核芯片
用官網W5500庫版本的DHCP例子 申請10次會有5次 獲取不到IP 卡在了
discover步驟,
經過優化,現在自測了50多遍,100%可以申請到IP。
主控用的nrf52832 cortex m4內核 硬件spi
SDK為nRF_SDK_15.2.0
把解壓后的目錄放nRF_SDK_15.2.0\examples\ble_central下編譯就可以成功。
代碼預覽
#include "ethernet.h"
#include "dhcp.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define SOCK_TCPS 0
/* Private macro -------------------------------------------------------------*/
uint8_t gSEND_BUFF[SEND_BUFF_SIZE];
// Default Network Configuration
wiz_NetInfo gWIZNETINFO = { .mac = {0x00, 0x02, 0x04,0x06, 0x08, 0x10},
.ip = {192,168,1,2 },
.sn = {255,255,2555,0},
.gw = {0, 0, 0, 0},
.dns = {1,2,4,8},
.dhcp = NETINFO_DHCP };
void network_init(void);
void set_macaddr(void)
{
gWIZNETINFO.mac[0] = (uint8_t )(NRF_FICR->DEVICEADDR[0]);
gWIZNETINFO.mac[1] = (uint8_t )(NRF_FICR->DEVICEADDR[0]>>8);
gWIZNETINFO.mac[2] = (uint8_t )(NRF_FICR->DEVICEADDR[0]>>16);
gWIZNETINFO.mac[3] = (uint8_t )(NRF_FICR->DEVICEADDR[0]>>24);
gWIZNETINFO.mac[4] = (uint8_t )(NRF_FICR->DEVICEADDR[1]);
gWIZNETINFO.mac[5] = (uint8_t )(NRF_FICR->DEVICEADDR[1]>>8);
}
uint8_t DHCP_message[128];
void ethernet_init(void)
{
uint8_t tmp;
uint8_t memsize[2][8] = {{2,2,2,2,2,2,2,2},{2,2,2,2,2,2,2,2}};
SPI_Configuration();
memset((char *)gSEND_BUFF,0,SEND_BUFF_SIZE);
reg_wizchip_cris_cbfunc(SPI_CrisEnter, SPI_CrisExit); //注冊臨界區函數
/* Chip selection call back */
#if _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_VDM_
reg_wizchip_cs_cbfunc(SPI_CS_Select, SPI_CS_Deselect);//注冊SPI片選信號函數
#elif _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_FDM_
reg_wizchip_cs_cbfunc(SPI_CS_Select, SPI_CS_Deselect); // CS must be tried with LOW.
#else
#if (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SIP_) != _WIZCHIP_IO_MODE_SIP_
#error "Unknown _WIZCHIP_IO_MODE_"
#else
reg_wizchip_cs_cbfunc(wizchip_select, wizchip_deselect);
#endif
#endif
/* SPI Read & Write callback function */
reg_wizchip_spi_cbfunc(SPI_ReadByte, SPI_WriteByte); //注冊讀寫函數
/* WIZCHIP SOCKET Buffer initialize */
if(ctlwizchip(CW_INIT_WIZCHIP,(void*)memsize) == -1){
while(1)
{
NRF_LOG_DEBUG("WIZCHIP Initialized fail.\r\n");
nrf_delay_ms(500);
}
}
NRF_LOG_DEBUG("WIZCHIP Initialized Successful.\r\n");
/* PHY link status check */
do{
if(ctlwizchip(CW_GET_PHYLINK, (void*)&tmp) == -1)
{
NRF_LOG_DEBUG("Unknown PHY Link stauts.\r\n");
}
}while(tmp == PHY_LINK_OFF);
NRF_LOG_DEBUG("phy running.\n");
set_macaddr();
memset(DHCP_message,0,128);
DHCP_init(0,DHCP_message);
/* Network initialization */
network_init();
}
void show_netinfo(void);
void ethernet_handle(void)
{
uint8_t dhcp_res;
dhcp_res = DHCP_run();
if(dhcp_res != DHCP_IP_LEASED)
{
NRF_LOG_INFO("DHCP_run... 返回值:%d\n",dhcp_res);
nrf_delay_ms(1000);
return;
}
static uint8_t temp = 0;
if(temp == 0)
{
NRF_LOG_INFO("DHCP成功申請到IP地址\n");
show_netinfo();
temp = 1;
}
switch(getSn_SR(0))
{
case SOCK_UDP:
if(getSn_IR(0) & Sn_IR_RECV)
{
setSn_IR(0, Sn_IR_RECV);
}
#if 0
if((ret=getSn_RX_RSR(0))>0)
{
memset(gDATABUF,0,ret+1);
recvfrom(0,gDATABUF, ret, DstIP,&DstPort);
NRF_LOG_DEBUG("%s\r\n",gDATABUF);
sendto(0,gDATABUF,ret, DstIP, DstPort);
}
#endif
break;
case SOCK_CLOSED: // Socket處于關閉狀態
socket(0,Sn_MR_UDP,UDP_LOCAL_PORT,0x00); // 打開Socket0,并配置為UDP模式,打開一個本地端口
break;
}
}
void show_netinfo(void)
{
uint8_t tmpstr[6];
ctlnetwork(CN_GET_NETINFO, (void*)&gWIZNETINFO);
// Display Network Information
ctlwizchip(CW_GET_ID,(void*)tmpstr);
NRF_LOG_INFO("=== %s NET CONF ===\r\n",(char*)tmpstr);
NRF_LOG_INFO("MAC: %02X:%02X:%02X:%02X:%02X:%02X\r\n",gWIZNETINFO.mac[0],gWIZNETINFO.mac[1],gWIZNETINFO.mac[2],
gWIZNETINFO.mac[3],gWIZNETINFO.mac[4],gWIZNETINFO.mac[5]);
NRF_LOG_INFO("SIP: %d.%d.%d.%d\r\n", gWIZNETINFO.ip[0],gWIZNETINFO.ip[1],gWIZNETINFO.ip[2],gWIZNETINFO.ip[3]);
NRF_LOG_INFO("GAR: %d.%d.%d.%d\r\n", gWIZNETINFO.gw[0],gWIZNETINFO.gw[1],gWIZNETINFO.gw[2],gWIZNETINFO.gw[3]);
NRF_LOG_INFO("SUB: %d.%d.%d.%d\r\n", gWIZNETINFO.sn[0],gWIZNETINFO.sn[1],gWIZNETINFO.sn[2],gWIZNETINFO.sn[3]);
NRF_LOG_INFO("DNS: %d.%d.%d.%d\r\n", gWIZNETINFO.dns[0],gWIZNETINFO.dns[1],gWIZNETINFO.dns[2],gWIZNETINFO.dns[3]);
NRF_LOG_INFO("======================\r\n");
}
void network_init(void)
{
ctlnetwork(CN_SET_NETINFO, (void*)&gWIZNETINFO);
}
復制代碼
0.png
(40.36 KB, 下載次數: 80)
下載附件
2019-1-8 15:14 上傳
SDK為nRF_SDK_15.2.0
把解壓后的目錄放nRF_SDK_15.2.0\examples\ble_central下編譯就可以成功。
iar的工程(沒裝iar的鞋童就不要下載了):
w5500_dhcp_udp.7z
(342.93 KB, 下載次數: 82)
2019-1-8 15:16 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
nickhan110
時間:
2019-9-5 14:16
不錯,很實用。謝謝
作者:
nickhan110
時間:
2019-9-5 14:16
很好的資料。
作者:
onono
時間:
2021-3-5 11:05
正在學習nRF52832,謝謝分享。
作者:
sz_tony
時間:
2021-12-15 11:42
樓主 不能編譯呀
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产精品久久国产精品99 gif
|
日韩一区二区三区在线播放
|
91超碰在线
|
午夜影院在线观看
|
91欧美激情一区二区三区成人
|
黄色一级片在线播放
|
超碰地址
|
免费看片在线播放
|
国产99热在线
|
日本一二区视频
|
国产成人叼嘿视频在线观看
|
亚洲一区二区三区在线观看免费
|
中文字幕久久精品
|
国产精品国产精品国产专区不卡
|
黑人精品
|
国产精品成人久久久久a级 久久蜜桃av一区二区天堂
|
韩国av一区二区
|
日韩精品成人一区二区三区视频
|
欧美一级一
|
色婷婷久久
|
久久国产欧美日韩精品
|
久久一区二区三区电影
|
黄视频国产
|
国产一区电影
|
国产精品一区二区在线
|
日韩在线免费播放
|
亚洲一区
|
久久精品福利视频
|
亚洲欧美视频
|
欧美精品乱码久久久久久按摩
|
日日干干
|
午夜视频免费网站
|
国产黄色av网站
|
欧美成人精品一区二区三区
|
国产精品69毛片高清亚洲
|
日本韩国电影免费观看
|
www.亚洲一区
|
正在播放亚洲
|
91精品国产色综合久久
|
日韩精品中文字幕在线
|
91久久视频
|