Open2

Raspberry Pi PicoのPIOを試す

enchanenchan

クロック周り

Picoは(特に指定のない限り)125MHzで動作する。 125MHz = 8ns/clock
PIOもシステムクロックと同期して(or同速で)動作するが、16bit整数,8bit小数の分周器を搭載している。

たとえば、クロック周波数を4MHzにしたいなら:

// 125MHzを31.25分周すると4MHzになる
sm_config_set_clkdiv_int_frac(&config, 31, 25);

これで以下のPIOアセンブリを実行すると:

.program pulse
    set pindirs, 1

.wrap_target
    set pins, 0
    set pins, 1
.wrap

出力波形はこのようになる

PIOは1命令を1サイクルで実行するので (input-synchronizerなどはここでは考えない)、4MHz = 250ns/cycle となり、周期500nsのパルスが出力される