我正在Arduino IDE上使用Raspberry pi皮科。我正在使用这个库githublink。这个链接中有3个例子,ArduinoUniqueID和ArduinoUniqueID8不打印任何东西。Ide说
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).
(but 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
是什么类型,我试图转换十六进制,但它打印相同的东西。
我如何找到皮科的唯一ID与Arduino代码?
2条答案
按热度按时间xxslljrj1#
皮科(以及大多数RP2040板)的唯一ID由闪存的序列号决定。Pico SDK具有获取该ID的函数。您也可以使用
flash_get_unique_id(uint8_t* id_out)
直接从闪存中检索该ID,这是上面链接的库所做的。相关文档为here。或者,您可以从MCU获取唯一ID。检索ID的两个函数是
pico_get_unique_board_id(pico_unique_board_id_t* id_out)
(以十六进制数组的形式返回ID)或pico_get_unique_board_id_string(char* id_out, uint len)
(以字符串的形式返回ID)。相关文档是here。这些值是十六进制的,来自Unique_ID缓冲区,看起来好像是用Unique id错误地填充了缓冲区。下面的代码应该可以满足您的需要。
esbemjvw2#
“唯一ID:30 00 33“等是一个非十六进制的Unicode字符串“039160 E62 A8248 C348 C3”。
同样,对于Earls皮科内核,只需添加“外部“C”void flash_get_unique_id(uint8_t *p);'添加到草图中,您就可以访问上述UniqueIDdump示例所需的函数