作者:Jacob Beningo
在嵌入式系统中,有一个内在的需求,就是要有一个强大的、低成本的微控制器单元(MCU)。这些设备不仅在产品中发挥着重要作用,而且在支持测试、快速原型设计和机器学习 (ML) 之类能力方面也发挥着重要作用。然而,使用 MCU 通常需要对MCU 技术和底层编程语言有深入的了解。除此之外,开发板的价格往往在 20 美元到 1000美元之间,这对许多开发人员来说可能太昂贵了。此外,并不总是有开发板,即使有开发板,设计者也常常要花很多精力让开发板启动并运行起来。
本文介绍了作为用于 RP2040 MCU 的低成本开发板的 Raspberry Pi Pico (SC0915),该板能为开发者提供广泛的功能。文章探讨了Pico 和一些扩展板,研究了 Raspberry Pi Pico 支持的不同软件开发工具包,并演示了如何使用 C SDK 创建一个 LED 闪光应用。
Raspberry Pi Pico 简介
Raspberry Pi Pico 作为 RP2040 微控制器的开发平台而于 2021 年首次推出。Pico
可以作为独立的开发板使用,或者通过边缘连接焊接到载板上,因此可以直接设计导入产品(图 1)。因其低于 5 美元的成本及其多用途特性,Pico已经成为创客和专业开发者的一个很受欢迎的解决方案。

图 1:Raspberry Pi Pico 是一块低成本的开发板,包含了在 RP2040 微控制器上开发应用所需的一切。(图片来源:Raspberry Pi)
RP2040 带有一个双核 Arm® Cortex®-M0+ 处理器,时钟频率为 133 兆赫(MHz),包括高至 264 千字节 (Kb) 的SRAM。RP2040 不包括片上闪存。不过 Raspberry Pi Pico 提供了一个 2 兆字节 (Mb) 的外部闪存芯片,通过一个四路串行外设接口(QSPI) 与 RP2040 连接。该板还提供了一个用户 LED,一个锁相环 (PLL) 用来创建稳定高速 CPU时钟的晶体振荡器,以及一个用来配置处理器是正常引导还是进入引导程序的按钮。
一个广泛的生态系统
Raspberry Pi Pico 已经有了一个广泛的生态系统,允许开发者选择使用 MicroPython 或 C软件开发工具包来为电路板编写应用程序。关于 Raspberry Pi Pico还有一点有趣的要说明的是,并不是只有一块开发板可用。而是有三个;只有一个标准配置的原版 SC0915、包括针座连接器的 SC0917以及带有用于联网应用的低成本Wi-Fi 芯片的 SC0918(图 2)。

图 1:Raspberry Pi Pico 是一块低成本的开发板,包含了在 RP2040 微控制器上开发应用所需的一切。(图片来源:Raspberry Pi)
RP2040 带有一个双核 Arm® Cortex®-M0+ 处理器,时钟频率为 133 兆赫(MHz),包括高至 264 千字节 (Kb) 的SRAM。RP2040 不包括片上闪存。不过 Raspberry Pi Pico 提供了一个 2 兆字节 (Mb) 的外部闪存芯片,通过一个四路串行外设接口(QSPI) 与 RP2040 连接。该板还提供了一个用户 LED,一个锁相环 (PLL) 用来创建稳定高速 CPU时钟的晶体振荡器,以及一个用来配置处理器是正常引导还是进入引导程序的按钮。
一个广泛的生态系统
Raspberry Pi Pico 已经有了一个广泛的生态系统,允许开发者选择使用 MicroPython 或 C软件开发工具包来为电路板编写应用程序。关于 Raspberry Pi Pico还有一点有趣的要说明的是,并不是只有一块开发板可用。而是有三个;只有一个标准配置的原版 SC0915、包括针座连接器的 SC0917以及带有用于联网应用的低成本Wi-Fi 芯片的 SC0918(图 2)。

分线板选件
当 Raspberry Pi要用于快速原型开发时,有必要方便接入电路板的边缘连接器。接入它们的一个选择是使用焊接针座并使用试验板。但这种解决方案往往会导致线路混乱,并从而导致差错。因此,取而代之的是,有多种分线板的选择,将边缘连接器扩展到更容易获得的接口。
例如,Bridgetek 的 MM2040EV Pico 模块板将大部分边缘连接器分解为插针和插座连接。此外,还有 Seeed Studio 为 Pico提供的 103100142 盾板,能以连接器的形式提供每个外设接口。每个连接器都与扩展板引脚兼容,以便增加像惯性传感器、电机驱动器和测距仪之类功能。
用 C 还是用 MicroPython?
嵌入式系统传统上都是用 C 语言编写的,因为它兼顾了低层的控制和高层的系统应用方法。今天 C 语言的问题是,它是一种过时的、有着 50年历史的编程语言,在大学里很少被教授。也更容易意外引入漏洞并造成损坏。尽管有这些潜在的问题,但 C 语言仍然是大多数嵌入式系统开发的首选语言。
Raspberry Pi Pico 生态系统提供的一个替代 C 语言的方案是 MicroPython。MicroPython 是一个 CPython端口,旨在运行在基于 MCU 的系统上。虽然它无疑是一个比 C语言更重度消耗处理器的用户,但它是一种现代语言,许多开发人员都熟悉和适应它。MicroPython 可以抽象出 MCU和硬件的低层细节。硬件访问是通过高级应用编程接口 (API) 进行的,很容易学习——这是在项目期限紧迫的情况下的一个重要因素。
当选择使用哪种软件开发工具包 (SDK) 时(C 或 MicroPython),开发者需要关注其具体的需求。与 MicroPython 相比,使用 C语言将提供对 MCU 寄存器的低层访问,具有更小的内存占用,而且效率更高。
设置 C SDK
当使用 C SDK 创建 LED 闪烁应用时,有几种选择。第一种是查看 SDK 文档并按照说明进行操作。第二种是使用预设的 Docker容器来自动安装所有必要的工具,以便开始使用。第三种选择是手动安装工具链和 Raspberry Pi Pico 示例代码,包括:
Git
Python 3
Cmake
gcc-arm-none-eabi
libnewlib-arm-none-eabi
可以通过使用以下命令克隆 Raspberry Pi 的 git repo 来完成获取 Raspberry Pi Pico 示例代码:
git clone https://github.com/raspberrypi/pico-sdk /home/sdk/pico-sdk
&&
cd /home/sdk/pico-sdk &&
git submodule update --init &&
这些库和源代码安装完毕后,下一步就是探索和编译 LED 闪烁应用程序。
编写第一个闪烁应用程序
C SDK 带有一个闪烁实例,开发者可以用它来建立其第一个应用程序。以下代码清单使用 Pico 的板载 LED 和PICO_DEFAULT_LED_PIN 指令来设置 I/O 引脚,并以 250 毫秒 (ms) 的延迟进行闪烁。
/**
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include "pico/stdlib.h"
int main() {
#ifndef PICO_DEFAULT_LED_PIN
#warning blink example requires a board with a regular LED
#else
const uint LED_PIN = PICO_DEFAULT_LED_PIN;
gpio_init(LED_PIN);
gpio_set_dir(LED_PIN, GPIO_OUT);
while (true) {
gpio_put(LED_PIN, 1);
sleep_ms(250);
gpio_put(LED_PIN, 0);
sleep_ms(250);
}
#endif
}
代码清单:Raspberry Pi Pico 使用 PICO_DEFAULT_LED_PIN 指令来设置 I/O 引脚,并以 250毫秒的延迟进行闪烁。(代码来源:Raspberry Pi)
根据清单,LED_PIN 被指定为默认引脚;然后调用 C gpio API。gpio_init 用于初始化引脚,而 gpio_set_dir 则用于将LED_PIN 设置为输出。然后创建一个无限循环,每 250 毫秒切换一次 LED 的状态。
编译应用程序是相对简单的。首先,开发者需要使用以下命令在他们的 Raspberry Pi Pico 文件夹中创建一个构建目录:
mkdir build
cd build
接下来,cmake 需要通过执行以下命令为构建做准备:
cmake
现在,开发者可以换到 blinky 目录并运行 make:
cd blink
make
构建过程的输出将是一个 blinky.uf2 文件。通过按住 BOOTSEL 引脚并给电路板通电,可以将编译好的程序加载到 Raspberry Pi Pico 上。然后,RP2 将作为一个大容量存储设备出现。开发者需要将 blinky.uf2 文件拖到驱动器上,这时,引导程序将安装该应用程序。一旦完成,LED应该就会开始闪烁。
结语
对于希望能够掌控开发节奏的嵌入式开发者来说,Raspberry Pi Pico是一个很有吸引力的解决方案。这个方案提供多种选择,包括独立的解决方案或带有无线连接的板卡。此外,其生态系统支持 C 和 C++,以及MicroPython。开发人员可以选择最适合其应用的语言,然后利用相应的 SDK 来加速软件开发。
-
微控制器
+关注
关注
48文章
8249浏览量
162366 -
嵌入式
+关注
关注
5186文章
20146浏览量
328794 -
C语言
+关注
关注
183文章
7642浏览量
144605
发布评论请先 登录
Raspberry Pi Pico是什么
微控制器开发板Raspberry Pi Pico
使用raspberry pi Pico的原因
基于raspberry pi pico的EPS系统
4美元的微控制器Pico与RP2040芯片
树莓派推出首款微控制器级产品Pi Pico
基于树莓派产品 Raspberry Pi微控制器板的优缺点
e络盟现货发售Arduino Nano RP2040 Connect和Raspberry Pi Pico
树莓派 Raspberry Pi 设计的微控制器 RP2040迷你开发板Raspberry Pi Pico
适用于Raspberry Pi 4的Raspberry Pi Pico开发板
使用Raspberry Pi Pico W和MicroPython开发物联网应用
Raspberry Pi Pico 2
Raspberry Pi Pico 2 W 发布

使用 C 语言开始学习 Raspberry Pi Pico 多核微控制器板
评论