aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorkbleeke <[email protected]>2023-03-19 16:43:46 +0100
committerkbleeke <[email protected]>2023-03-19 17:00:45 +0100
commita6a2a035d57ced9a7a9bb2ef325885063ea83295 (patch)
tree35481496cc4a9fbd7870b594be7458503c80b300 /src
parent0ff606dfc151b1b3812087b7508fdf4bee3b240b (diff)
even faster pio speed are possible
Diffstat (limited to 'src')
-rw-r--r--src/bus.rs31
1 files changed, 27 insertions, 4 deletions
diff --git a/src/bus.rs b/src/bus.rs
index aaa79b198..e4f9a69bb 100644
--- a/src/bus.rs
+++ b/src/bus.rs
@@ -4,6 +4,7 @@ use embassy_time::{Duration, Timer};
4use embedded_hal_1::digital::OutputPin; 4use embedded_hal_1::digital::OutputPin;
5use embedded_hal_1::spi::ErrorType; 5use embedded_hal_1::spi::ErrorType;
6use embedded_hal_async::spi::{transaction, SpiDevice}; 6use embedded_hal_async::spi::{transaction, SpiDevice};
7use futures::FutureExt;
7 8
8use crate::consts::*; 9use crate::consts::*;
9 10
@@ -46,18 +47,40 @@ where
46 self.pwr.set_high().unwrap(); 47 self.pwr.set_high().unwrap();
47 Timer::after(Duration::from_millis(250)).await; 48 Timer::after(Duration::from_millis(250)).await;
48 49
49 while self.read32_swapped(REG_BUS_TEST_RO).await != FEEDBEAD {} 50 while self
51 .read32_swapped(REG_BUS_TEST_RO)
52 .inspect(|v| defmt::trace!("{:#x}", v))
53 .await
54 != FEEDBEAD
55 {}
50 56
51 self.write32_swapped(REG_BUS_TEST_RW, TEST_PATTERN).await; 57 self.write32_swapped(REG_BUS_TEST_RW, TEST_PATTERN).await;
52 let val = self.read32_swapped(REG_BUS_TEST_RW).await; 58 let val = self
59 .read32_swapped(REG_BUS_TEST_RW)
60 .inspect(|v| defmt::trace!("{:#x}", v))
61 .await;
53 assert_eq!(val, TEST_PATTERN); 62 assert_eq!(val, TEST_PATTERN);
54 63
64 self.read32_swapped(REG_BUS_CTRL)
65 .inspect(|v| defmt::trace!("{:#010b}", (v & 0xff)))
66 .await;
67
55 // 32-bit word length, little endian (which is the default endianess). 68 // 32-bit word length, little endian (which is the default endianess).
56 self.write32_swapped(REG_BUS_CTRL, WORD_LENGTH_32 | HIGH_SPEED).await; 69 self.write32_swapped(REG_BUS_CTRL, WORD_LENGTH_32 | HIGH_SPEED).await;
57 70
58 let val = self.read32(FUNC_BUS, REG_BUS_TEST_RO).await; 71 self.read8(FUNC_BUS, REG_BUS_CTRL)
72 .inspect(|v| defmt::trace!("{:#b}", v))
73 .await;
74
75 let val = self
76 .read32(FUNC_BUS, REG_BUS_TEST_RO)
77 .inspect(|v| defmt::trace!("{:#x}", v))
78 .await;
59 assert_eq!(val, FEEDBEAD); 79 assert_eq!(val, FEEDBEAD);
60 let val = self.read32(FUNC_BUS, REG_BUS_TEST_RW).await; 80 let val = self
81 .read32(FUNC_BUS, REG_BUS_TEST_RW)
82 .inspect(|v| defmt::trace!("{:#x}", v))
83 .await;
61 assert_eq!(val, TEST_PATTERN); 84 assert_eq!(val, TEST_PATTERN);
62 } 85 }
63 86