0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

海阔天空的专栏 来源:Jacob Beningo 作者:Jacob Beningo 2023-10-03 14:22 次阅读

作者: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.png

图 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.png

图 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)。

2.png

分线板选件

当 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

    文章

    7470

    浏览量

    150943
  • 嵌入式
    +关注

    关注

    5063

    文章

    18990

    浏览量

    302496
  • C语言
    +关注

    关注

    180

    文章

    7596

    浏览量

    136011
收藏 人收藏

    评论

    相关推荐

    首款采用Raspberry Pi定制芯片的微控制器开发 Raspberry Pi Pico即将登陆e络盟

    凡是已熟练使用Raspberry Pi的专业设计工程师,都将能轻松上手Raspberry Pi Pico,也必将折服于它的高度易用性和超高性
    发表于 01-22 12:16 1291次阅读

    Raspberry Pi Pico是什么

    Waveshare给您介绍一款树莓派家族的新成员,Raspberry Pi Pico 是一款低成本,高性能的微控制器开发,具有灵活数字接口
    发表于 07-14 07:02

    微控制器开发Raspberry Pi Pico

    树莓派基金会最新发布一款低成本、高性能的微控制器开发Raspberry Pi Pico,新产品相比普通树莓派体积更小
    发表于 10-29 07:33

    使用raspberry pi Pico的原因

    使用raspberry pi Pico的原因在硬件产品(单片机)的开发中我们往往需要借助一些额外的仪器/设备进行产品的辅助测试, 假设我们需要一个IO+ADC类型辅助设备, 以往的做法是 原理图
    发表于 02-07 09:16

    基于raspberry pi pico的EPS系统

    目的更多详细信息和描述。这个项目是在 raspberry pi pico 发布时开始的,这使得它成为一个令人惊叹的学习体验,几乎没有可供参考
    发表于 07-15 10:05

    Raspberry Pi 4/3B的Pico开发

    Raspberry Pi Pico开始使用 C/C++ 或 MicroPython 的支持
    发表于 07-26 07:14

    4美元的微控制器Pico与RP2040芯片

    今天我们来认识一下Raspberry Pi Pico,一个小小的微控制器,可以让你在微控制器上运行一些代码来构建硬件项目。更有趣的是,
    发表于 01-22 15:51 2474次阅读

    树莓派推出首款微控制器级产品Pi Pico

    1月22日消息,据国外媒体报道,当地时间周四,树莓派基金会(Raspberry Pi Foundation)推出了首款微控制器级产品树莓派Pi Pi
    的头像 发表于 01-23 09:44 3070次阅读

    基于树莓派产品 Raspberry Pi微控制器的优缺点

    早在1月份, Raspberry Pi就推出了使用 RP2040 的 Raspberry Pi Pico
    的头像 发表于 06-12 09:13 2891次阅读

    e络盟现货发售Arduino Nano RP2040 Connect和Raspberry Pi Pico

    Raspberry Pi Pico是首款采用Raspberry Pi自研RP2040微控制器的开
    发表于 09-23 14:26 3206次阅读
    e络盟现货发售Arduino Nano RP2040 Connect和<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b>

    树莓派 Raspberry Pi 设计的微控制器 RP2040迷你开发Raspberry Pi Pico

    Waveshare给您介绍一款树莓派家族的新成员,Raspberry Pi Pico 是一款低成本,高性能的微控制器开发,具有灵活数字接口
    发表于 12-02 13:21 24次下载
    树莓派 <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 设计的<b class='flag-5'>微控制器</b> RP2040迷你开发<b class='flag-5'>板</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b>

    适用于Raspberry Pi 4的Raspberry Pi Pico开发

    电子发烧友网站提供《适用于Raspberry Pi 4的Raspberry Pi Pico开发
    发表于 07-22 09:27 6次下载
    适用于<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 4的<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b>开发<b class='flag-5'>板</b>

    Raspberry Pi Pico是什么?有哪些主要特点

    Raspberry Pi Pico 是一款具有灵活数字接口的低成本、高性能微控制器
    的头像 发表于 07-28 11:11 6616次阅读
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b>是什么?有哪些主要特点

    使用Raspberry Pi Pico进行运动识别

    方案介绍在本教程中,我们将使用机器学习来构建在微型微控制器RP2040上运行的手势识别系统。硬件部件:Raspberry Pi Pico× 
    发表于 12-30 15:44 0次下载

    使用Raspberry Pi Pico W和MicroPython开发物联网应用

    当我们提及物联网(IoT, Internet of Things)开发,可能首先想到的是Arduino或是ESP8266这样的微控制器开发。然而,Raspberry Pi
    的头像 发表于 07-21 09:36 1967次阅读
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b> W和MicroPython开发物联网应用