Commit Graph
53 Commits
Author SHA1 Message Date
Leonard Hall 05a896cc4c AP_HAL_ChibiOS: don't fake CAN send success in bootloader builds 2026-08-04 12:04:45 +10:00
Thomas Watson f4ae5d7901 AP_HAL_ChibiOS: drop CAN log message calls
The infrastructure for these has been continually buggy and rarely used.

Delete calls in preparation for ripping it out entirely.
2026-05-18 20:58:47 -05: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
muramura 4a9ddef8ee AP_HAL_ChibiOS: Change division to multiplication 2025-01-02 23:22:42 +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 e8b4010899 HAL_ChibiOS: fixed CANFD timings (again!)
the timing table was not correct, thanks to APD for pointing this out.

This is recalculated from
https://www.kvaser.com/support/calculators/can-fd-bit-timing-calculator,
with transmitter timing delay compensation added and tested with Salae
captures to ensure we are getting the right bit rates
2024-02-09 18:55:08 +11:00
Andrew Tridgell a2707b48c5 HAL_ChibiOS: enable clock management on G4
this allows for a different clock tree in the main fw from the
bootloader
2024-01-25 11:44:02 +11:00
Andrew Tridgell 2d031a4d20 HAL_ChibiOS: switched G4 FDCAN clock to 80MHz
this requires main CPU clock at 160 MHz instead of 168 MHz
2024-01-25 11:44:02 +11:00
Andrew Tridgell 1c8048df8f HAL_ChibiOS: fixed CANFD timings
our CANFD timings were resulting in a lot of busoff errors. Here is an
example of master at 1Mbit/5MBit:

Getting @SYS/can0_stats.txt as -
------- Clock Config -------
CAN_CLK_FREQ:   80MHz
Std Timings: bitrate=1000000 presc=7
sjw=0 bs1=7 bs2=0 sample_point=90.00000%
FD Timings:  bitrate=5000000 presc=1
sjw=0 bs1=5 bs2=0 sample_point=90.00000%
------- CAN Interface Stats -------
tx_requests:    2689
tx_rejected:    0
tx_overflow:    443
tx_success:     7
tx_timedout:    2232
tx_abort:       0
rx_received:    18470
rx_overflow:    0
rx_errors:      0
num_busoff_err: 34439
num_events:     18477
ECR:            F8
fdf_rx:         18467
fdf_tx_req:     2182
fdf_tx:         0

here is an example with the new timings:

------- Clock Config -------
CAN_CLK_FREQ:   80MHz
Std Timings: bitrate=1000000 presc=8
sjw=1 bs1=8 bs2=1 sample_point=90.00000%
FD Timings:  bitrate=8000000 presc=2
sjw=3 bs1=8 bs2=3 sample_point=80.00000%
------- CAN Interface Stats -------
tx_requests:    3023
tx_rejected:    0
tx_overflow:    0
tx_success:     3023
tx_timedout:    0
tx_abort:       0
rx_received:    27865
rx_overflow:    0
rx_errors:      0
num_busoff_err: 0
num_events:     30888
ECR:            0
fdf_rx:         27862
fdf_tx_req:     3016
fdf_tx:         3016

I am testing between a CubeOrange and a Pixhawk6X. I tested 1, 2, 4, 5
and 8 MBit (which are the only valid FD bitrates in our parameters)

Many thanks to Kai from Salient Motion for finding this issue and
providing the corrected timing table
2024-01-25 11:44:02 +11: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 d5fbce0547 AP_HAL_ChibiOS: added last_transmit_us to CAN stats 2023-09-05 06:56:51 +10:00
Andrew Tridgell aa0b119806 HAL_ChibiOS: disable CANFD bits if CANFD not enabled
cannot support CANFD receive on G4
2023-07-12 18:54:45 +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
bugobliterator 6a0c46d241 AP_HAL_Periph: assert clock is FDCANCLK is 80MHz for H7 boards 2022-03-11 18:13:54 +11:00
bugobliterator 633eb0db8b AP_HAL_ChibiOS: move to using data_32 for copying into CANFD buffer 2022-03-11 18:13:54 +11:00
bugobliterator faf0c0d7c3 AP_HAL_ChibiOS: set canfd bitrates using CANFD_SUPPORTED opt 2022-03-11 18:13:54 +11:00
bugobliterator 4bdbd37731 AP_HAL_ChibiOS: use datalength when copying payload into CAN Frames 2022-03-11 18:13:54 +11:00
bugobliterator 47dd964e63 AP_HAL_ChibiOS: add init method to take in separate canfd bitrate 2022-03-11 18:13:54 +11:00
Siddharth Purohit 8aa047d876 AP_HAL_ChibiOS: add support for CANFD for H7 and G4 2022-03-11 18:13:54 +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
bugobliterator a8ab20abd9 AP_HAL_ChibiOS: allow sending stats via mavftp on AP_Periph 2021-08-19 14:20:58 +10:00
bugobliterator 81c5a99527 AP_HAL_ChibiOS: fix invalid use of FDCAN2_IT0_IRQn enum for ifdef 2021-08-10 07:25:05 +10:00
Andrew Tridgell bab0c1dfc7 HAL_ChibiOS: fixed build for single FDCAN G4 boards 2021-08-03 10:54:03 +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 c3d16cf2e2 HAL_ChibiOS: use defines for G4 messageram
review fix
2021-03-23 12:01:20 +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 4f10565f82 HAL_ChibiOS: fixed CANFD build on H7 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 5b59445471 AP_HAL_ChibiOS: fixes for build with 20.3.x ChibiOS 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
bugobliterator e16cab0437 AP_HAL_ChibiOS: ensure we timeout while checking FDCAN register sets 2020-10-08 09:31:35 +11:00
bugobliterator ca957519dc AP_HAL_ChibiOS: redo filter configuration to make it work with STM32H7 2020-10-08 09:31:35 +11:00
bugobliterator 0a4ea250ad AP_HAL_ChibiOS: disable CANFilter on H7 boards temporarily 2020-10-01 07:19:19 +10: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
bugobliterator 7b9f0f3fd7 HAL_ChibiOS: use FIFO mode instead of Queue mode in FDCAN driver 2020-05-21 15:32:53 +10:00
Andrew Tridgell 2c68ce1986 HAL_ChibiOS: fixed clock source for FDCAN
use selected source and add 80MHz limit, as per manual and latest STM32CubeMX tool
2020-04-24 16:55:03 +10:00
Siddharth Purohit 8c413d3c09 HAL_ChibiOS: fix writing into a NULL pointer CANFD interrupt 2019-10-30 22:15:04 +11:00
Andrew Tridgell 15e4641e51 AP_HAL_ChibiOS: cleanup ifdefs for SLCAN enable 2019-10-08 10:02:14 +11:00