Took the existing uavcan_stm32 driver and replaced all bxCAN code with
the equivalent for FDCAN following ST Reference Manual RM0433.
Note: There is still a bug somewhere in regards to FDCAN2 (probably
incorrect setup of the message RAM? Not sure.) But (FD)CAN1 is fully
functional (Classic CAN only, no CAN-FD).
Also TODO: Configure CAN filters. Right now there are no filters; all
incoming messages are accepted.
- remove all remaining IOCTLs for accel and gyro and handle all calibration entirely in sensors module with parameters
- sensor_accel and sensor_gyro are now always raw sensor data
- calibration procedures no longer need to first clear existing values before starting
- temperature calibration (TC) remove all scale (SCL) parameters
- gyro and baro scale are completely unused
- regular accel calibration scale can be used (CAL_ACC*_xSCALE) instead of TC scale
- accel & gyro FIFOs enabled
- FIFO watermark on data ready interrupt
- sensor side filtering completely disabled
- gyro now respects `IMU_GYRO_RATEMAX` (up to 2 kHz)
- saves a few % cpu (at default rate)
- at start perform full sensor signal path reset and wait for max time
- issue full sensor reset on any error
- only allocate DRDY perf counter if GPIO is available
- allow running faster than accel ODR (safe limit of 2 kHz in place)
- perform full sensor signal path reset and wait for max time (100 ms)
- issue full sensor reset on any error
- always read FIFO count before transfersj
- only allocate drdy perf counter if GPIO is available
- perform full sensor signal path reset and wait for max time (100 ms)
- issue full sensor reset on any error
- always read FIFO count before transfersj
- only allocate drdy perf counter if GPIO is available
- IMU integration move from drivers (PX4Accelerometer/PX4Gyroscope) to sensors/vehicle_imu
- sensors: voted_sensors_update now consumes vehicle_imu
- delete sensor_accel_integrated, sensor_gyro_integrated
- merge sensor_accel_status/sensor_gyro_status into vehicle_imu_status
- sensors status output minor improvements (ordering, whitespace, show selected sensor device id and instance)
This is a workaround for a warning in GCC 10.1:
src/drivers/gps/devices/src/ubx.cpp:520:8: error: writing 4 bytes into a
region of size 0 [-Werror=stringop-overflow=]
Also see:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91707
- this is done to minimize real end-to-end latency
- actual pulse width only updated for next period regardless of output module
- add cycle interval perf counter
- always check with state machine before reboot/shutdown
- respect BOARD_HAS_POWER_CONTROL (shutdown from command, low battery, power button)
- px4_shutdown_request add optional delay and always execute from HPWORK
- px4_shutdown_request split out px4_reboot_request