aboutsummaryrefslogtreecommitdiff
path: root/cyw43-pio/src
diff options
context:
space:
mode:
authorkbleeke <[email protected]>2023-03-28 14:03:17 +0200
committerkbleeke <[email protected]>2023-03-28 15:29:14 +0200
commit781c7f978c555bfe364472fa822f1e27f2da1afb (patch)
tree40ebf50e2a5082dc7403fcef47257d7a4fc510d2 /cyw43-pio/src
parentc15f07de4f4c0dbb9b70326aa42cb986c035a0ec (diff)
make pio faster
Diffstat (limited to 'cyw43-pio/src')
-rw-r--r--cyw43-pio/src/lib.rs22
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);