那曲檬骨新材料有限公司

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

    文章

    7651

    瀏覽量

    152124
  • 嵌入式
    +關注

    關注

    5094

    文章

    19178

    瀏覽量

    307732
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137738
收藏 人收藏

    評論

    相關推薦

    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 ?2544次閱讀

    樹莓派推出首款微控制器級產品Pi Pico

    1月22日消息,據國外媒體報道,當地時間周四,樹莓派基金會(Raspberry Pi Foundation)推出了首款微控制器級產品樹莓派Pi Pi
    的頭像 發表于 01-23 09:44 ?3162次閱讀

    基于樹莓派產品 Raspberry Pi微控制器的優缺點

    早在1月份, Raspberry Pi就推出了使用 RP2040 的 Raspberry Pi Pico
    的頭像 發表于 06-12 09:13 ?3001次閱讀

    e絡盟現貨發售Arduino Nano RP2040 Connect和Raspberry Pi Pico

    Raspberry Pi Pico是首款采用Raspberry Pi自研RP2040微控制器的開
    發表于 09-23 14:26 ?3252次閱讀
    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 ?6918次閱讀
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b>是什么?有哪些主要特點

    使用Raspberry Pi Pico W和MicroPython開發物聯網應用

    當我們提及物聯網(IoT, Internet of Things)開發,可能首先想到的是Arduino或是ESP8266這樣的微控制器開發。然而,Raspberry Pi
    的頭像 發表于 07-21 09:36 ?2218次閱讀
    使用<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b> W和MicroPython開發物聯網應用

    Raspberry Pi Pico 2

    、可選的RISC?V內核、增強的安全特性,以及升級的接口功能。該器件由RP235x微控制器平臺提供支持,此平臺也由Raspberry Pi設計。Pico 2將RP2350與4MB板載Q
    的頭像 發表于 11-25 15:10 ?708次閱讀
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b> 2

    Raspberry Pi Pico 2 W 發布

    樹莓派官方今日宣布推出支持無線連接的新款 MCU(微控制器)主板 Raspberry Pi Pico 2 W,售價 7 美元, 較此前的有線版本高出 2 美元 。 ? ?
    的頭像 發表于 11-25 18:25 ?621次閱讀
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Pico</b> 2 W 發布
    百家乐体育直播| 大发888真人 新浪微群| 在线百家乐官网3d| 百家乐赌场技巧论坛| 百家乐官网榄梯打法| 百家乐如何破解| 游艇会娱乐城| 在线老虎机| 免费百家乐官网统计工具| 大发888游戏平台黄埔| 百家乐怎么压对子| 衡东县| 网上百家乐骗局| 皇冠网百家乐官网平台| 百家乐真人娱乐场开户注册| 百家乐官网筹码500| 全讯网信息| 金三角百家乐官网的玩法技巧和规则 | 必博娱乐| 百家乐赌场| 龍城百家乐官网的玩法技巧和规则 | 二八杠论坛| 百家乐视频聊天游戏| 百家乐官网21点桌| 网上真钱麻将| 威尼斯人娱乐城佣金| 玩百家乐技巧看路| 网上百家乐官网大赢家| 新盈国际| 百家乐倍投工具| 百家乐庄闲比率| 百家乐官网走势图解| 在线真钱游戏| 大发888棋牌官网| 网络百家乐玩法| 博九百家乐官网的玩法技巧和规则 | 百家乐官网视频连线| 大发888 游戏下载| 百家乐三路法| 百家乐试玩网站| 网上百家乐官网赌博出|