色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

樹莓派PICO pio使用

冬至子 ? 來源:螺絲松掉的人 ? 作者:螺絲松掉的人 ? 2023-10-18 15:17 ? 次閱讀

樹莓派 Pico 小小的板子上總是能讓我們發(fā)現(xiàn)一些驚喜。其所使用的RP2040芯片還具備8個可編程I/O(PIO)狀態(tài)機,用于自定義外圍設備,與 FPGA 類似,開發(fā)者可以靈活的使用 PIO 自定義功能。

可編程I/O(PIO)是為 RP2040 開發(fā)的一種新型硬件,可以通過 PIO 創(chuàng)建新類型的(或附加)硬件接口。通過使用 PIO ,可以模擬更多,更豐富,更快的硬件接口,有助于提升性能和擴展性。

與 PIO 相比,F(xiàn)PGA 往往更加昂貴,而且需要使用其他的編程模式編寫程序。但 PIO 僅僅只需要通過匯編語言就可以實現(xiàn),開發(fā)者不需要去適應 FPGA 那種編程模式即可很快的實現(xiàn)自定義硬件接口。

PIO 一個簡單的 demo:

主要需要用到一個匯編實現(xiàn)的pio文件,一些C文件,和Cmake文件,實現(xiàn)串口打印 hello

pio文件:

.program hello
; Repeatedly get one word of data from the TX FIFO, stalling when the FIFO is
; empty. Write the least significant bit to the OUT pin group.
loop:
pull
out pins, 1
jmp loop
% c-sdk {
static inline void hello_program_init(PIO pio, uint sm, uint offset, uint pin) {
pio_sm_config c = hello_program_get_default_config(offset);
// Map the state machine's OUT pin group to one pin, namely the pin
// parameter to this function.
sm_config_set_out_pins(&c, pin, 1);
// Set this pin's GPIO function (connect PIO to the pad)
pio_gpio_init(pio, pin);
// Set the pin direction to output at the PIO
pio_sm_set_consecutive_pindirs(pio, sm, pin, 1, true);
// Load our configuration, and jump to the start of the program
pio_sm_init(pio, sm, offset, &c);
// Set the state machine running
pio_sm_set_enabled(pio, sm, true);
}
%}

其流程主要如下:

將程序加載到PIO的指令存儲器中;

設置PIO狀態(tài)機以運行程序;

在狀態(tài)機運行時與狀態(tài)機交互。

C文件:

#include "pico/stdlib.h"
#include "hardware/pio.h"
// Our assembled program:
#include "hello.pio.h"
int main() {
#ifndef PICO_DEFAULT_LED_PIN
#warning pio/hello_pio example requires a board with a regular LED
#else
// Choose which PIO instance to use (there are two instances)
PIO pio = pio0;
// Our assembled program needs to be loaded into this PIO's instruction
// memory. This SDK function will find a location (offset) in the
// instruction memory where there is enough space for our program. We need
// to remember this location!
uint offset = pio_add_program(pio, &hello_program);
// Find a free state machine on our chosen PIO (erroring if there are
// none). Configure it to run our program, and start it, using the
// helper function we included in our .pio file.
uint sm = pio_claim_unused_sm(pio, true);
hello_program_init(pio, sm, offset, PICO_DEFAULT_LED_PIN);
// The state machine is now running. Any value we push to its TX FIFO will
// appear on the LED pin.
while (true) {
// Blink
pio_sm_put_blocking(pio, sm, 1);
sleep_ms(500);
// Blonk
pio_sm_put_blocking(pio, sm, 0);
sleep_ms(500);
}
#endif
}

我們會發(fā)現(xiàn)其中調用了 “hello.pio.h” 頭文件,其與之前的 pio 文件相關,但 pio 文件并不能在 c 文件中直接調用,于是就需要 Cmake 文件將 pio 文件和 c 文件聯(lián)系到一起,并構建一個可執(zhí)行文件。

Cmake文件

add_executable(hello_pio)
pico_generate_pio_header(hello_pio ${CMAKE_CURRENT_LIST_DIR}/hello.pio)
target_sources(hello_pio PRIVATE hello.c)
target_link_libraries(hello_pio PRIVATE
pico_stdlib
hardware_pio
)
pico_add_extra_outputs(hello_pio)

add url via pico_set_program_url

example_auto_set_url(hello_pio)

其中的 pico_generate_pio_header 非常重要,其將之前用匯編語言寫的 pio 文件生成為一個 .h 頭文件,以供 c 文件調用。

通過這寫文件和 pico 官方提供的 sdk 就可以構建一個串口打印 hello 的程序了。

其他

我是在移植 pico-w 板載的 Wi-Fi 功能時注意到這一功能的,因為需要使用到 cyw43_bus_pio_spi.pio 。但是由于 RT-Thread 這邊使用的是 Scons,于是我就先利用 pico-examples 的 cmake 生成該 pio文件對應的 .h 文件 cyw43_bus_pio_spi.pio.h 然后復制過來是以供項目調用。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1629

    文章

    21729

    瀏覽量

    603010
  • 存儲器
    +關注

    關注

    38

    文章

    7484

    瀏覽量

    163765
  • 狀態(tài)機
    +關注

    關注

    2

    文章

    492

    瀏覽量

    27529
  • RT-Thread
    +關注

    關注

    31

    文章

    1285

    瀏覽量

    40088
  • 樹莓派
    +關注

    關注

    116

    文章

    1706

    瀏覽量

    105609
收藏 人收藏

    評論

    相關推薦

    樹莓Pico如何使用PIO程序呢?

    在這篇教程中,我們看到的代碼看起來與其他的部分的代碼非常不同。那是因為我們大多數(shù)時候不得不在 MCU 的底層處理事情。
    的頭像 發(fā)表于 11-14 15:06 ?1942次閱讀
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>如何使用<b class='flag-5'>PIO</b>程序呢?

    樹莓pico入門學習筆記(一)相關資料推薦

    樹莓pico入門學習筆記選擇自己熟悉的編程語言樹莓pico提供C/C++和micropyth
    發(fā)表于 07-01 09:28

    樹莓pico如何入門?

    樹莓pico如何入門?
    發(fā)表于 10-13 08:11

    樹莓Pico的相關資料分享

    關注、星標公眾號,直達精彩內容1月22日,樹莓基金會最新發(fā)布一款低成本、高性能的微控制器開發(fā)板Raspberry Pi Pico,新產(chǎn)品相比普通樹莓
    發(fā)表于 11-03 08:44

    樹莓Pico的相關資料推薦

    1月22日,樹莓基金會最新發(fā)布一款低成本、高性能的微控制器開發(fā)板Raspberry Pi Pico,新產(chǎn)品相比普通樹莓體積更小,售價僅4
    發(fā)表于 02-07 07:37

    遠程控制樹莓3b上的pi pico

    樹莓pi pico樹莓4相比差別很大,但是pi pico有一些特點是
    的頭像 發(fā)表于 03-05 17:23 ?3976次閱讀

    樹莓也出MCU了?樹莓Pico來了!

    關注、星標公眾號,直達精彩內容1月22日,樹莓基金會最新發(fā)布一款低成本、高性能的微控制器開發(fā)板Raspberry Pi Pico,新產(chǎn)品相比普通樹莓
    發(fā)表于 10-28 10:36 ?11次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>也出MCU了?<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>來了!

    樹莓不講武德,自研雙核MCU Pico,STM32哭暈在廁所!

    PIO架構,能否開創(chuàng)MCU市場全新領域,STM,兆易創(chuàng)新,STC,全志,樂鑫等一票國產(chǎn)MCU能否跟上?樹莓派發(fā)布雙核基于M0的MCU近日,樹莓派發(fā)布了自研的40nm雙核MCU,嵌入式MCU市場又要迎來真正的新氣象.一如之前發(fā)布的
    發(fā)表于 10-28 20:20 ?14次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b>不講武德,自研雙核MCU <b class='flag-5'>Pico</b>,STM32哭暈在廁所!

    樹莓Pico:僅4美元的MCU

    1月22日,樹莓基金會最新發(fā)布一款低成本、高性能的微控制器開發(fā)板Raspberry Pi Pico,新產(chǎn)品相比普通樹莓體積更小,售價僅4
    發(fā)表于 12-04 13:06 ?13次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>:僅4美元的MCU

    樹莓pico入門學習筆記(一)

    樹莓pico入門學習筆記選擇自己熟悉的編程語言樹莓pico提供C/C++和micropyth
    發(fā)表于 12-17 18:42 ?21次下載
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>pico</b>入門學習筆記(一)

    距離檢測報警使用樹莓Pico

    電子發(fā)燒友網(wǎng)站提供《距離檢測報警使用樹莓Pico.zip》資料免費下載
    發(fā)表于 11-09 11:49 ?0次下載
    距離檢測報警使用<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>

    基于樹莓pico的可編程游戲手柄設計

    方案介紹組件12x12x7.3mm 瞬時觸覺按鈕按鈕樹莓Pico通用 D1286464 OLED 顯示屏操縱桿模塊 PS210 歐姆電阻?組裝將樹莓
    發(fā)表于 12-26 15:10 ?0次下載

    使用樹莓Pico制作USB麥克風

    本指南將教你如何使用樹莓 Pico 和外部數(shù)字麥克風制作屬于自己的 USB 麥克風。本項目通過 RP2040 微控制器(MCU)的編程 I/O(PIO)、直接存儲器訪問(DMA)和通
    的頭像 發(fā)表于 08-17 10:12 ?2945次閱讀
    使用<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>制作USB麥克風

    樹莓Pico Flash驅動踩坑記錄

    樹莓 pico 帶有 2MB 的 Flash 資源,以下是我基于官方 Pico C/C++ SDK 對接 Flash 驅動時踩到的一些坑和解決辦法。
    的頭像 發(fā)表于 10-20 11:44 ?1518次閱讀

    如何在樹莓Pico上使用紅外線接收模塊?

    樹莓 Pico 上使用紅外線接收模塊(HX1838 型),我們采用開源的 pico_ir 庫。
    的頭像 發(fā)表于 11-30 09:08 ?2199次閱讀
    如何在<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>上使用紅外線接收模塊?
    主站蜘蛛池模板: 国产午夜免费视频片夜色| 一区二区乱子伦在线播放| 国内精自品线一区91| 亚洲精品国产高清嫩草影院| 果冻传媒在线播放 免费观看| 一个人在线观看免费中文www| 麻豆精品一区二正一三区| cctv网站| 甜涩性爱下载| 精品人伦一区二区三区潘金莲| 2019久久视频这里有精品15| 欧美人xxxxx| 国产精品久久久久婷婷五月色婷婷| 亚洲国产成人在线视频| 久久视频这有精品63在线国产| 99久久e免费热视频百度| 色欲AV精品一区二区入口| 韩国精品无码少妇在线观看网站| 中文无码第3页不卡av| 欧美怡红院视频一区二区三区| 国产成人免费| 一本色道久久综合亚洲精品| 男人被绑着强行摸j| 国产Av男人的天堂精品良久| 免费精品在线视频| 99久久香蕉| 无码一区二区三区| 久久青草免费91线频观看站街 | 国产乱码卡二卡三卡4W| 天天爽夜夜爽8888视频精品| 黄色大片久久| gratis videos欧美最新| 性欧美video另类hd高清| 曼谷av女郎| 国产精品一区二区AV交换| 又长又大又粗又硬3p免费视频| 青柠在线观看免费全集| 国产亚洲精品久久久久小 | 手机看片一区二区| 久久精品视在线观看2| 纯肉腐文高H总受男男|