w5100的使用


2010年11月23日 星期二 12:13
前几天从淘宝买了个w5100模块,学习了一下。这个芯片真的不错,集成了硬件tcp/ip协议栈。操作很简单,主要是通过spi接口(当然也支持并口总线操作)配置网络的相关ip 掩码 物理地址 之类的值。

     参数配置好后,就是读写通讯的内容,w5100有个中断引脚来指示通讯的完成,我们通过在中断到来之后读取状态值,就会知道是那个端口的中断,以此来进行相关数据解析。

     w5100初始化程序:

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
w5100驱动程序。 /* * (c)COPYRIGHT * ALL RIGHT RESERVED * * FileName : main.c * Brief : source codes for W5100E01-AVR * This code is optimized at AVR-GCC 4.3.2(20081118). * Revision History : * ---------- ------- ------------------------------------------------ * Date version Description * ---------- ------- ------------------------------------------------ * 03/28/2007 1.0.0.0 Release version * ---------- ------- ------------------------------------------------ * 01/08/2008 1.1.0.0 Check if W5100 register and EEPROM are the same value * before displaying network information. Changed W5100 Driver(v1.2). Removed WinAVR-20050214 codes(UART). Changed check_leaseIP() function in DHCP.C. * ---------- ------- ------------------------------------------------ * 11/21/2008 1.2.0.0 optimized at Compiler WinAVR 20081118rc2 version Changed wait_1us() function delay.c Changed lcd_ready() function in lcd.c * ---------- ------- ------------------------------------------------ */ #include <string.h> #include "../util/myprintf.h" #include "../mcu/types.h" #include "../mcu/timer.h" #include "../mcu/delay.h" #include "../mcu/serial.h" #include "../iinchip/socket.h" #include "../iinchip/w5100.h" //for debug 2008.02.20 #include "../evb/lcd.h" #include "../evb/evb.h" #include "../evb/manage.h" #include "../evb/channel.h" #include "../evb/config.h" #include "../inet/dhcp.h" #include "../app/webserver.h" #include "../app/loopback.h" #include "../app/ping_app.h" extern CHANNELHANDLER ChannelHandler[MAX_SOCK_NUM]; extern NETCONF NetConf; extern CHCONF ChConf; extern u_char SRC_MAC_ADDR[6]; /**< Source MAC Address */ extern u_char GET_SN_MASK[4]; /**< Subnet mask received from the DHCP server */ extern u_char GET_GW_IP[4]; /**< Gateway IP address received from the DHCP server */ extern u_char GET_DNS_IP[4]; /**< DNS server IP address received from the DHCP server */ extern u_char GET_SIP[4]; /**< Leased source IP address received from the DHCP server */ extern char uart0_getchar(FILE *f); /** @mainpage W5100 Firmware Source @section intro Introduction - Introduction : @section CREATEINFO Author - author : wiznet co. - Released date : 2006.12.20 - Last Updated date : 2008. 11. 21 */ int main(void) { u_char key; SOCKET i; evb_init(); check_manage(); /* administration mode check */ init_timer(); for (i = 0; i < MAX_SOCK_NUM; i++) { switch(ChConf.ch[i].type) { case NOTUSE: unregister_channel_handler(i); break; case DHCP_CLIENT: PRINTLN1("%d : DHCP Client Start.",i); evb_set_lcd_text(0,(u_char*)"< DHCP CLIENT >"); evb_set_lcd_text(1,(u_char*)" Wait a minute "); get_netconf(&NetConf); memcpy(SRC_MAC_ADDR,NetConf.mac,6); init_dhcp_client(i, evb_soft_reset,evb_soft_reset); if(!getIP_DHCPS()) { evb_set_lcd_text(1,(u_char*)" Fail to get IP "); PRINTLN("Fail to get a IP adress from DHCP server"); PRINTLN("Apply the default network information!!!"); ChConf.ch[i].type = NOTUSE; // Disable DHCPC; unregister_channel_handler(i); wait_10ms(100); } else { NetConf.sip = *((u_long*)GET_SIP); NetConf.gwip = *((u_long*)GET_GW_IP); NetConf.sn = *((u_long*)GET_SN_MASK); NetConf.dns = *((u_long*)GET_DNS_IP); PRINTLN("Get network information from DHCP Server..."); register_channel_handler(i,check_DHCP_state); } set_netconf(&NetConf); break; case LB_TCPS: register_channel_handler(i,loopback_tcps); break; case LB_TCPC: register_channel_handler(i,loopback_tcpc); break; case LB_UDP: register_channel_handler(i,loopback_udp); break; case WEB_SERVER: register_channel_handler(i,web_server); break; } } net_init(); evb_logo(); while (1) { for (i = 0 ; i < MAX_SOCK_NUM ; i++ ) if(ChannelHandler[i].Handler) (*ChannelHandler[i].Handler)(i); //for ISR test if(uart_keyhit(0)) { key = uart0_getchar(NULL); if(key == 'c') { for(i=0;i<4;i++) IINCHIP_WRITE(Sn_IR(i), 0xFF); IINCHIP_WRITE(IR, 0xFF); PRINTLN("all interrupt register cleared!!!!"); } } } }
W5100S是一款集成网络控制器的芯片,它能够方便地连接到以太网上。下面是关于W5100S使用教程的一些基本步骤和注意事项: 1. 连接硬件:将W5100S芯片正确地连接到单片机或者Arduino开发板上。确保连接正确,包括VCC、GND、以太网接口等。 2. 初始化:在开始使用W5100S之前,需要对其进行一些初始化设置。首先,设置合适的IP地址、子网掩码和网关地址。其次,为W5100S分配一个Socket(套接字)号码,它用于区分不同的连接。还可以设置端口号、串口速率等。 3. 创建连接:使用W5100S创建一个与目标主机的连接。这可以通过设置目标主机的IP地址和端口号来实现。确保目标主机是可达的并且正在运行。 4. 数据传输:使用W5100S进行数据传输的方法是使用Socket进行读写。可以将数据从本地主机发送到远程主机,也可以从远程主机接收数据。确保数据的正确传输和接收。 5. 错误处理:在使用W5100S时,可能会遇到各种错误情况,比如连接失败、网络断开等。及时处理这些错误情况,可以使用相关的错误码来进行判断和处理。 6. 资源释放:在不使用W5100S时,需要正确地释放相关的资源。关闭所有的连接,并释放相关的内存等资源。 总之,W5100S的使用教程包括初始化设置、连接建立、数据传输和错误处理等步骤。通过这些步骤,可以实现W5100S与以太网的交互,并进行数据的传输和接收。请务必遵循相关的操作规范和注意事项,以确保操作的正确和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值