diff --git a/src/shared/drivers/canbus/CanDriver/CanDriver.cpp b/src/shared/drivers/canbus/CanDriver/CanDriver.cpp index ea7d92dfa282153d96d9361ae56d43b3d28c8f66..5aa54ede5fb0799e289635a2714ec866bdc0a561 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 57afa9bf9e27e2d09463a89cfe610d62c1bcf7e0..686ebd1840495e3dce8eceb98c6c509ec4fac0fe 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