单芯片解决方案,开启全新体验——W55MH32 高性能以太网单片机
W55MH32是WIZnet重磅推出的高性能以太网单片机,它为用户带来前所未有的集成化体验。这颗芯片将强大的组件集于一身,具体来说,一颗W55MH32内置高性能Arm® Cortex-M3核心,其主频最高可达216MHz;配备1024KB FLASH与96KB SRAM,满足存储与数据处理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP协议栈、内置MAC以及PHY,拥有独立的32KB以太网收发缓存,可供8个独立硬件socket使用。如此配置,真正实现了All-in-One解决方案,为开发者提供极大便利。
在封装规格上,W55MH32提供了两种选择:QFN100和QFN68。
W55MH32L采用QFN100封装版本,尺寸为12x12mm,其资源丰富,专为各种复杂工控场景设计。它拥有66个GPIO、3个ADC、12通道DMA、17个定时器、2个I2C、5个串口、2个SPI接口(其中1个带I2S接口复用)、1个CAN、1个USB2.0以及1个SDIO接口。如此丰富的外设资源,能够轻松应对工业控制中多样化的连接需求,无论是与各类传感器、执行器的通信,还是对复杂工业协议的支持,都能游刃有余,成为复杂工控领域的理想选择。同系列还有QFN68封装的W55MH32Q版本,该版本体积更小,仅为8x8mm,成本低,适合集成度高的网关模组等场景,软件使用方法一致。更多信息和资料请进入http://www.w5500.com/网站或者私信获取。
此外,本W55MH32支持硬件加密算法单元,WIZnet还推出TOE+SSL应用,涵盖TCP SSL、HTTP SSL以及 MQTT SSL等,为网络通信安全再添保障。
为助力开发者快速上手与深入开发,基于W55MH32L这颗芯片,WIZnet精心打造了配套开发板。开发板集成WIZ-Link芯片,借助一根USB C口数据线,就能轻松实现调试、下载以及串口打印日志等功能。开发板将所有外设全部引出,拓展功能也大幅提升,便于开发者全面评估芯片性能。
若您想获取芯片和开发板的更多详细信息,包括产品特性、技术参数以及价格等,欢迎访问官方网页:http://www.w5500.com/,我们期待与您共同探索W55MH32的无限可能。

第十五章 W55MH32 SNMP示例
本篇文章,我们将详细介绍如何在W55MH32芯片上面实现SNMP功能。并通过实战例程,为大家讲解如何使用MIB Browser管理W55MH32。
该例程用到的其他网络协议,例如DHCP,请参考相关章节。有关W55MH32的初始化过程,请参考NetworkInstall章节,这里将不再赘述。
1 SNMP协议简介
SNMP(Simple Network Management Protocol,简单网络管理协议)是一种用于管理和监控网络设备的协议。它是应用层协议,广泛应用于网络设备(如路由器、交换机、服务器、打印机等)的管理和监控。SNMP提供了机制以便网络管理员可以监控网络性能、发现网络问题,并对设备进行管理。
2 SNMP协议特点
简单性:设计轻量,便于实现和部署。
互操作性:提供标准化的设备管理方式,不同厂商的设备可以通过SNMP实现互通。
跨平台支持:SNMP是一种开放的标准协议,被广泛应用于各种网络设备和操作系统。
实时监控:支持快速的数据采集和报警机制。
扩展性:通过MIB支持不同设备的特定功能。
资源效率:协议设计轻量,适合低带宽和高延迟的网络环境。
3应用场景
接下来,我们了解下在W55MH32上,可以使用SNMP协议完成哪些操作及应用呢?
故障报警和日志管理:设备在检测到异常或故障时,可以通过 SNMP TRAP将报警信息发送到网络管理系统。
工业自动化和环境监控:在工业自动化和环境监控中,W55MH32可通过 SNMP汇报传感器数据。
数据中心和机房管理:用于数据中心和机房中监控服务器、交换机及其他网络设备的状态。
4使用MIB Browser管理W55MH32流程
下载并安装MIB Browser(链接:https://www.ireasoning.com/download/mibfree/setup.exe)
创建分支
打开安装目录下 mibs文件夹,找到 RFC1213-MIB文件,右键使用记事本打开,上方路径栏可以寻找路径。

在snmp后添加一个新分支,命名为User

添加叶子节点(功能)
在分支后方继续添加功能代码

叶子节点格式如下:
setLED OBJECT-TYPE 添加一个新叶子节点,命名为 setLED
SYNTAX INTEGER { enabled(1),disabled(0) }设置数据类型
DESCRIPTION 注释
::= { User 1 }叶子所在分支,与叶子编号
添加完毕后保存并退出
添加完成后,MIB Browser软件如下所示:

代码适配功能
测试
5 SNMP架构组成
SNMP架构包括以下三个主要部分:
管理站(Manager):运行SNMP管理软件,用于发送请求和接收设备信息。通过命令操作网络设备,执行配置或监控任务。
代理(Agent):安装在受管理设备上的软件,负责将设备的状态信息存储在MIB中,并响应来自管理站的查询。能动地发送陷阱(Trap)以报告事件。
管理信息库(MIB):定义设备的可管理参数及其数据结构MIB通常以树状结构组织,每个节点代表一个管理对象,具有唯一的对象标识符(OID)。
协议(SNMP协议本身):负责管理站和代理之间的通信,支持基本操作如获取、设置和通知。
6 OID详解
简单网络管理协议(SNMP)的OID(对象标识符)是一个用于唯一标识网络设备上管理信息库(MIB)中对象的标识符。OID是一种分层的命名方案,允许管理员查询和设置网络设备上的各种参数。
下面是OID的详解:
OID结构
OID由一系列整数组成,这些整数通过点号(.)分隔,形成了一个层次结构。例如:
1.3.6.1.2.1.1.1.0
在这个结构中,每个数字都代表一个组织或节点在层次结构中的位置。
OID层次解释
1:表示ISO(国际标准化组织)
3:表示org(组织)
6:指定IETF(互联网工程任务组)作为组织
1:表示IETF管理的MIB(管理信息库)
后续的数字则进一步定义了特定的MIB模块、对象类型、实例等信息。
常见的OID前缀
1.3.6.1.2.1:这是最常用的OID前缀,通常简写为.iso.org.dod.internet.mgmt.mib-2,它指的是IETF定义的MIB-2。
具体OID示例
1.3.6.1.2.1.1.1.0:这是sysDescr的OID,用于获取系统描述。
1.3.6.1.2.1.1.2.0:这是sysObjectID的OID,用于获取系统对象标识符。
1.3.6.1.2.1.1.3.0:这是sysUpTime的OID,用于获取系统正常运行时间。
如何使用OID
查询:使用SNMPGET请求,可以查询特定OID的值。
设置:使用SNMPSET请求,可以修改特定OID的值(需要设备支持)。
遍历:使用SNMPWALK请求,可以遍历一个OID下的所有子节点。
注意事项
OID的具体值和结构可能会随着网络设备的不同而有所不同。在使用OID之前,最好查阅相应设备的MIB文档,以了解其支持的具体OID及其功能。OID是SNMP管理中不可或缺的部分,通过OID,网络管理员可以进行监控网络状态、配置网络设备、接收警报通知等操作。理解和掌握OID对于网络管理和故障排除非常重要。
7 SNMP报文格式
SNMP报文基于ASN.1(Abstract Syntax Notation One)编码规则,通常使用BER(Basic Encoding Rules)进行传输。以下是SNMP报文的基本格式和关键字段,本例程中使用的是SNMPv1版本,以下对SNMPv1进行讲解,而对于其他版本的报文格式,由于篇幅有限,这里将不再进行讲解,感兴趣的朋友可自行查阅资料进行学习。
SNMP报文结构
| 字段名称 | 类型 | 描述 |
| Message | 序列(Sequence) | 整个 SNMP消息的容器,包含以下字段。 |
| Version | 整数(Integer) | SNMP协议版本号,0表示 SNMPv1。 |
| Community | 字符串(Octet String) | 社区字符串,用于身份验证,如 public或 private。 |
| PDU类型 | 标记(Tag, Context-Specific) | 表示操作类型,如:GET(0xA0)、GET-NEXT(0xA1)、SET(0xA3)、TRAP(0xA4)。 |
| Request ID | 整数(Integer) | 请求的唯一标识,用于匹配请求和响应。 |
| Error Status | 整数(Integer) | 错误状态,取值范围为:0(noError)、1(tooBig)、2(noSuchName)等。 |
| Error Index | 整数(Integer) | 错误索引,指示变量绑定列表中出错的变量位置(从 1开始计数)。 |
| Variable Bindings | 序列(Sequence of VarBinds) | 变量绑定列表,每个绑定包含一个 OID和对应的值。 |
| - OID | 对象标识符(OID) | 被管理对象的标识符,如 1.3.6.1.2.1.1.1.0表示系统描述(sysDescr)。 |
| - Value | 可变类型(Null, Integer, String等) | OID对应的值,可能为空值(GET请求)或具体数据(响应或 SET请求)。 |
报文字段详解
1. Message(消息整体)
这是 SNMP消息的最外层结构,是一个序列(Sequence),包含以下三个部分:
Version(版本号)
此字段定义 SNMP协议的版本号,用一个整数表示:
0表示 SNMPv1。
1表示 SNMPv2c。
3表示 SNMPv3。
该字段是解析报文的基础,不同版本的报文格式存在差异。
Community(社区字符串)
社区字符串是 SNMPv1和 SNMPv2c的一种简单身份验证机制,用于限制对管理对象的访问权限。它是一个字符串(Octet String),常见的值包括:
public:表示只读访问权限。
private:表示读写访问权限。
PDU(协议数据单元)类型
PDU定义了操作类型,通过一个标记值(Tag, Context-Specific)来区分:
0xA0:GET请求,用于获取管理对象的值。
0xA1:GET-NEXT请求,用于获取下一个对象的值。
0xA3:SET请求,用于设置管理对象的值。
0xA4:TRAP,用于代理向管理站报告事件。
2. Request ID(请求 ID)
请求 ID是一个整数,用于唯一标识一个请求。它由发起方生成,并在响应中携带相同的 ID。通过此字段,接收方可以将响应与对应的请求进行匹配。如果响应中的请求 ID不一致,则表明响应与请求无关。
3. Error Status(错误状态)
此字段用整数表示请求的执行状态:
0:noError,表示请求执行成功,没有错误。
1:tooBig,请求的响应数据超出接收方的最大允许大小。
2:noSuchName,请求中指定的 OID不存在。
3:badValue,请求中的值非法或不支持。
4:readOnly,请求试图修改只读对象。
5:genErr,发生了通用错误,具体原因未明确。
4. Error Index(错误索引)
如果 Error Status的值不为 0,此字段指示变量绑定列表中出错的变量位置(从 1开始计数)。如果没有错误,此字段的值为 0。
5. Variable Bindings(变量绑定列表)
变量绑定列表是 SNMP报文的核心部分,包含一个或多个变量绑定(VarBind)。每个变量绑定由以下两部分组成:
OID(对象标识符)
OID是管理对象的唯一标识符,用点分十进制表示。例如:
1.3.6.1.2.1.1.1.0:表示 sysDescr,系统描述。
1.3.6.1.2.1.1.5.0:表示 sysName,系统名称。
Value(值)
OID的值根据请求类型不同可能为以下几种:
在 GET请求中,值通常为空(Null)。
在 GET-RESPONSE报文中,值为具体数据,例如整型(Integer32)、字符串(Octet String)等。
在 SET请求中,值是要设置的新值。
SNMP报文解析
MIB Browser向W55MH32发送LED设置报文:
|报文解析|
Simple Network Management Protocol (简单网络管理协议(SNMP报文))
version: version-1 (0) (使用的 SNMP协议版本,值为 0表示 SNMPv1)
community: public (社区字符串为 "public",通常表示只读权限)
data: set-request (3) (PDU 类型为 SET-REQUEST,表示设置管理对象的值)
set-request
request-id: 1479407980 (请求的唯一标识符,用于匹配请求和响应)
error-status: noError (0) (错误状态为 noError (0),表示没有错误发生)
error-index: 0 (错误索引为 0,表示变量绑定列表中没有错误对象)
variable-bindings: 1 item (变量绑定列表中包含 1个变量)
1.3.6.1.2.1.12.1.0: 1 (OID为 1.3.6.1.2.1.12.1.0,设置的值为 1)
Object Name: 1.3.6.1.2.1.12.1.0 (iso.3.6.1.2.1.12.1.0) (OID 对应的完整名称)
Value (Integer32): 1 (设置的值为整数类型,值为 1)
[Response In: 237] (表示该请求的响应报文序号为 237)
|报文原文|
30 2a 02 01 00 04 06 70 75 62 6c 69 63 a3 1d 02 04 58 2d f9 6c 02 01 00 02 01 00 30 0f 30 0d 06 08 2b 06 01 02 01 0c 01 00 02 01 01
W55MH32响应报文:
|报文解析|
Simple Network Management Protocol
version: version-1 (0) (版本号:SNMPv1(值为 0))
community: public (社区字符串:"public",用于身份验证)
data: get-response (2) (数据类型:GET-RESPONSE(值为 2),表示这是一个响应报文)
get-response (GET-RESPONSE 数据部分)
request-id: 1479407980 (请求 ID:1479407980,用于匹配请求和响应)
error-status: noError (0) (错误状态:noError(值为 0),表示没有错误)
error-index: 0 (错误索引:0,表示没有发生错误的变量索引)
variable-bindings: 1 item (变量绑定:包含 1个变量)
1.3.6.1.2.1.12.1.0: 1 (变量绑定内容)
Object Name: 1.3.6.1.2.1.12.1.0 (iso.3.6.1.2.1.12.1.0) (对象标识符(OID))
Value (Integer32): 1 (OID对应的值,类型为 Integer32,值为 1)
[Response To: 236] (对请求 ID 236的响应)
[Time: 0.023844000 seconds] 响应耗时:0.023844秒)
|报文原文|
30 2a 02 01 00 04 06 70 75 62 6c 69 63 a2 1d 02 04 58 2d f9 6c 02 01 00 02 01 00 30 0f 30 0d 06 08 2b 06 01 02 01 0c 01 00 02 01 01
8实现过程
接下来,我们看看如何在代码上适配MIB Browser上添加的功能。
注意:测试实例需要PC端和W55MH32处于同一网段。
步骤1:初始化LED并注册到SNMP中
user_led_init(); user_led_control_init(get_user_led_status, set_user_led_status);
步骤2:注册snmp定时器
/**
* @brief 1ms timer IRQ Handler
* @param none
* @return none
*/
void TIM3_IRQHandler(void)
{
static uint32_t tim3_1ms_count = 0;
static uint8_t tim3_10ms_count = 0;
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
{
tim3_1ms_count++;
tim3_10ms_count++;
// 1000ms(1秒)定时处理DHCP
if (tim3_1ms_count >= 1000)
{
DHCP_time_handler();
tim3_1ms_count = 0;
}
// 10ms定时处理SNMP
if (tim3_10ms_count >= 10)
{
SNMP_time_handler();
tim3_10ms_count = 0;
}
// 清除中断标志位
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
}
}
我们需要10ms调用一次SNMP_time_handler()函数,方便SNMP进行超时处理。
步骤3:添加功能函数
在snmp_custom.c文件中的snmpData结构体变量中,添加功能函数:
c
运行
dataEntryType snmpData[] =
{
// System MIB
// SysDescr Entry
{ 8, {0x2b, 6, 1, 2, 1, 1, 1, 0}, SNMPDTYPE_OCTET_STRING, 30, {"WIZnet Embedded SNMP Agent"}, NULL, NULL},
// SysObjectID Entry
{ 8, {0x2b, 6, 1, 2, 1, 1, 2, 0}, SNMPDTYPE_OBJ_ID, 8, {"x2bx06x01x02x01x01x02x00"}, NULL, NULL},
// SysUptime Entry
{ 8, {0x2b, 6, 1, 2, 1, 1, 3, 0}, SNMPDTYPE_TIME_TICKS, 0, {""}, currentUptime, NULL},
// sysContact Entry
{ 8, {0x2b, 6, 1, 2, 1, 1, 4, 0}, SNMPDTYPE_OCTET_STRING, 30, {"http://www.wizwiki.net/forum"}, NULL, NULL},
// sysName Entry
{ 8, {0x2b, 6, 1, 2, 1, 1, 5, 0}, SNMPDTYPE_OCTET_STRING, 30, {"http://www.wiznet.co.kr"}, NULL, NULL},
// Location Entry
{ 8, {0x2b, 6, 1, 2, 1, 1, 6, 0}, SNMPDTYPE_OCTET_STRING, 30, {"4F Humax Village"}, NULL, NULL},
// SysServices
{ 8, {0x2b, 6, 1, 2, 1, 1, 7, 0}, SNMPDTYPE_INTEGER, 4, {""}, NULL, NULL},
{ 8, {0x2b, 6, 1, 2, 1, 12, 2, 0}, SNMPDTYPE_OCTET_STRING, 30, {""}, get_LEDStatus_UserLED, NULL},
{ 8, {0x2b, 6, 1, 2, 1, 12, 1, 0}, SNMPDTYPE_INTEGER, 4, {""}, NULL, set_LEDStatus_UserLED},
// OID Test #1 (long-length OID example, 19865)
{0x0a, {0x2b, 0x06, 0x01, 0x04, 0x01, 0x81, 0x9b, 0x19, 0x01, 0x00}, SNMPDTYPE_OCTET_STRING, 30, {"long-length OID Test #1"}, NULL, NULL},
// OID Test #2 (long-length OID example, 22210)
{0x0a, {0x2b, 0x06, 0x01, 0x04, 0x01, 0x81, 0xad, 0x42, 0x01, 0x00}, SNMPDTYPE_OCTET_STRING, 35, {"long-length OID Test #2"}, NULL, NULL},
// OID Test #2: SysObjectID Entry
{0x0a, {0x2b, 0x06, 0x01, 0x04, 0x01, 0x81, 0xad, 0x42, 0x02, 0x00}, SNMPDTYPE_OBJ_ID, 0x0a, {"x2bx06x01x04x01x81xadx42x02x00"}, NULL, NULL},
};
结构体变量snmpData的结构体dataEntryType定义如下所示:
typedef struct {
uint8_t oidlen; // OID长度
uint8_t oid[MAX_OID]; // OID数组(对象标识符)
uint8_t dataType; // 数据类型(对应SNMP数据类型)
uint8_t dataLen; // 数据长度
union {
uint8_t octetstring[MAX_STRING]; // 字符串类型数据
uint32_t intval; // 整数类型数据
} u; // 数据联合体(存储不同类型的数据)
void (*getfunction)(void *, uint8_t *); // 获取数据的回调函数
void (*setfunction)(int32_t); // 设置数据的回调函数
} dataEntryType;
步骤4:初始化snmp协议
void snmpd_init(uint8_t *managerIP, uint8_t *agentIP, uint8_t sn_agent, uint8_t sn_trap)
{
#ifdef _SNMP_DEBUG_
printf("rn - SNMP : Start SNMP Agent Daemonrn");
#endif
SOCK_SNMP_AGENT = sn_agent;
SOCK_SNMP_TRAP = sn_trap;
// 检查 socket 编号是否合法
if ((SOCK_SNMP_AGENT > _WIZCHIP_SOCK_NUM_) || (SOCK_SNMP_TRAP > _WIZCHIP_SOCK_NUM_))
{
return;
}
startTime = getSNMPTimeTick(); // 记录启动时间(单位:10ms)
initTable(); // 初始化 OID 条目值
initial_Trap(managerIP, agentIP); // 初始化 Trap 相关配置
/*
// SNMP Trap 示例代码
{
dataEntryType enterprise_oid = {
0x0a,
{0x2b, 0x06, 0x01, 0x04, 0x01, 0x81, 0x9b, 0x19, 0x01, 0x00},
SNMPDTYPE_OBJ_ID,
0x0a,
{"x2bx06x01x04x01x81x9bx19x10x00"},
NULL,
NULL
};
dataEntryType trap_oid1 = {
8,
{0x2b, 6, 1, 4, 1, 0, 11, 0},
SNMPDTYPE_OCTET_STRING,
30,
{""},
NULL,
NULL
};
dataEntryType trap_oid2 = {
8,
{0x2b, 6, 1, 4, 1, 0, 12, 0},
SNMPDTYPE_INTEGER,
4,
{""},
NULL,
NULL
};
strcpy((char *)trap_oid1.u.octetstring, "Alert!!!"); // 添加字符串数据
trap_oid2.u.intval = 123456; // 添加整数值
// 通用 Trap: warmStart
snmp_sendTrap((void *)"192.168.0.214", (void *)"192.168.0.112", (void *)"public",
enterprise_oid, SNMPTRAP_WARMSTART, 0, 0);
// 企业特定 Trap
snmp_sendTrap((void *)"192.168.0.214", (void *)"192.168.0.112", (void *)"public",
enterprise_oid, 6, 0, 2, &trap_oid1, &trap_oid2);
}
*/
}
这一步,主要是将使用的socket号,管理IP地址,请求IP地址等参数注册进去,并且记录开始时间。如果想使用Trap主动上报,可以参考注释中的示例代码。
步骤5:在主循环中运行snmpd_run()函数
snmpdrun()函数代码如下:
int32_t snmpd_run(void)
{
int32_t ret;
int32_t len = 0;
uint8_t svr_addr[6];
uint16_t svr_port;
// 检查 socket 编号合法性
if (SOCK_SNMP_AGENT > _WIZCHIP_SOCK_NUM_)
{
return -99;
}
// 根据 socket 状态进行处理
switch (getSn_SR(SOCK_SNMP_AGENT))
{
case SOCK_UDP:
// 检查接收缓冲区是否有数据
if ((len = getSn_RX_RSR(SOCK_SNMP_AGENT)) > 0)
{
// 接收 UDP 数据
request_msg.len = recvfrom(SOCK_SNMP_AGENT, request_msg.buffer, len, svr_addr, &svr_port);
}
else
{
request_msg.len = 0;
}
// 处理接收到的请求数据
if (request_msg.len > 0)
{
#ifdef _SNMP_DEBUG_
dumpCode((void *)"rn[Request]rn", (void *)"rn", request_msg.buffer, request_msg.len);
#endif
// 初始化请求和响应消息
request_msg.index = 0;
response_msg.index = 0;
errorStatus = errorIndex = 0;
memset(response_msg.buffer, 0x00, MAX_SNMPMSG_LEN);
// 解析 SNMP 请求并发送响应
if (parseSNMPMessage() != -1)
{
sendto(SOCK_SNMP_AGENT, response_msg.buffer, response_msg.index, svr_addr, svr_port);
}
#ifdef _SNMP_DEBUG_
dumpCode((void *)"rn[Response]rn", (void *)"rn", response_msg.buffer, response_msg.index);
#endif
}
break;
case SOCK_CLOSED:
// 创建 UDP socket
if ((ret = socket(SOCK_SNMP_AGENT, Sn_MR_UDP, PORT_SNMP_AGENT, 0x00)) != SOCK_SNMP_AGENT)
{
return ret;
}
#ifdef _SNMP_DEBUG_
printf(" - [%d] UDP Socket for SNMP Agent, port [%d]rn", SOCK_SNMP_AGENT, PORT_SNMP_AGENT);
#endif
break;
default:
break;
}
return 1;
}
snmpd_run()函数会执行一个UDP状态机,当收到SNMP管理的消息后会执行解析以及回复操作。
9运行结果
烧录例程运行后,首先可以看到打印了PHY链路检测和DHCP获取网络信息,然后是运行SNMP程序:

打开MIB Borwser,输入W55MH32的地址,然后依次点击system分支下的各个节点,获取到的结果与代码定义相同:

再找到User分支下的setLED指令,右键指令,点击set,类型选择integer,Value填 1,点击OK:

getLED指令,右键指令,点击get,即可读出LED状态:

10总结
本文讲解了如何在 W55MH32芯片上实现 SNMP功能,通过实战例程展示了使用 MIB Browser管理 W55MH32的具体过程,涵盖在 MIB Browser中创建分支、添加叶子节点,以及在代码中适配功能等关键步骤。文章详细介绍了 SNMP协议的概念、特点、应用场景、架构组成、OID详解和报文格式,帮助读者理解其在网络设备管理和监控中的重要作用。
下一篇文章将聚焦 PING命令,解析其测试网络连通性的原理及在网络故障排查中的应用,同时讲解如何在W55MH32上使用 PING命令进行网络诊断,敬请期待!
WIZnet是一家无晶圆厂半导体公司,成立于 1998年。产品包括互联网处理器 iMCU™,它采用 TOE(TCP/IP卸载引擎)技术,基于独特的专利全硬连线 TCP/IP。iMCU™面向各种应用中的嵌入式互联网设备。
WIZnet在全球拥有 70多家分销商,在香港、韩国、美国设有办事处,提供技术支持和产品营销。
香港办事处管理的区域包括:澳大利亚、印度、土耳其、亚洲(韩国和日本除外)。
审核编辑 黄宇
-
以太网
+关注
关注
41文章
5923浏览量
179532 -
SNMP
+关注
关注
0文章
93浏览量
30574
发布评论请先 登录
第十五章 DAC (上篇)
第十五章 DAC (下篇)
【正点原子FPGA连载】第十五章 窗口门狗(WWDG)实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1
第二章 W55MH32 DHCP示例
第五章 W55MH32 UDP示例
第九章 W55MH32 HTTP Server示例
第十章 W55MH32 SNTP示例
第十一章 W55MH32 SMTP示例
第十二章 W55MH32 NetBIOS示例
第十四章 W55MH32 TFTP示例
第十六章 W55MH32 PING示例
第十七章 W55MH32 ARP示例
第十八章 W55MH32 FTP_Server示例
第二十五章 W55MH32 TCP_Server_Multi_Socket示例
第二十六章 W55MH32 上位机搜索和配置示例

第十五章 W55MH32 SNMP示例
评论