You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino IDE下如何正确读取RP2040树莓派Pico的芯片唯一ID

问题根因
  • 兼容性警告触发逻辑:ArduinoUniqueID库仅适配社区维护的原生RP2040 Arduino核心,你当前为Pico选择的是Arduino官方基于mbed封装的RP2040核心,架构标识为mbed_rp2040,不在库声明的兼容架构范围内,库内置的寄存器读取地址与当前核心不匹配,无法正确访问芯片ID存储区域。
  • 异常输出原因:ArduinoUniqueID、ArduinoUniqueID8两个示例无串口输出,是库的串口初始化逻辑与mbed核心USB串口实现不兼容导致;ArduinoUniqueIDSerialUSB输出的带00间隔的十六进制值是内存中残留的UTF-16LE编码字符串,和芯片真实ID无关,做普通十六进制转换自然得不到正确结果。
  • RP2040的8字节唯一ID固化在芯片OTP存储区,属于芯片出厂自带的固定值,不需要依赖第三方库即可通过核心内置API直接读取,和你在MicroPython环境下读到的值完全对应。
正确实现方法

如果你当前使用官方mbed_rp2040核心,无需安装额外库,直接上传以下代码即可读取正确ID:

void setup() {
  Serial.begin(115200);
  while (!Serial) delay(10); // 等待USB串口枚举完成
  
  uint8_t uid[8] = {0};
  mbed_mcu_uid_get(uid); // 调用mbed核心内置UID读取接口

  Serial.print("RP2040 Unique ID: ");
  for (int i = 0; i < 8; i++) {
    if (uid[i] < 0x10) Serial.print("0");
    Serial.print(uid[i], HEX);
    Serial.print(" ");
  }
  Serial.println();
}

void loop() {}

上传完成后打开串口监视器,即可得到和MicroPython读取结果完全一致的芯片ID。

如果需要继续使用ArduinoUniqueID库,在开发板管理器中安装社区版RP2040核心,选板时避开带mbed标识的Pico板卡选项即可,此时兼容性警告会自动消失,库自带示例可正常输出正确ID。

内容的提问来源于stack exchange,提问作者Tryingtogetsome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 20:42:17