0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >工业控制 > 使用C开始使用Raspberry Pi Pico多核微控制器板

使用C开始使用Raspberry Pi Pico多核微控制器板

来源:
2023-06-12
类别:工业控制
eye 120
文章创建人 拍明芯城

  雅各布·贝宁戈

  嵌入式系统固有地需要具有功能强大、低成本的微控制器单元 (MCU)。这些设备不仅在产品中发挥着重要作用,而且在支持测试、快速原型设计和机器学习 (ML) 等功能方面也发挥着重要作用。但是,开始使用 MCU 通常需要深入了解 MCU 技术和低级编程语言。最重要的是,开发板的价格通常在 20 美元到 1000 美元之间,这对许多开发人员来说太贵了。此外,开发板并不总是可用的,即使有,设计人员也常常难以启动并运行开发板。

  本文介绍Raspberry Pi Pico (SC0915) 作为RP2040 MCU的低成本开发板,可为开发人员提供广泛的功能。本文探讨了 Pico 和一些扩展板,检查了 Raspberry Pi Pico 支持的不同软件开发套件,并演示了如何使用 C SDK 创建闪烁的 LED 应用程序。

  Raspberry Pi Pico 简介

  Raspberry Pi Pico 于 2021 年首次作为 RP2040 微控制器的开发平台推出。 Pico 可以用作独立的开发板,或者由于可以焊接到载板上的边缘连接,它可以直接设计到产品中(图 1)。 Pico 低于 5 美元的成本及其多功能用途,已成为制造商和专业开发人员的热门解决方案。

  

Raspberry Pi Pico 的图片是一款低成本开发板


  图 1:Raspberry Pi Pico 是一款低成本开发板,包含在 RP2040 微控制器上开发应用程序所需的一切。 (图片来源:树莓派)

  RP2040 采用主频为 133 兆赫兹 (MHz) 的双核Arm® Cortex®-M0+ 处理器,并包含高达 264 千字节 (Kbytes) 的 SRAM。 RP2040 不包括片上闪存。相反,Raspberry Pi Pico 提供了一个外部 2 兆字节 (Mbyte) 闪存芯片,该芯片通过四串行外设接口 (QSPI) 与 RP2040 连接。该板还提供了一个用户 LED、一个晶体振荡器(锁相环 (PLL) 用于创建稳定的高速 CPU 时钟)和一个按钮(用于配置处理器是正常启动还是进入引导加载程序)。

  广泛的生态系统

  Raspberry Pi Pico 已经拥有广泛的生态系统,允许开发人员选择使用 MicroPython 或 C 软件开发工具包为电路板编写应用程序。关于 Raspberry Pi Pico 的一个有趣的注意事项是,不只有一个可用的开发板。相反,有三个;具有标准配置的原始 SC0915、包含接头连接器的SC0917以及包含用于连接应用的低成本 Wi-Fi 芯片的SC0918 (图 2)。

  

Raspberry Pi Pico 图像提供三种配置


  图 2:Raspberry Pi Pico 提供三种配置。 (图片来源:Beningo Embedded Group, LLC)

  对于这些版本中的每一个,电路板的总体占用空间都保持不变。电路板的边缘连接包括用于外围设备的 40 引脚边缘连接和连接选项,如图 3 所示。这些包括电源、接地、通用异步接收器和发送器 (UART)、通用输入和输出 (GPIO)、脉冲宽度调制 (PWM)、模数转换器 (ADC)、串行外围互连 (SPI)、内部集成电路 (I2C) 接口和调试。

  

Raspberry Pi Pico 边缘连接引出线图像(点击放大)


  图 3:Raspberry Pi Pico 边缘连接引出线提供了多种外设访问。 (图片来源:树莓派)

  分线板选项

  当 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 示例代码,包括:

  混帐

  蟒蛇3

  制作

  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 子模块更新 --init &&

  一旦安装了这些库和源代码,下一步就是探索和编译闪烁的 LED 应用程序。

  编写第一个 blinky 应用程序

  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 毫秒的延迟使其闪烁。 (代码来源:树莓派)

  根据列表,LED_PIN 被分配了默认引脚;然后调用 C gpio API。 gpio_init 用于初始化引脚,而 gpio_set_dir 用于将 LED_PIN 设置为输出。然后创建一个无限循环,每 250 毫秒切换一次 LED 的状态。

  编译应用程序相对简单。首先,开发人员需要使用以下命令在其 Raspberry Pi Pico 文件夹中创建构建目录:

  mkdir 构建

  光盘构建

  接下来,cmake 需要通过执行以下命令为构建做好准备:

  制作

  现在,开发人员可以切换到 blinky 目录并运行 make:

  CD闪烁

  制作

  构建过程的输出将是一个 blinky.uf2 文件。编译后的程序可以通过按住 BOOTSEL 引脚并给板子上电来加载到 Raspberry Pi Pico 上。然后 RP2 将显示为大容量存储设备。开发人员需要将 blinky.uf2 文件拖到驱动器上,此时引导加载程序将安装应用程序。完成后,LED 应开始闪烁。

  结论

  Raspberry Pi Pico 是一款极具吸引力的解决方案,适用于寻求开发周期灵活性的嵌入式开发人员。有多种选择可供选择,包括独立解决方案或具有无线连接功能的电路板。此外,生态系统支持 C 和 C++,以及 MicroPython。开发人员可以选择最适合其应用程序的语言,然后利用相应的 SDK 来加速软件开发。

责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯