aboutsummaryrefslogtreecommitdiff
path: root/embassy-stm32
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2025-01-07 22:36:01 +0100
committerGitHub <[email protected]>2025-01-07 22:36:01 +0100
commit06869e2e85695f4528d1148dfd81700c905771c5 (patch)
treef92d0134351acb7c581c04176e7c624d7f38370d /embassy-stm32
parent2a06eb2459163ce5b11d1c82171f87a4b98f99cb (diff)
parent09cc9c65c9c24e4dee8f66ccaca8463152d8277f (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.rs20
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"),