Commit Graph

45 Commits

Author SHA1 Message Date
Thomas Watson
fe849fe22d AP_HAL_ChibiOS: remove bxCAN priority-based transmission support
As commented and detailed in the previous commit, it wasn't commonly used
and was disabled by switching the hardware to FIFO mode, so there is no
need for the software support.

Changes behavior on bxCAN based flight controllers only.
2025-12-09 11:52:05 +11:00
jaromc
079f8a69dc AP_HAL_ChibiOS: Enable tx FIFO for multiframe bxcan messages
AP_Periph was already assuming this behavior by never checking the write
result of `select` and instead just sending frames and relying on the
mailbox full check.

This therefore fixes AP_Periph misordering multi-part messages. Each part
is the same priority, so in priority mode the hardware transmits in slot
order, which may not equal queue order.

bxCAN based flight controllers no longer use priority now, but FDCAN
always used FIFO mode so this brings the drivers closer anyway.

In all cases before and after this patch, priority is maintained in
libcanard so only the highest priority frames are dequeued for
transmission by the hardware anyway. But if a high priority message is
enqueued in the hardware, it will not be transmitted until lower priority
messages in the hardware are sent first. This is against CAN priority
semantics, where higher priority messages should be transmitted first.
Fortunately, it has worked well in practice. (Though there was still the
possibility for a higher priority message to be dequeued and not have
space in the hardware even in priority mode).
2025-12-09 11:52:05 +11:00
Thomas Watson
048f4d9b60 AP_HAL_ChibiOS: drop CAN interface alternate mode support
Only "NormalMode" was ever used; the others had rotted or were never
implemented.
2025-11-11 10:58:43 +11:00
Thomas Watson
763a6361de AP_HAL_ChibiOS: drop CAN filter support from HAL
Has been unused since the removal of libuavcan.
2025-11-11 10:58:43 +11:00
Thomas Watson
0e4db74c75 AP_HAL_ChibiOS: ignore rare CAN modes
These are never used anywhere by ArduPilot.
2025-11-11 10:58:43 +11:00
Peter Barker
8b9154d115 AP_HAL_ChibiOS: re-order initialiser lines so -Werror=reorder will work 2024-09-24 22:50:28 +10:00
Andrew Tridgell
05d43fd00b HAL_ChibiOS: allow for MCAST UDP with no CAN link
this allows the CAN interface to operate without a CAN cable, allowing
for bridging of MCAST UDP CAN
2024-09-17 10:02:29 +10:00
Andrew Tridgell
8dbad82c8a AP_HAL_ChibiOS: use NEW_NOTHROW for new(std::nothrow) 2024-06-04 09:20:21 +10:00
Andrew Tridgell
c0d0aeee86 HAL_ChibiOS: reimplement CAN with BinarySemaphore 2024-01-03 07:37:05 +11:00
Thomas Watson
87fef1ae5d AP_HAL_ChibiOS: use get_HAL_mutable() to install new CAN interfaces
Avoids dubious extern redefinition.
2023-11-28 08:24:25 +11:00
Andrew Tridgell
ebffc8fc65 HAL_ChibiOS: fixed CAN statistics on F4/L4/F3/F7 2023-09-19 07:33:53 +10:00
Andrew Tridgell
ef3d42ee9d HAL_ChibiOS: fixed bootloader build with F4 CAN 2023-09-05 06:56:51 +10:00
Andrew Tridgell
bc373354fc HAL_ChibiOS: enable CAN stats on AP_Periph for bxCAN interface
this allows for dead interface detection
2023-09-05 06:56:51 +10:00
Andrew Tridgell
d5fbce0547 AP_HAL_ChibiOS: added last_transmit_us to CAN stats 2023-09-05 06:56:51 +10:00
Andrew Tridgell
0cfd9c2ed5 HAL_ChibiOS: don't consider a MAVCAN send failure as a send failure
this prevents duplicate sends if MAVCAN buffer is full
2023-06-08 10:15:50 +10:00
Robert Taylor
805ed73d94 AP_HAL_ChibiOS: Fix bug where STM32L496 would not init CAN2
This is due to the way that the APB peripheral was configured. RCC_APB1ENR1_CAN2EN was not accounted for in the CAN hardware init, so CAN2 clock init was never attempted.
I copied the way CAN1 is initialized based on different hardware description headers.
2023-03-21 11:35:17 +11:00
Andrew Tridgell
bfff5548ef HAL_ChibiOS: implement get_statistics() 2022-12-13 16:56:57 +11:00
Andrew Tridgell
638e20a0b9 HAL_ChibiOS: bring in hal.h where it is needed 2022-02-22 12:13:19 +11:00
Andrew Tridgell
fd8d28e23c HAL_ChibiOS: reduced time in critical sections for CAN processing 2022-02-19 18:24:56 +11:00
Andrew Tridgell
33ebc83a68 AP_HAL_ChibiOS: disable CAN filtering except on AP_Periph
this saves flash space and makes CAN forwarding for any bus without
reconfigure/reboot easy. CAN filtering is not useful in the main
flight controller firmware as we want to see nearly all packets
2022-02-12 16:36:05 +11:00
Andrew Tridgell
124c9d5d9b HAL_ChibiOS: support mavcan message forwarding 2022-02-12 16:36:05 +11:00
murata
a6ea55735f AP_HAL_ChibiOS: Remove meaningless semicolons 2022-02-07 08:27:34 +09:00
Andrew Tridgell
0212e23cd3 HAL_ChibiOS: added support for STM32L496 MCUs
good MCU for AP_Periph
2021-09-24 18:08:00 +10:00
Siddharth Purohit
882b01bae3 AP_HAL_ChibiOS: Use HAL_CANMANAGER_ENABLED instead of HAL_ENABLE_LIBUAVCAN_DRIVERS 2021-06-24 09:02:42 +10:00
Tom Pittenger
7a004656a2 AP_HAL_ChibiOS: use HAL_ENABLE_LIBUAVCAN_DRIVERS instead of HAL_MAX_CAN_PROTOCOL_DRIVERS 2021-06-09 18:36:18 +10:00
Tom Pittenger
f764bd6547 AP_HAL_ChibiOS: disable EventSource only when CH_CFG_USE_EVENTS is false
(cherry picked from commit 6e7542a70ca2343ab8d18470deaf5fc2d27390af) from bugobliterator
2021-06-09 18:36:18 +10:00
Siddharth Purohit
ad9a8c8bd9 AP_HAL_ChibiOS: record error states in CANFDIface and CANIface 2021-05-26 18:25:01 +10:00
Andrew Tridgell
07313ae71d HAL_ChibiOS: fixed 2nd CAN inferface on F4/F7
CAN1_TX_IRQn is an enum not a defined. This was broken by the recent
change to support different CAN ordering
2021-03-29 20:14:29 +11:00
Andrew Tridgell
353eca79b6 HAL_ChibiOS: fixed 32/64 micros bug in CAN select() 2021-03-23 12:01:20 +11:00
Andrew Tridgell
f57b1b9c4b HAL_ChibiOS: support logical/physical CAN bus mapping
allow for first CAN interface to be CAN2 or CAN3
2021-03-23 12:01:20 +11:00
Andrew Tridgell
439a944801 HAL_ChibiOS: added support for STM32G474 MCU 2021-03-23 12:01:20 +11:00
Andrew Tridgell
42bc9adfb7 HAL_ChibiOS: use ExpandingString for @SYS buffers 2021-01-05 10:52:00 +11:00
Andrew Tridgell
2d459dccc3 HAL_ChibiOS: reduced stack usage in CAN RX handler 2020-12-01 11:14:50 +11:00
bugobliterator
ca957519dc AP_HAL_ChibiOS: redo filter configuration to make it work with STM32H7 2020-10-08 09:31:35 +11:00
Siddharth Purohit
36ffcdae30 HAL_ChibiOS: modify hal can drivers for use by AP_Periph 2020-09-24 12:32:19 +10:00
Siddharth Purohit
cdf8e369f1 AP_HAL_ChibiOS: create UAVCAN agnostic CANIface driver
HAL_ChibiOS
2020-08-19 17:31:09 +10:00
Mirko Denecke
b84dcd483d AP_HAL_ChibiOS: remove unnecessary tabs and whitespaces 2019-10-21 08:01:56 +11:00
Siddharth Purohit
2b410479af HAL_ChibiOS: remove unused code 2019-10-19 09:55:38 +11:00
Andrew Tridgell
15e4641e51 AP_HAL_ChibiOS: cleanup ifdefs for SLCAN enable 2019-10-08 10:02:14 +11:00
Siddharth Purohit
2f153a3577 HAL_ChibiOS: remove singleton interface from slcan_router 2019-07-08 12:18:29 +10:00
Siddharth Purohit
67c925865c HAL_ChibiOS: add support for CAN on STM32H7 boards 2019-07-08 12:18:29 +10:00
Andrew Tridgell
bbd25350eb HAL_ChibiOS: support ChibiOS kernel major 6
preparing for STM32H7 support
2019-02-26 16:18:26 +11:00
Siddharth Purohit
2792f015b9 HAL_ChibiOS: disable SLCAN for minimize feature enabled 2019-01-29 13:40:35 +09:00
Siddharth Purohit
664c952460 HAL_ChibiOS: disable code for CAN for non UAVCAN supported 2019-01-23 15:57:05 +11:00
Siddharth Purohit
8f964b08b0 ChibiOS: move CAN driver code into HAL 2019-01-23 15:57:05 +11:00