diff options
| author | kbleeke <[email protected]> | 2023-03-19 16:43:46 +0100 |
|---|---|---|
| committer | kbleeke <[email protected]> | 2023-03-19 17:00:45 +0100 |
| commit | a6a2a035d57ced9a7a9bb2ef325885063ea83295 (patch) | |
| tree | 35481496cc4a9fbd7870b594be7458503c80b300 /examples | |
| parent | 0ff606dfc151b1b3812087b7508fdf4bee3b240b (diff) | |
even faster pio speed are possible
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/rpi-pico-w/src/pio.rs | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/examples/rpi-pico-w/src/pio.rs b/examples/rpi-pico-w/src/pio.rs index abb71b5de..1bf304d5d 100644 --- a/examples/rpi-pico-w/src/pio.rs +++ b/examples/rpi-pico-w/src/pio.rs | |||
| @@ -2,7 +2,7 @@ use core::slice; | |||
| 2 | 2 | ||
| 3 | use cyw43::SpiBusCyw43; | 3 | use cyw43::SpiBusCyw43; |
| 4 | use embassy_rp::dma::Channel; | 4 | use embassy_rp::dma::Channel; |
| 5 | use embassy_rp::gpio::{Pin, Pull}; | 5 | use embassy_rp::gpio::{Drive, Pin, Pull, SlewRate}; |
| 6 | use embassy_rp::pio::{PioStateMachine, ShiftDirection}; | 6 | use embassy_rp::pio::{PioStateMachine, ShiftDirection}; |
| 7 | use embassy_rp::relocate::RelocatedProgram; | 7 | use embassy_rp::relocate::RelocatedProgram; |
| 8 | use embassy_rp::{pio_instr_util, Peripheral}; | 8 | use embassy_rp::{pio_instr_util, Peripheral}; |
| @@ -43,10 +43,11 @@ where | |||
| 43 | "out pins, 1 side 0" | 43 | "out pins, 1 side 0" |
| 44 | "jmp x-- lp side 1" | 44 | "jmp x-- lp side 1" |
| 45 | "set pindirs, 0 side 0" | 45 | "set pindirs, 0 side 0" |
| 46 | // "nop side 1" | 46 | "nop side 1" |
| 47 | "lp2:" | 47 | "lp2:" |
| 48 | "in pins, 1 side 0" | 48 | "in pins, 1 side 1" |
| 49 | "jmp y-- lp2 side 1" | 49 | "jmp y-- lp2 side 0" |
| 50 | |||
| 50 | ".wrap" | 51 | ".wrap" |
| 51 | ); | 52 | ); |
| 52 | 53 | ||
| @@ -55,15 +56,22 @@ where | |||
| 55 | let mut pin_io = sm.make_pio_pin(dio); | 56 | let mut pin_io = sm.make_pio_pin(dio); |
| 56 | pin_io.set_pull(Pull::Down); | 57 | pin_io.set_pull(Pull::Down); |
| 57 | pin_io.set_schmitt(true); | 58 | pin_io.set_schmitt(true); |
| 58 | let pin_clk = sm.make_pio_pin(clk); | 59 | pin_io.set_input_sync_bypass(true); |
| 60 | |||
| 61 | let mut pin_clk = sm.make_pio_pin(clk); | ||
| 62 | pin_clk.set_drive_strength(Drive::_12mA); | ||
| 63 | pin_clk.set_slew_rate(SlewRate::Fast); | ||
| 59 | 64 | ||
| 60 | sm.write_instr(relocated.origin() as usize, relocated.code()); | 65 | sm.write_instr(relocated.origin() as usize, relocated.code()); |
| 61 | 66 | ||
| 67 | // 32 Mhz | ||
| 68 | sm.set_clkdiv(0x03E8); | ||
| 69 | |||
| 62 | // 16 Mhz | 70 | // 16 Mhz |
| 63 | sm.set_clkdiv(0x07d0); | 71 | // sm.set_clkdiv(0x07d0); |
| 64 | 72 | ||
| 65 | // 8Mhz | 73 | // 8Mhz |
| 66 | sm.set_clkdiv(0x0a_00); | 74 | // sm.set_clkdiv(0x0a_00); |
| 67 | 75 | ||
| 68 | // 1Mhz | 76 | // 1Mhz |
| 69 | // sm.set_clkdiv(0x7d_00); | 77 | // sm.set_clkdiv(0x7d_00); |
