diff options
| -rw-r--r-- | embassy-stm32/src/can/bxcan/registers.rs | 4 | ||||
| -rw-r--r-- | embassy-stm32/src/can/fd/peripheral.rs | 2 | ||||
| -rw-r--r-- | embassy-stm32/src/can/frame.rs | 5 |
3 files changed, 8 insertions, 3 deletions
diff --git a/embassy-stm32/src/can/bxcan/registers.rs b/embassy-stm32/src/can/bxcan/registers.rs index c5467dfe8..c295b0f50 100644 --- a/embassy-stm32/src/can/bxcan/registers.rs +++ b/embassy-stm32/src/can/bxcan/registers.rs | |||
| @@ -299,9 +299,9 @@ impl Registers { | |||
| 299 | mb.tdtr().write(|w| w.set_dlc(frame.header().len() as u8)); | 299 | mb.tdtr().write(|w| w.set_dlc(frame.header().len() as u8)); |
| 300 | 300 | ||
| 301 | mb.tdlr() | 301 | mb.tdlr() |
| 302 | .write(|w| w.0 = u32::from_ne_bytes(unwrap!(frame.data()[0..4].try_into()))); | 302 | .write(|w| w.0 = u32::from_ne_bytes(unwrap!(frame.raw_data()[0..4].try_into()))); |
| 303 | mb.tdhr() | 303 | mb.tdhr() |
| 304 | .write(|w| w.0 = u32::from_ne_bytes(unwrap!(frame.data()[4..8].try_into()))); | 304 | .write(|w| w.0 = u32::from_ne_bytes(unwrap!(frame.raw_data()[4..8].try_into()))); |
| 305 | let id: IdReg = frame.id().into(); | 305 | let id: IdReg = frame.id().into(); |
| 306 | mb.tir().write(|w| { | 306 | mb.tir().write(|w| { |
| 307 | w.0 = id.0; | 307 | w.0 = id.0; |
diff --git a/embassy-stm32/src/can/fd/peripheral.rs b/embassy-stm32/src/can/fd/peripheral.rs index 014f31c87..4873ee444 100644 --- a/embassy-stm32/src/can/fd/peripheral.rs +++ b/embassy-stm32/src/can/fd/peripheral.rs | |||
| @@ -75,7 +75,7 @@ impl Registers { | |||
| 75 | let mailbox = self.tx_buffer_element(bufidx); | 75 | let mailbox = self.tx_buffer_element(bufidx); |
| 76 | mailbox.reset(); | 76 | mailbox.reset(); |
| 77 | put_tx_header(mailbox, header); | 77 | put_tx_header(mailbox, header); |
| 78 | put_tx_data(mailbox, &buffer[..header.len() as usize]); | 78 | put_tx_data(mailbox, buffer); |
| 79 | 79 | ||
| 80 | // Set <idx as Mailbox> as ready to transmit | 80 | // Set <idx as Mailbox> as ready to transmit |
| 81 | self.regs.txbar().modify(|w| w.set_ar(bufidx, true)); | 81 | self.regs.txbar().modify(|w| w.set_ar(bufidx, true)); |
diff --git a/embassy-stm32/src/can/frame.rs b/embassy-stm32/src/can/frame.rs index a1d773f2c..a4d5a9752 100644 --- a/embassy-stm32/src/can/frame.rs +++ b/embassy-stm32/src/can/frame.rs | |||
| @@ -212,6 +212,11 @@ impl Frame { | |||
| 212 | &self.data.raw()[..self.can_header.len as usize] | 212 | &self.data.raw()[..self.can_header.len as usize] |
| 213 | } | 213 | } |
| 214 | 214 | ||
| 215 | /// Get reference to underlying 8-byte raw data buffer | ||
| 216 | pub(crate) fn raw_data(&self) -> &[u8] { | ||
| 217 | self.data.raw() | ||
| 218 | } | ||
| 219 | |||
| 215 | /// Get mutable reference to data | 220 | /// Get mutable reference to data |
| 216 | pub fn data_mut(&mut self) -> &mut [u8] { | 221 | pub fn data_mut(&mut self) -> &mut [u8] { |
| 217 | &mut self.data.raw_mut()[..self.can_header.len as usize] | 222 | &mut self.data.raw_mut()[..self.can_header.len as usize] |
