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 /src | |
| parent | 0ff606dfc151b1b3812087b7508fdf4bee3b240b (diff) | |
even faster pio speed are possible
Diffstat (limited to 'src')
| -rw-r--r-- | src/bus.rs | 31 |
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}; | |||
| 4 | use embedded_hal_1::digital::OutputPin; | 4 | use embedded_hal_1::digital::OutputPin; |
| 5 | use embedded_hal_1::spi::ErrorType; | 5 | use embedded_hal_1::spi::ErrorType; |
| 6 | use embedded_hal_async::spi::{transaction, SpiDevice}; | 6 | use embedded_hal_async::spi::{transaction, SpiDevice}; |
| 7 | use futures::FutureExt; | ||
| 7 | 8 | ||
| 8 | use crate::consts::*; | 9 | use 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 | ||
