160 Commits

Author SHA1 Message Date
RichardWGNR
aae3f7fb70 Fix rustfmt #4075 2025-04-11 04:31:32 +05:00
RichardWGNR
4d903a713e Capability to modify CAN frame data without copying. #4075 2025-04-11 04:27:03 +05:00
RichardWGNR
8fb0186f87 Fix #4062 2025-04-11 00:36:00 +05:00
Dario Nieuwenhuis
d41eeeae79 Remove Peripheral trait, rename PeripheralRef->Peri. 2025-03-27 15:18:06 +01:00
Corey Schuhen
424d20727e Reference count senders and receivers so that we don't close down early. 2025-03-09 17:03:28 +10:00
Andrii
08ef834301
fix wrong negation of fdcan set_transmit_pause function parameter 2025-01-17 18:05:50 +02:00
Tamme Dittrich
7ac2a4f674 Allow split CAN Rx to modify the filters 2025-01-07 10:11:53 +01:00
elagil
eba8089601 chore: fix build 2025-01-03 18:18:00 +01:00
Dario Nieuwenhuis
f0a2616dd6
Merge pull request #3468 from korken89/fix-can-hang
This fixes 2 issues where STM32 BXCAN would hang
2024-10-27 18:19:56 +00:00
Emil Fresk
917f1d1f4d This fixes 2 issues where STM32 BXCAN would hang
1. If one received frames under an `interrupt_free` section, in my case
   `init` in RTIC, the RX IRQ will fire and clear it's enable bit after
   `interrupt_free` is complete. There is no frame to read so RX is now
   unconditionally disabled forever.
2. On clearing of RX IRQ, TX stops silently. This happens due to the use
   of `write` instead of `modify` when modifying IRQ enable bits.

Solution 1: Enable RX IRQs on every call to `try_read` that return no
data. This solution also solves the issue of very delayed handling of
the RX IRQ which would cause the same issue.

Solution 2: Use `modify` instead of `write`.
2024-10-27 10:10:46 +01:00
Tu Nguyen
8af52488e7 add RTR flag if it is remote frame 2024-10-16 17:45:40 +07:00
Hans Josephsen
e2d2b0f362 Currently the return value of write is broken, it never returns the
previous frame even when present.

This happens because a slice of length 64 is always passed to Frame::new
from within the `abort_pending_mailbox` function, causing `Frame::new`
to return None.

The fix is to take a subslice of length `data_length`.
2024-09-22 12:40:46 +02:00
Emil Fresk
41e162541a stm32: Fix log storm when no CAN is connected
Running the bxcan driver without having it connected
to a CAN bus causes the `info` logs to bombard.
This removes the logging statements as they looked
like remnants from the development of the driver.
2024-08-25 07:14:19 +02:00
David Flemström
2f750a82bf Swat some other occurrences of .unwrap() that pull in panicing infra 2024-06-28 22:52:21 +02:00
Jan Špaček
94007ce6e0 stm32/gpio: refactor AfType 2024-06-16 21:11:55 +02:00
Corey Schuhen
900b104860 Remove generic argument from CanBuilder. 2024-06-02 21:47:14 +10:00
Corey Schuhen
367a22cc0e Remove more BXCAN generics. 2024-06-02 20:11:56 +10:00
Jan Špaček
368893c9cb Emit cargo:rustc-check-cfg instructions from build.rs 2024-05-30 18:28:29 +02:00
Dario Nieuwenhuis
b378ec4558
Merge pull request #3020 from cschuhen/feature/bxcan_no_generics
Remove generics for BXCAN.
2024-05-30 12:16:17 +00:00
Corey Schuhen
b4a2f7fb70 Use phantom for lifetime holder instead of not used pointer to pointer. 2024-05-30 22:10:46 +10:00
Dario Nieuwenhuis
39c5a6c3f7
Merge pull request #3002 from honzasp/rcc-info
stm32/rcc: replace generated enable/disable code with runtime info
2024-05-30 11:50:40 +00:00
Corey Schuhen
245c895d09 Remove generics for BXCAN. 2024-05-30 21:39:11 +10:00
Dario Nieuwenhuis
c46172acac stm32: remove pointer-to-pointer-to-registers.
in chiptool pacs the register block struct is already a pointer, so
using pointers to it is redundant.
2024-05-30 13:07:18 +02:00
Dario Nieuwenhuis
e9cb9badf7
Merge pull request #3012 from cschuhen/feature/fdcan_no_generics
Remove generic argument for STM32 FDCAN.
2024-05-30 10:42:53 +00:00
Corey Schuhen
35feb1bf23 Remove generic argument for STM32 FDCAN. 2024-05-29 20:07:17 +10:00
Maarten de Vries
807e573994 embassy_stm32: allow scheduling lower priority frames in bxcan driver 2024-05-27 16:10:08 +02:00
Maarten de Vries
854ae5da8f embassy_stm32: implement optional FIFO scheduling for outgoing frames 2024-05-27 16:10:08 +02:00
Jan Špaček
081afca3f0 stm32/rcc: replace generated enable/disable code with runtime info 2024-05-25 18:44:55 +02:00
Dario Nieuwenhuis
fb67fe0a6c stm32: add support for STM32H7[RS] "bootflash line", add HIL tests. 2024-05-01 02:24:45 +02:00
Dario Nieuwenhuis
1de44e7086
Merge pull request #2840 from MaxiluxSystems/feature/fdcan-runtime-cfg
stm32: can: fd: Properties for common runtime get/set operations
2024-04-23 13:46:09 +00:00
Torin Cooper-Bennun
e15fd5895f stm32: can: fd: Properties: simplify reg accesses 2024-04-23 12:46:42 +01:00
Torin Cooper-Bennun
521c132e34 stm32: can: fd: introduce BusErrorMode with docs and Properties getter 2024-04-23 12:34:17 +01:00
Torin Cooper-Bennun
6ca7e0feab stm32: can: fd: fix a couple doc comments 2024-04-23 12:34:02 +01:00
Eric Yanush
5c56aff9c2 rustfmt fixes 2024-04-22 14:05:28 -06:00
Eric Yanush
e65503e255 Add sleep/wakeup handling for bxCAN peripherals 2024-04-22 14:04:39 -06:00
Eric Yanush
3e00c1ac52 rustfmt whitespace fixes 2024-04-22 14:01:48 -06:00
Torin Cooper-Bennun
263071d016 stm32: can: fd: Properties: rm &mut refs; make !Sync; rename getters 2024-04-22 13:14:32 +01:00
Torin Cooper-Bennun
7f55a28a50 stm32: can: fd: Properties for common runtime get/set operations 2024-04-22 13:14:32 +01:00
Eric Yanush
68a4fd8f4a Enable LEC interrupt as well 2024-04-22 01:52:10 -06:00
Eric Yanush
6e1290b3f1 Ensure bus errors are forwarded only once, enable bus off/passive/warning interrupts 2024-04-22 01:46:24 -06:00
Torin Cooper-Bennun
80b3db4ea6 stm32: can: fd: implement bus-off recovery
as per RM0492 and other relevant RMs, bus-off recovery is not automatic.
CCCR.INIT is set by the device upon bus-off; the CPU must reset
CCCR.INIT to initiate the recovery.
2024-04-17 14:58:08 +01:00
Torin Cooper-Bennun
901bdfc7b8 stm32: can: fd: on_interrupt: simplify, rm redundant code
PED, PEA are never enabled in the interrupt enable code in
peripheral.rs; no need to process the flags here
2024-04-17 14:57:58 +01:00
Dario Nieuwenhuis
c8936edb6c stm32/can: simplify bxcan api, merging bx::* into the main structs.
The bx::* separate structs (Can, Rx, Tx) and separate `Instance` trait
are a relic from the `bxcan` crate. Remove them, move the functionality
into the main structs.
2024-04-02 11:08:03 +02:00
Corey Schuhen
25618cd93d RTR fix. 2024-03-28 09:53:30 +10:00
Corey Schuhen
a9f0c8c3a9 Fixes for no-time. 2024-03-28 09:32:13 +10:00
Corey Schuhen
2217b80278 CAN: Unify API's between BXCAN and FDCAN. Use Envelope for all read methods instead of a tuple sometimes. 2024-03-28 09:32:13 +10:00
Corey Schuhen
f5daa50a7b BXCAN: Add struct that combines Buffered RX and Buffered TX. 2024-03-28 09:32:13 +10:00
Corey Schuhen
41b7e4a434 BXCAN: Create TxMode in order to support buffered TX. 2024-03-28 09:32:13 +10:00
Corey Schuhen
26c739c2f9 BXCAN: Create RxMode enum and move reader methods into it, laying foundations for different Rx buffering modes. 2024-03-28 09:32:13 +10:00
Corey Schuhen
3bdaad39e8 BXCAN: Register access into new Registers struct. 2024-03-28 09:32:13 +10:00