From a1380238cceefa2a714f817b4c20af7bc918c389 Mon Sep 17 00:00:00 2001 From: Federico Mandelli <federicomandelli@skywarder.eu> Date: Thu, 27 Jul 2023 10:08:17 +0200 Subject: [PATCH] [CanDriver] Automatically initialize CAN1 clock if we create a CAN2 CanDriver --- src/shared/drivers/canbus/CanDriver/CanDriver.cpp | 14 +++++++++++++- .../canbus/CanProtocol/test-can-protocol.cpp | 3 --- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/shared/drivers/canbus/CanDriver/CanDriver.cpp b/src/shared/drivers/canbus/CanDriver/CanDriver.cpp index ea7d92dfa..5aa54ede5 100644 --- a/src/shared/drivers/canbus/CanDriver/CanDriver.cpp +++ b/src/shared/drivers/canbus/CanDriver/CanDriver.cpp @@ -49,6 +49,11 @@ CanbusDriver::CanbusDriver(CAN_TypeDef* can, CanbusConfig config, BitTiming bitTiming) : can(can) { + if (can == CAN2) + { + // CAN2 also need the CAN1 clock + ClockUtils::enablePeripheralClock(CAN1); + } // Enable the peripheral clock ClockUtils::enablePeripheralClock(can); @@ -126,7 +131,14 @@ CanbusDriver::CanbusDriver(CAN_TypeDef* can, CanbusConfig config, } } -CanbusDriver::~CanbusDriver() { ClockUtils::disablePeripheralClock(can); } +CanbusDriver::~CanbusDriver() +{ + ClockUtils::disablePeripheralClock(can); + if (can == CAN2) + { + ClockUtils::disablePeripheralClock(CAN1); + } +} CanbusDriver::BitTiming CanbusDriver::calcBitTiming(AutoBitTiming autoBt) { diff --git a/src/tests/drivers/canbus/CanProtocol/test-can-protocol.cpp b/src/tests/drivers/canbus/CanProtocol/test-can-protocol.cpp index 57afa9bf9..686ebd184 100644 --- a/src/tests/drivers/canbus/CanProtocol/test-can-protocol.cpp +++ b/src/tests/drivers/canbus/CanProtocol/test-can-protocol.cpp @@ -67,9 +67,6 @@ int main() bitTiming.baudRate = 50 * 1000; bitTiming.samplePoint = 87.5f / 100.0f; - // To make the CAN2 work the driver must be created also for CAN1 - // TODO change this thing - CanbusDriver* driver1 = new CanbusDriver(CAN1, config, bitTiming); CanbusDriver* driver2 = new CanbusDriver(CAN2, config, bitTiming); // // Prepare the can driver -- GitLab