当前位置: 首页 > wzjs >正文

巩义市住房和城乡规划建设局网站重庆网站建设qq群

巩义市住房和城乡规划建设局网站,重庆网站建设qq群,游戏币网站怎么做,郑州优化网站收费标准前言 使用树莓派 Pico 的 PIO 模块时,我们经常会接触到两个特殊的寄存器:OSR(Output Shift Register) 和 ISR(Input Shift Register)。它们是数据在 Python 层和 PIO 程序之间交互的桥梁。 这一篇我们就带大…

前言

       使用树莓派 Pico 的 PIO 模块时,我们经常会接触到两个特殊的寄存器:OSR(Output Shift Register) 和 ISR(Input Shift Register)。它们是数据在 Python 层和 PIO 程序之间交互的桥梁。

       这一篇我们就带大家全面了解 OSR 与 ISR 的用途、区别、典型应用场景,并配合代码实战讲清楚背后的机制。

OSR & ISR 是什么?

       PIO 是一个指令极少、资源有限的小型状态机,它没有常规意义上的 RAM 或寄存器堆。为了收发数据,它使用两个特别的寄存器:

寄存器

全称

用途

OSR

Output Shift Register

主程序(Python)→ PIO  -----发数据!

ISR

Input Shift Register

PIO → 主程序(Python)-----收数据!

OSR:发送数据到 PIO 的桥梁

数据流方向

Python → FIFO → OSR → PIO 程序

常用指令

  • pull(): 从 FIFO 中拉一条数据进 OSR。

  • mov(pins, osr): 将 OSR 中的数据移动到 GPIO 引脚输出。

  • mov(x, osr):将 OSR 的值写入 X 寄存器等。

示例代码

@asm_pio(out_init=rp2.PIO.OUT_LOW, out_shiftdir=rp2.PIO.SHIFT_LEFT, autopull=True)
def push_out():mov(pins, osr)  # 把 OSR 的值直接输出到引脚
  • autopull=True 表示 OSR 消耗完就自动从 FIFO 拉数据;

  • 你可以在 Python 中用 sm.put(0xAA) 推送数据给 PIO。

ISR:从 PIO 接收数据的管道

数据流方向

PIO 程序 → ISR → FIFO → Python

常用指令

  • in(pins, 1): 从某个 GPIO 引脚读取 1 bit 到 ISR。

  • push(): 将 ISR 的值推送到 FIFO,让 Python 层读取。

  • mov(isr, x): 将寄存器值手动放入 ISR。

示例代码

@asm_pio(in_shiftdir=rp2.PIO.SHIFT_LEFT, autopush=True, push_thresh=8)
def pull_in():in_(pins, 1)   # 每次读取1位,累积到 ISR
  • autopush=True:当 ISR 累积够 push_thresh(如8位)后,自动推送到 FIFO;

  • Python 端可用 sm.get() 获取数据。

OSR & ISR的应用场景

场景

使用寄存器

说明

串口发送

OSR + mov(pins, osr)

把要发的字节写入 OSR,逐位输出

串口接收

ISR + in(pins, 1) + push()

将输入逐位移入 ISR,达到位数后推送

多值缓存

ISR + mov(isr, x)

临时在 ISR 中存多位数据再发送

控制输出模式

OSR + jmp(pin, label)

用 OSR 控制逻辑流转

Python 与 OSR/ISR 的桥梁:FIFO

  • 每个状态机都有两个 4 项深度的 FIFO:

    TX FIFO(OSR 发送)

    RX FIFO(ISR 接收)

  • Python 端用:

    sm.put(val) 将数据送入 OSR(TX FIFO)

    sm.get() 从 ISR(RX FIFO)接收数据

注意事项:

  • 如果 pull() 时 FIFO 为空,状态机会挂起等待

  • 如果 push() 时 FIFO 满了,状态机会暂停直到 FIFO 腾空

总结

名称

用途

Python 接口

PIO 指令

OSR

输出移位寄存器(Python → PIO)[发送!]

sm.put()

pull, mov(pins, osr)

ISR

输入移位寄存器(PIO → Python)[接收!]

sm.get()

in, push, mov(isr, x)


文章转载自:

http://ZgE5bh1m.yymLk.cn
http://IhAMzltI.yymLk.cn
http://fMknLDKn.yymLk.cn
http://pvDq8coy.yymLk.cn
http://KEaUR8GF.yymLk.cn
http://uNdWkU9D.yymLk.cn
http://FnkB4W5r.yymLk.cn
http://3TP3NI9z.yymLk.cn
http://0WItYAtX.yymLk.cn
http://VAWw5mV7.yymLk.cn
http://8IuJRra2.yymLk.cn
http://zpJIeMQN.yymLk.cn
http://N4o2mXzn.yymLk.cn
http://7Ps3QaSw.yymLk.cn
http://DtOfs5Ec.yymLk.cn
http://oyqyd4lw.yymLk.cn
http://o09RpBiB.yymLk.cn
http://UAbxGA3I.yymLk.cn
http://evXIM4cn.yymLk.cn
http://ETvPSOpn.yymLk.cn
http://D7PG3pdZ.yymLk.cn
http://hhwmM7yQ.yymLk.cn
http://kZK4lycZ.yymLk.cn
http://j3qj6bAG.yymLk.cn
http://RB19eXpt.yymLk.cn
http://f3v1i6kI.yymLk.cn
http://rYMoXPwM.yymLk.cn
http://ZInkVwtV.yymLk.cn
http://bDI0G6eQ.yymLk.cn
http://N5MoqVW5.yymLk.cn
http://www.dtcms.com/wzjs/676038.html

相关文章:

  • 收费小说网站怎么做wordpress图片域名哪里设置
  • 营销手机网站版面单页设计图片
  • 清溪网站仿做服务器搭建网站用什么系统
  • 巴彦淖尔网站制作开发保障性住房建设投资中心网站
  • 货代到哪个网站开发客户建设的基本流程网站
  • 国内优秀网站网页设计生意街创业商机网
  • 网深圳网站优化网站服务合同交印花税吗
  • 安徽元鼎建设公司网站怎样建设责任文化
  • 注册网站代码搜索引擎实训心得体会
  • 如何开始做婚恋网站企业网站建设找外包公司做
  • 无锡建设机械网站制作百度 指数
  • 营销型网站建设设计服务网页界面设计图
  • 电商网站设计公司只选亿企邦重庆网站建设公司招聘
  • 做流媒体视频播放网站求助安全的网站建设推广
  • 成都做公司网站自助下单网站咋做
  • 即墨城乡建设局网站西安做视频网站公司
  • 苏州做网站套路骗全网商城系统
  • 网站改版需要注意网络接入服务商是什么意思
  • 网站 后台 设计做灯箱片的设计网站
  • 马克杯在线设计网站网络营销市场
  • 枣庄网站建设哪家强公司建网站多少钱
  • 网页游戏网站知乎wordpress获取指定目录的文章
  • 网站数据搬家建站系统软件有哪些
  • 阜阳市城乡建设局网站亚马逊购物
  • 合肥网站建设第一品牌国外网站建设官网
  • 网站添加微信支付功能wordpress分权限浏览器
  • php能开发大型网站网站被k是怎么回事
  • asp.net网站开发实例教程 下载武进网站建设平台
  • 网站开发程序员岗位职责营销型网站一个多少钱
  • 大连永锐网站哪家做的湖南企业注册app