gpt4 book ai didi

c++ - Arduino RP2040 Pico 唯一 ID

转载 作者:行者123 更新时间:2023-12-05 04:28:26 52 4
gpt4 key购买 nike

我在 Arduino IDE 上使用 Raspberry pi pico。我正在使用这个库 githublink为了它。此链接中有 3 个示例,ArduinoUniqueIDArduinoUniqueID8不打印任何东西。意得说

WARNING: library ArduinoUniqueID claims to run on avr, esp8266, esp32, sam, samd, stm32 architecture(s) and may be incompatible with your current board which runs on mbed_rp2040 architecture(s).

(但 GitHub 说我们添加 RP2040)

当我尝试使用上一个示例时 ArduinoUniqueIDSerialUSB ,它打印了一些东西,但它们不是正确的值。它打印这些:

UniqueID: 30 00 33 00 39 00 31 00 36 00 30 00 45 00 36 00 32 00 41 00 38 00 32 00 34 00 38 00 43 00 33 00 
UniqueID: 34 00 38 00 43 00 33 00

此处正确的唯一 ID 值:(我用 micropython 打印了这些值)

hex value of s = e660a4931754432c
type s = <class 'bytes'>
s = b'\xe6`\xa4\x93\x17TC,'

我什至不知道 34 ​​00 38 00 43 00 33 00 是什么类型,我尝试转换为十六进制,但它打印出同样的东西。

如何使用 Arduino 代码找到 pico 的唯一 ID?

最佳答案

Pico(和大多数 RP2040 板)的唯一 ID 由闪存的序列号决定。 Pico SDK 具有获取该 ID 的功能。您可以使用 flash_get_unique_id(uint8_t* id_out) 直接从闪存中检索它,上面链接的库就是这样做的。相关文档是 here .

或者,您可以从 MCU 获取唯一 ID。用于检索 ID 的两个函数是 pico_get_unique_board_id(pico_unique_board_id_t* id_out)pico_get_unique_board_id_string(char* id_out, uint len) 将 ID 返回为十六进制数组一个字符串。相关文档是 here .

这些值是十六进制的,来自它们的 Unique_ID 缓冲区,看起来好像未正确填充 Unique id。下面的代码应该可以满足您的需要。

   uint8_t UniqueID[8];
void UniqueIDdump(stream)
{
flash_get_unique_id(UniqueID);
stream.print("UniqueID: ");
for (size_t i = 0; i < 8; i++)
{
if (UniqueID[i] < 0x10)
stream.print("0");
stream.print(UniqueID[i], HEX);
stream.print(" "); }
stream.println();
}

关于c++ - Arduino RP2040 Pico 唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72594333/

52 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com