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

做网站需要的信息太原互联网推广公司

做网站需要的信息,太原互联网推广公司,n加1网站建设,最近国际时事前言 使用树莓派 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://www.dtcms.com/wzjs/32224.html

相关文章:

  • 跨境电商东莞网站建设域名注册信息怎么查
  • 网站运行需求正规seo需要多少钱
  • 大理企业网站建设泰州seo网络公司
  • 网站建设 书平台推广广告宣传词
  • 怎么给自己公司做网站seo的优缺点
  • 太原谁想做网站长沙关键词优化新行情报价
  • 苏州网站设计公司排名百度官网app下载
  • 做p2p网站的主页模板成都关键词优化报价
  • 网页版梦幻西游官网seo营销的概念
  • 投资加盟项目google推广seo
  • 基于Java EE的电子商务网站建设wordpress建站
  • 网站顶部bt磁力猪
  • 沈阳网站建设那家好写文章在哪里发表挣钱
  • 网站开发最快的语言兰州seo优化
  • 建设网站建设哪家便宜北京网站sem、seo
  • 想开一家客服外包公司单页面网站如何优化
  • 建站做网站产品推广方案要包含哪些内容
  • 做网站建设的企业还有那些什么广告推广最有效果
  • 做电子商务平台网站seo和sem哪个工资高
  • 政府网站建设招标常规模板seo互联网营销培训
  • 内江如何做百度的网站企业宣传册模板
  • 滕州营销型网站建设推广软件赚钱
  • 网站宣传的方法有哪些网站建设方案书
  • 安徽网站定制windows优化大师的作用
  • 腾讯的网站建设用了多少钱广告资源发布平台
  • 网站建设开源项目github线上推广的三种方式
  • 自己做传奇sf网站seo优化工具哪个好
  • 律师事务所公司类网站建设案例互联网营销行业前景
  • 用html5做网站的优点东莞营销网站建设
  • 网站上滚动海报怎么做的推广方案经典范文