STM32: Fix CAN transmit on bxcan targets

This commit is contained in:
Adam Greig 2025-04-18 17:19:21 +01:00
parent dc3b83f9c8
commit 17d3adac4b
No known key found for this signature in database
GPG Key ID: 80E6DEA26ADACD09
3 changed files with 8 additions and 3 deletions

View File

@ -299,9 +299,9 @@ impl Registers {
mb.tdtr().write(|w| w.set_dlc(frame.header().len() as u8));
mb.tdlr()
.write(|w| w.0 = u32::from_ne_bytes(unwrap!(frame.data()[0..4].try_into())));
.write(|w| w.0 = u32::from_ne_bytes(unwrap!(frame.raw_data()[0..4].try_into())));
mb.tdhr()
.write(|w| w.0 = u32::from_ne_bytes(unwrap!(frame.data()[4..8].try_into())));
.write(|w| w.0 = u32::from_ne_bytes(unwrap!(frame.raw_data()[4..8].try_into())));
let id: IdReg = frame.id().into();
mb.tir().write(|w| {
w.0 = id.0;

View File

@ -75,7 +75,7 @@ impl Registers {
let mailbox = self.tx_buffer_element(bufidx);
mailbox.reset();
put_tx_header(mailbox, header);
put_tx_data(mailbox, &buffer[..header.len() as usize]);
put_tx_data(mailbox, buffer);
// Set <idx as Mailbox> as ready to transmit
self.regs.txbar().modify(|w| w.set_ar(bufidx, true));

View File

@ -212,6 +212,11 @@ impl Frame {
&self.data.raw()[..self.can_header.len as usize]
}
/// Get reference to underlying 8-byte raw data buffer
pub(crate) fn raw_data(&self) -> &[u8] {
self.data.raw()
}
/// Get mutable reference to data
pub fn data_mut(&mut self) -> &mut [u8] {
&mut self.data.raw_mut()[..self.can_header.len as usize]