【问题标题】:Raspberry Pi Pico - Generate finite length square waveRaspberry Pi Pico - 生成有限长度方波
【发布时间】:2021-10-21 14:03:55
【问题描述】:

我有一个关于使用 Raspberry Pi Pico 生成有限长度方波的问题。例如,我想生成一个 100 个周期的 20 kHz 方波,或者生成一个精确为 1 ms 的 20 kHz 方波。我无法准确控制它。

生成无限长的方波很容易,网上有很多例子。我可以使用 PIO 来实现它。例如,下面的代码可以这样做:

import rp2
from machine import Pin 
@rp2.asm_pio(set_init=rp2.PIO.OUT_LOW)
def blink():
    set(pins, 1)
    set(pins, 0)

sm = rp2.StateMachine(0, blink, freq=25000, set_base=Pin(26))

sm.active(1)

但是,我不知道如何准确控制方波的长度/周期。使用 time.sleep() 根本不准确。

提前谢谢你!

【问题讨论】:

    标签: micropython raspberry-pi-pico


    【解决方案1】:

    使用 PIO 中的“递减 X”指令来计算所需的周期数。可能需要增加一些延迟才能恢复方波。 jmp(x_dec, "top_of_loop")。你会挂起,等待一些输入,然后从输入 FIFO 中读取 X 值。然后你会运行方波循环,递减 X。当它达到零时,你跳到外循环,在那里你再次等待循环数的新 X 值。我想就是这样!

    【讨论】:

    • 谢谢!我明白了。
    猜你喜欢
    • 2022-10-18
    • 2022-11-22
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 2022-09-25
    • 2022-11-02
    • 2023-01-03
    • 2022-12-27
    相关资源
    最近更新 更多