在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

樹莓派PICO pio使用

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

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

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

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

PIO 一個簡單的 demo:

主要需要用到一個匯編實(shí)現(xiàn)的pio文件,一些C文件,和Cmake文件,實(shí)現(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的指令存儲器中;

設(shè)置PIO狀態(tài)機(jī)以運(yùn)行程序;

在狀態(tài)機(jī)運(yùn)行時與狀態(tài)機(jī)交互。

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)其中調(diào)用了 “hello.pio.h” 頭文件,其與之前的 pio 文件相關(guān),但 pio 文件并不能在 c 文件中直接調(diào)用,于是就需要 Cmake 文件將 pio 文件和 c 文件聯(lián)系到一起,并構(gòu)建一個可執(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 文件調(diào)用。

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

其他

我是在移植 pico-w 板載的 Wi-Fi 功能時注意到這一功能的,因?yàn)樾枰褂玫?cyw43_bus_pio_spi.pio 。但是由于 RT-Thread 這邊使用的是 Scons,于是我就先利用 pico-examples 的 cmake 生成該 pio文件對應(yīng)的 .h 文件 cyw43_bus_pio_spi.pio.h 然后復(fù)制過來是以供項(xiàng)目調(diào)用。

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

    關(guān)注

    1629

    文章

    21753

    瀏覽量

    604195
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7512

    瀏覽量

    163980
  • 狀態(tài)機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    492

    瀏覽量

    27571
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1293

    瀏覽量

    40225
  • 樹莓派
    +關(guān)注

    關(guān)注

    117

    文章

    1709

    瀏覽量

    105714
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    樹莓pico入門學(xué)習(xí)筆記(一)相關(guān)資料推薦

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

    樹莓pico如何入門?

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

    樹莓Pico的相關(guān)資料分享

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

    樹莓Pico的相關(guān)資料推薦

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

    遠(yuǎn)程控制樹莓3b上的pi pico

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

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

    關(guān)注、星標(biāo)公眾號,直達(dá)精彩內(nèi)容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架構(gòu),能否開創(chuàng)MCU市場全新領(lǐng)域,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入門學(xué)習(xí)筆記(一)

    樹莓pico入門學(xué)習(xí)筆記選擇自己熟悉的編程語言樹莓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>入門學(xué)習(xí)筆記(一)

    距離檢測報(bào)警使用樹莓Pico

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

    基于樹莓pico的可編程游戲手柄設(shè)計(jì)

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

    使用樹莓Pico制作USB麥克風(fēng)

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

    樹莓Pico Flash驅(qū)動踩坑記錄

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

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

    樹莓 Pico 上使用紅外線接收模塊(HX1838 型),我們采用開源的 pico_ir 庫。
    的頭像 發(fā)表于 11-30 09:08 ?2250次閱讀
    如何在<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>上使用紅外線接收模塊?
    主站蜘蛛池模板: 在线天堂资源| 亚洲三级网| 成人丁香乱小说| 2019天天干天天操| 69日本xxxxxxxxx56| 热久热| 伊人婷婷涩六月丁香七月| 婷婷久久综合网| 日本xxxxx黄区免费看动漫| 日本高免费观看在线播放| 久色99| 99国产精品农村一级毛片| 午夜8050| 福利久久| 色黄网| 性无码专区无码| 欧美伊人久久综合网| 国产三级在线观看视频| 亚洲午夜久久| 国产99久9在线视频| 亚洲免费一区二区| 亚洲国产精品综合久久2007| 日韩电影中文字幕| 国内a级毛片免费···| 99久久综合狠狠综合久久男同| 色视频亚洲| h网站免费在线观看| 一卡二卡四卡无卡乱免费网页| 色老头影视| 国产免费一区二区三区| 午夜剧场刺激性爽免费视频| 成人国产一区二区三区| 久热99| 日韩a视频| www.毛片.com| 国产性夜夜春夜夜爽| 日本不卡在线视频高清免费 | 午夜小视频在线观看| 超薄肉色丝袜精品足j福利| 九九九国产在线| 日本小视频免费|