网易首页 > 网易号 > 正文 申请入驻

Raspberry Pi Pico的原型开发 还是用 C 语言好!

0
分享至

文章摘要

本文介绍了作为用于RP2040MCU 的低成本开发板的 Raspberry PiPico (SC0915),该板能为开发者提供广泛的功能。文章探讨了Pico 和一些扩展板,研究了 Raspberry Pi Pico 支持的不同软件开发工具包,并演示了如何使用 C SDK 创建一个 LED 闪光应用。

在嵌入式系统中,有一个内在的需求,就是要有一个强大的、低成本的微控制器单元 (MCU)。这些设备不仅在产品中发挥着重要作用,而且在支持测试、快速原型设计和机器学习 (ML) 之类能力方面也发挥着重要作用。然而,使用 MCU 通常需要对 MCU 技术和底层编程语言有深入的了解。除此之外,开发板的价格往往在 20 美元到 1000 美元之间,这对许多开发人员来说可能太昂贵了。此外,并不总是有开发板,即使有开发板,设计者也常常要花很多精力让开发板启动并运行起来。

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


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

这些版本中的每一个板子的引脚尺寸都是相同的。板子边缘连接由 40 针边缘连接组成,用于图 3 所示的外围设备和连接选件。其中包括电源、地线、通用异步接收器和发射器 (UART)、通用输入和输出 (GPIO)、脉冲宽度调制 (PWM)、模数转换器 (ADC)、串行外设互连 (SPI)、内部集成电路 (I2C) 接口和调试。


图 3:Raspberry Pi Pico 边缘连接引脚分配提供了多种多样的外设接入方式。(图片来源:Raspberry Pi)

分线板选件

当 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) 的延迟进行闪烁。


代码清单: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 来加速软件开发。

最后,如果你喜欢这篇文章,快分享给更多的小伙伴吧! 切记点个赞哦!

“星标”我们,不错过新鲜案例和行业干货

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
失业潮的终极解法,历史只教了我们一课:不是救济,是战争

失业潮的终极解法,历史只教了我们一课:不是救济,是战争

经济学教授V
2025-12-30 18:41:37
看完《小城大事》再看《生命树》,我只想说:没有对比就没有伤害

看完《小城大事》再看《生命树》,我只想说:没有对比就没有伤害

绝世的画a
2026-02-05 02:43:26
他8次上春晚,作死被捕入狱,如今56岁无人问津,沦落到四处走穴

他8次上春晚,作死被捕入狱,如今56岁无人问津,沦落到四处走穴

小熊侃史
2026-01-06 11:17:00
郑钦文确认复出!首秀时间曝光,短短17天签下2份代言,年入超2亿

郑钦文确认复出!首秀时间曝光,短短17天签下2份代言,年入超2亿

侃球熊弟
2026-02-07 00:20:03
谷爱凌不再回避!坦言世界不会原谅我了,原来她和全红婵处境一样

谷爱凌不再回避!坦言世界不会原谅我了,原来她和全红婵处境一样

秋姐居
2026-02-01 11:42:23
有人预测:今明两年,如果不出意外,社会有可能发生4大变化

有人预测:今明两年,如果不出意外,社会有可能发生4大变化

娱乐的硬糖吖
2026-02-06 15:35:40
多家中小银行宣布:上调存款利率

多家中小银行宣布:上调存款利率

环球网资讯
2026-02-06 15:45:03
很多家庭,已经在崩溃的边缘硬撑了

很多家庭,已经在崩溃的边缘硬撑了

深度报
2026-01-18 22:37:28
1965,风暴前的宁静

1965,风暴前的宁静

方待夜半听君语
2026-02-01 07:43:54
刚刚,杭州下大雪了!天气预报有调整

刚刚,杭州下大雪了!天气预报有调整

浙江之声
2026-02-06 18:05:49
台湾网红馆长第二次直播带货不及预期,未来前景也堪忧

台湾网红馆长第二次直播带货不及预期,未来前景也堪忧

总在茶余后
2026-02-07 00:01:49
胡兵54岁,身家过亿,独居,北京国贸720平豪宅,衣帽间像专卖店

胡兵54岁,身家过亿,独居,北京国贸720平豪宅,衣帽间像专卖店

百态人间
2026-02-05 15:34:25
“16个Agent组队,两周干翻37年GCC!”最强编码模型Claude Opus 4.6首秀,10万行Rust版C编译器震撼业界

“16个Agent组队,两周干翻37年GCC!”最强编码模型Claude Opus 4.6首秀,10万行Rust版C编译器震撼业界

InfoQ
2026-02-06 10:17:28
国家终于出手了!不仅是李梓萌被牵连,就连全红婵张文宏也没逃过

国家终于出手了!不仅是李梓萌被牵连,就连全红婵张文宏也没逃过

巧手晓厨娘
2025-12-26 21:34:40
奥沙利文选择退出球员锦标赛,他的世界排名也跌出了前十

奥沙利文选择退出球员锦标赛,他的世界排名也跌出了前十

懂球帝
2026-02-07 01:34:10
阿尔特塔:罗塞尼尔的不满?如果我们有不当行为,我们会道歉

阿尔特塔:罗塞尼尔的不满?如果我们有不当行为,我们会道歉

懂球帝
2026-02-07 00:20:48
乌军一年阵亡不到10000人?俄军:光尸体就给你1.6万多具了

乌军一年阵亡不到10000人?俄军:光尸体就给你1.6万多具了

战风
2026-02-06 15:17:57
60岁大爷:每天早起以晨跑为由和情人约会,被老婆发现后遭报应

60岁大爷:每天早起以晨跑为由和情人约会,被老婆发现后遭报应

热心柚子姐姐
2026-02-05 10:50:56
2026年交管12123新规:一年4次免罚机会,但机会背后大有门道

2026年交管12123新规:一年4次免罚机会,但机会背后大有门道

老特有话说
2026-01-22 21:22:06
平型关战日军辎重队伤亡惨重,因队藏五百精兵且六千援军将至

平型关战日军辎重队伤亡惨重,因队藏五百精兵且六千援军将至

唠叨说历史
2026-01-26 15:07:49
2026-02-07 03:48:49
EETOP半导体社区 incentive-icons
EETOP半导体社区
国内著名的电子工程师社区
7248文章数 15585关注度
往期回顾 全部

科技要闻

独角兽版图巨变:SpaceX奔万亿 中美差在哪

头条要闻

电动车行业"老三"冲刺上市 分股东2亿克扣员工社保3亿

头条要闻

电动车行业"老三"冲刺上市 分股东2亿克扣员工社保3亿

体育要闻

西甲射手榜第2,身价不到姆巴佩1/40

娱乐要闻

微博之夜抢C风波 杨幂工作室9字讨说法

财经要闻

爱尔眼科董事长旗下7家精神病院骗保

汽车要闻

宝马"本命年"关键词:20款新车与"新世代"耐力赛

态度原创

本地
健康
房产
亲子
军事航空

本地新闻

围观了北京第一届黑色羽绒服大赛,我笑疯了

转头就晕的耳石症,能开车上班吗?

房产要闻

新春三亚置业,看过这个热盘再说!

亲子要闻

冬末春初娃燥慌,雪梨润燥超管用,给娃吃对更舒服

军事要闻

美国“肯尼迪”号核动力航母完成首次海试

无障碍浏览 进入关怀版