这今天在淘宝上买了一块“SupreMini NRF52840”开发板,分享一下如何在上面编译运行Zephyr并使用LED和UART。
这块板子实际使用的boot loader是“nice!nano”,所以schematic可以基本参考下面的链接。
下载Zephyr Board Configuration
https://github.com/zephyrproject-rtos/zephyr/commits/main/boards/others/promicro_nrf52840
最新Zephyr上已经有了适用于这块开发板的configuration,但是需要对UART做一下修改。
https://github.com/zephyrproject-rtos/zephyr/commits/main/boards/others/promicro_nrf52840
因为我使用的是Zephyr 4.0的release,里面还没有,需要单独cherry-pick
git cherry-pick 0c3913962e2b33ed5081c01a158587b3614cf6c9
"[Zephyr4.0 09347a1f08c] boards: others: Introduce Pro Micro nRF52840 type"
git cherry-pick 0cae816b27f67f0490a90d7c9e7df2d722dfdd97
"[Zephyr4.0 33177faad5e] boards: add common configuration for CDC ACM UART"
修改 Board Configuration
原始的“zephyr/boards/others/promicro_nrf52840/promicro_nrf52840-pinctrl.dtsi”里,UART0的TX/RX是P0.9和P0.10。在“SupreMini NRF52840”上,我们使用P0.6和P0.8.
可以直接修改“promicro_nrf52840-pinctrl.dtsi”,也可以添加自己的overlay。我偷个懒就直接改”promicro_nrf52840-pinctrl.dtsi”。
同时在console上使用uart0.
"cdc_acm_serial.dtsi" 也包含在device tree里,主要是在console上enable 板载的USB-UART。
我直接把这个文件的include注释掉了。
连接UART
将P0.6和P0.8连接到USB串口设备上COM6.
编译Blinky
关于如何编译Zephyr的application,可以参考之前的几篇文章。
运行 west build -p auto -b promicro_nrf52840/nrf52840/uf2 samples/basic/blinky
和ESP32的binary不同,NRF52840编译的image是uf2格式的Zephyr.uf2。
烧录Image
参考上面的链接,讲RST和GND短接两次,boot loader会进入flash mode。这时候能看到多了一个USB 驱动器。
将“zephyr.uf2”复制到USB驱动器,开发板会自动烧写重启退出flash mode。
打开COM6就能看到Blinky的printf和printk了。