news 2026/8/29 2:44:20

树莓派Pico‌的pio指令

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
树莓派Pico‌的pio指令

整体结构

RP2040 ├── PIO0 │ ├── Instruction RAM(32× 16bit)│ ├── SM0 │ ├── SM1 │ ├── SM2 │ └── SM3 └── PIO1 ├── Instruction RAM(32× 16bit)├── SM0 ├── SM1 ├── SM2 └── SM3

State Machine(SM)内部寄存器

名称位宽类型说明
PC5 bit寄存器指令计数器
X32 bit寄存器通用工作寄存器
Y32 bit寄存器通用工作寄存器
ISR32 bit移位寄存器输入移位缓存
OSR32 bit移位寄存器输出移位缓存

SM FIFO

PULL(TX → OSR) PUSH(ISR → RX)
名称方向位宽深度本质
TX FIFOCPU → SM32 bit4硬件队列
RX FIFOSM → CPU32 bit4硬件队列

指令宽度:16 bit|1 指令 = 1 cycle(+ delay)

一、PIO 指令

分布 delay / side-set 可重分配

15–1312–87–0
含义OPCODEOPERANDDELAY / SIDESET

指令表

指令作用示例
JMP条件 / 无条件跳转jmp x-- loop
WAIT等待 GPIO / IRQwait 1 pin 0
IN输入到 ISRin pins, 1
OUT从 OSR 输出out pins, 1
PUSHISR → RX FIFOpush
PULLTX FIFO → OSRpull
MOV寄存器操作mov x, osr
IRQ触发 / 等待中断irq 0
SET立即数写寄存器 / GPIOset pins, 1

二、各指令详细表(含例子)

1️⃣ JMP —— 跳转

jmp condition, target
条件含义例子
always无条件jmp start
x--X–,不为 0 则跳jmp x-- loop
y--Y–,不为 0 则跳jmp y-- send
!xX == 0jmp !x done
x!=yX ≠ Yjmp x!=y retry
pinpin 为 1jmp pin high
!osreOSR 非空jmp !osre more

2️⃣ WAIT —— 等待

waitpolaritysourceindex
项目说明例子
polarity等待 0 / 1wait 0 gpio 5
GPIO指定 GPIOwait 1 gpio 2
PINpin 映射wait 1 pin 0
IRQ等待 IRQwait 1 irq 0

3️⃣ IN —— 输入移位

insource, bit_count
source说明例子
pins从 GPIO 读in pins, 1
x从 Xin x, 8
y从 Yin y, 4
null填 0in null, 8
isrISR → ISRin isr, 1

4️⃣ OUT —— 输出移位

out dest, bit_count
dest说明例子
pins输出到 GPIOout pins, 1
x输出到 Xout x, 8
y输出到 Yout y, 4
null丢弃out null, 32
pindirs设置方向out pindirs, 1

5️⃣ PUSH —— ISR → RX FIFO

push[if_full][block]
形式说明例子
默认阻塞push
if_fullISR 满才推push if_full
noblock非阻塞push noblock

6️⃣ PULL —— TX FIFO → OSR

pull[if_empty][block]
形式说明例子
默认阻塞pull
if_emptyOSR 空才拉pull if_empty
noblock非阻塞pull noblock

7️⃣ MOV —— 寄存器操作

mov dest, src
src说明例子
xXmov y, x
yYmov x, y
osrOSRmov x, osr
isrISRmov osr, isr
null0mov x, null
~x取反mov x, ~x

8️⃣ IRQ —— 中断

irq[set|clear|wait]index
操作说明例子
set触发 IRQirq set 0
clear清 IRQirq clear 0
wait等待 IRQirq wait 0

9️⃣SET —— 立即数写

setdest, value
dest说明例子
pinsGPIO 输出set pins, 1
xX 寄存器set x, 10
yY 寄存器set y, 3
pindirsGPIO 方向set pindirs, 1
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 6:18:32

AI教材生成超厉害!一键搞定创作,低查重通过审核没问题!

教材初稿终于完成,但接下来的修改和优化过程简直就是一种“煎熬”!要通读整本书寻找逻辑上的漏洞和知识点的错误,这可真需要花费不少时间;而调整一个章节的结构,往往会影响到后面好几个部分,修改的工作量几…

作者头像 李华
网站建设 2026/8/19 14:40:29

基于 ESP32 的雨伞遗忘提醒挂钩设计与实现

引言 下雨天出门忘带伞、到家忘收伞是生活中常见的小烦恼,尤其是匆忙出门时,雨伞遗落在挂钩上往往会导致出行不便。本文基于 ESP32 微控制器设计一款低成本、易实现的 “雨伞遗忘” 提醒挂钩,通过压力检测判断雨伞是否悬挂、人体红外检测判断人员是否离开,当检测到 “有伞…

作者头像 李华
网站建设 2026/8/18 23:23:39

传输标准:企业应如何统一资源分级、负载配置与广域连通指标

制定传输资源分级标准、实施路由系统负载配置、达成广域网路由连通指标 摘要 本文为企业IT部门、信息化负责人及运维团队提供核心价值:通过可视化运行监控系统,支撑系统规划、标准化交付与平台化运维,实现高确定性的ICT基础设施管理&#x…

作者头像 李华
网站建设 2026/8/27 19:22:07

AI写论文超神组合!4款AI论文写作工具,为你的毕业论文保驾护航!

AI论文写作工具推荐 还在为撰写期刊论文而烦恼吗?面对海量的文献、复杂的格式以及无休止的修改,使得学术工作者们的效率普遍不高!别担心,接下来我将推荐四款实测过的AI论文写作工具,它们能从论文文献检索、论文大纲生…

作者头像 李华
网站建设 2026/8/21 0:18:43

类的访问权限:public、private 与 protected 详解

类的访问权限:public、private 与 protected 详解 在C面向对象编程中,类的三大访问权限(public、private、protected)是实现封装特性的核心,也是连接类的定义与对象使用的关键纽带。上一篇博客《C 类与对象&#xff1…

作者头像 李华