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表示 状态代码 上一条命令的状态码