dwm_mac_addr_set_once
将 MAC 地址列表写入 OTP 内存,必须小心使用!写入后的值将无法修改!它的目的是在生产阶段为 UWB、BLE、以太网或 Wi-Fi 接口使用的设备提供一个 MAC 地址池. 目前,MAC 地址列表分配给不同接口的情况如下:
MAC 地址0分配给UWB 接口. 两个最小有效字节必须不等于 0x0000 或 0xFFFF.
MAC 地址 1 已分配给 BLE 接口. 该地址将用作公共 BLE 地址.
MAC 地址 2 和 MAC 地址 3 分别分配给以太网和 Wi-Fi 接口. 地址应采用 EUI-48 格式,并尊重 LAA/UAA 和 U/I 位.
-
void dwm_mac_addr_set_once(dwm_mac_addr_t *addr, uint8_t count)
- 参数
input – mac_addr_0, [mac_addr_1], [mac_addr_2], [mac_addr_3]
mac_addr_0 – 48 位值 (UWB MAC 地址,小端序)
mac_addr_1 – 48 位值 (BLE MAC 地址,小端序)
mac_addr_2 – 48 位值 (以太网 MAC 地址,小端序)
mac_addr_3 – 48 位值 (WIFI MAC 地址,小端序)
output: – 状态代码
C代码示例
dwm_mac_addr_list_t mac_addr_list;
dwm_mac_addr_get(&mac_addr_list);
memcpy(mac_addr_list.mac[0], (uint8_t[DWM_MAC_ADDR_LEN]){0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, DWM_MAC_ADDR_LEN);
rv: dwm_mac_addr_set(&mac_addr_list);
if (rv != DWM_OK) {
printf("can't set MAC address list, error %d\n", rv);
}
SPI/UART 示例
TLV 请求 |
||
---|---|---|
类型 |
长度 |
价值 |
0x82 |
0x18 |
(字节0-5) MAC 地址 0,小端序
(字节6-11) MAC 地址 1,小端序
(字节12-17) MAC 地址 2,小端序
(字节18-23) MAC 地址 3,小端序
|
… |
类型 0x82 (130 dec) 表示命令 dwm_mac_addr_set_once
TLV 响应 |
||
---|---|---|
类型 |
长度 |
价值(参见错误代码) |
0x40 |
0x01 |
0x00 |
类型0x40表示 状态代码 上一条命令的状态码