mirror of
https://github.com/embassy-rs/embassy.git
synced 2024-11-25 16:23:10 +00:00
Merge pull request #2832 from MaxiluxSystems/feature/fdcan-bus-off
stm32: can: fd: implement bus-off recovery
This commit is contained in:
commit
0ee7748811
@ -368,6 +368,7 @@ impl Registers {
|
||||
w.set_rfne(0, true); // Rx Fifo 0 New Msg
|
||||
w.set_rfne(1, true); // Rx Fifo 1 New Msg
|
||||
w.set_tce(true); // Tx Complete
|
||||
w.set_boe(true); // Bus-Off Status Changed
|
||||
});
|
||||
self.regs.ile().modify(|w| {
|
||||
w.set_eint0(true); // Interrupt Line 0
|
||||
|
@ -44,7 +44,6 @@ impl<T: Instance> interrupt::typelevel::Handler<T::IT0Interrupt> for IT0Interrup
|
||||
|
||||
let ir = regs.ir().read();
|
||||
|
||||
{
|
||||
if ir.tc() {
|
||||
regs.ir().write(|w| w.set_tc(true));
|
||||
}
|
||||
@ -75,22 +74,21 @@ impl<T: Instance> interrupt::typelevel::Handler<T::IT0Interrupt> for IT0Interrup
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ir.ped() || ir.pea() {
|
||||
regs.ir().write(|w| {
|
||||
w.set_ped(true);
|
||||
w.set_pea(true);
|
||||
});
|
||||
}
|
||||
|
||||
if ir.rfn(0) {
|
||||
T::state().rx_mode.on_interrupt::<T>(0);
|
||||
}
|
||||
|
||||
if ir.rfn(1) {
|
||||
T::state().rx_mode.on_interrupt::<T>(1);
|
||||
}
|
||||
|
||||
if ir.bo() {
|
||||
regs.ir().write(|w| w.set_bo(true));
|
||||
if regs.psr().read().bo() {
|
||||
// Initiate bus-off recovery sequence by resetting CCCR.INIT
|
||||
regs.cccr().modify(|w| w.set_init(false));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user