diff options
| author | Dario Nieuwenhuis <[email protected]> | 2025-01-07 22:36:01 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-01-07 22:36:01 +0100 |
| commit | 06869e2e85695f4528d1148dfd81700c905771c5 (patch) | |
| tree | f92d0134351acb7c581c04176e7c624d7f38370d /embassy-stm32 | |
| parent | 2a06eb2459163ce5b11d1c82171f87a4b98f99cb (diff) | |
| parent | 09cc9c65c9c24e4dee8f66ccaca8463152d8277f (diff) | |
Merge pull request #3725 from CNLHC/qspi_mmap
feat: mmap mode for qspi and example
Diffstat (limited to 'embassy-stm32')
| -rw-r--r-- | embassy-stm32/src/qspi/mod.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/embassy-stm32/src/qspi/mod.rs b/embassy-stm32/src/qspi/mod.rs index 3d5b31815..411e533c9 100644 --- a/embassy-stm32/src/qspi/mod.rs +++ b/embassy-stm32/src/qspi/mod.rs | |||
| @@ -201,6 +201,26 @@ impl<'d, T: Instance, M: PeriMode> Qspi<'d, T, M> { | |||
| 201 | T::REGS.fcr().modify(|v| v.set_ctcf(true)); | 201 | T::REGS.fcr().modify(|v| v.set_ctcf(true)); |
| 202 | } | 202 | } |
| 203 | 203 | ||
| 204 | /// Enable memory map mode | ||
| 205 | pub fn enable_memory_map(&mut self, transaction: &TransferConfig) { | ||
| 206 | T::REGS.fcr().modify(|v| { | ||
| 207 | v.set_csmf(true); | ||
| 208 | v.set_ctcf(true); | ||
| 209 | v.set_ctef(true); | ||
| 210 | v.set_ctof(true); | ||
| 211 | }); | ||
| 212 | T::REGS.ccr().write(|v| { | ||
| 213 | v.set_fmode(QspiMode::MemoryMapped.into()); | ||
| 214 | v.set_imode(transaction.iwidth.into()); | ||
| 215 | v.set_instruction(transaction.instruction); | ||
| 216 | v.set_admode(transaction.awidth.into()); | ||
| 217 | v.set_adsize(self.config.address_size.into()); | ||
| 218 | v.set_dmode(transaction.dwidth.into()); | ||
| 219 | v.set_abmode(QspiWidth::NONE.into()); | ||
| 220 | v.set_dcyc(transaction.dummy.into()); | ||
| 221 | }); | ||
| 222 | } | ||
| 223 | |||
| 204 | fn setup_transaction(&mut self, fmode: QspiMode, transaction: &TransferConfig, data_len: Option<usize>) { | 224 | fn setup_transaction(&mut self, fmode: QspiMode, transaction: &TransferConfig, data_len: Option<usize>) { |
| 205 | match (transaction.address, transaction.awidth) { | 225 | match (transaction.address, transaction.awidth) { |
| 206 | (Some(_), QspiWidth::NONE) => panic!("QSPI address can't be sent with an address width of NONE"), | 226 | (Some(_), QspiWidth::NONE) => panic!("QSPI address can't be sent with an address width of NONE"), |
