diff options
| -rw-r--r-- | cyw43-pio/src/lib.rs | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/cyw43-pio/src/lib.rs b/cyw43-pio/src/lib.rs index 2159796cd..46ea0411e 100644 --- a/cyw43-pio/src/lib.rs +++ b/cyw43-pio/src/lib.rs | |||
| @@ -33,18 +33,23 @@ where | |||
| 33 | { | 33 | { |
| 34 | let program = pio_asm!( | 34 | let program = pio_asm!( |
| 35 | ".side_set 1" | 35 | ".side_set 1" |
| 36 | // "set pindirs, 1 side 0" | 36 | |
| 37 | // "set pins, 0 side 0" | ||
| 38 | ".wrap_target" | 37 | ".wrap_target" |
| 38 | // write out x-1 bits | ||
| 39 | "lp:", | 39 | "lp:", |
| 40 | "out pins, 1 side 0" | 40 | "out pins, 1 side 0" |
| 41 | "jmp x-- lp side 1" | 41 | "jmp x-- lp side 1" |
| 42 | // switch directions | ||
| 42 | "set pindirs, 0 side 0" | 43 | "set pindirs, 0 side 0" |
| 44 | // these nops seem to be necessary for fast clkdiv | ||
| 45 | "nop side 1" | ||
| 43 | "nop side 1" | 46 | "nop side 1" |
| 47 | // read in y-1 bits | ||
| 44 | "lp2:" | 48 | "lp2:" |
| 45 | "in pins, 1 side 1" | 49 | "in pins, 1 side 0" |
| 46 | "jmp y-- lp2 side 0" | 50 | "jmp y-- lp2 side 1" |
| 47 | 51 | ||
| 52 | // wait for event and irq host | ||
| 48 | "wait 1 pin 0 side 0" | 53 | "wait 1 pin 0 side 0" |
| 49 | "irq 0 side 0" | 54 | "irq 0 side 0" |
| 50 | 55 | ||
| @@ -64,8 +69,15 @@ where | |||
| 64 | 69 | ||
| 65 | sm.write_instr(relocated.origin() as usize, relocated.code()); | 70 | sm.write_instr(relocated.origin() as usize, relocated.code()); |
| 66 | 71 | ||
| 72 | // theoretical maximum according to data sheet, 100Mhz Pio => 50Mhz SPI Freq | ||
| 73 | // does not work yet, | ||
| 74 | // sm.set_clkdiv(0x0140); | ||
| 75 | |||
| 76 | // same speed as pico-sdk, 62.5Mhz | ||
| 77 | sm.set_clkdiv(0x0200); | ||
| 78 | |||
| 67 | // 32 Mhz | 79 | // 32 Mhz |
| 68 | sm.set_clkdiv(0x03E8); | 80 | // sm.set_clkdiv(0x03E8); |
| 69 | 81 | ||
| 70 | // 16 Mhz | 82 | // 16 Mhz |
| 71 | // sm.set_clkdiv(0x07d0); | 83 | // sm.set_clkdiv(0x07d0); |
