• Shteibezandt_VA released this 2026-03-31 12:40:54 +03:00 | 0 commits to CAN_Protocol since this release

    Описание релиза

    Это предварительный релиз библиотеки для работы по новому протоколу CAN.
    Протокол.

    Основной функционал

    • Инициализация библиотеки и периферийных устройств
    • Обработка сообщений по CAN в бесконечном цикле
    • Возможность переопределения обработчиков для различных типов сообщений

    Использование

    Инициализация

    После инициализации периферии и запуска CAN необходимо вызвать функцию инициализации.

    Функция:

    PROTOCAN_INIT_StatusTypeDef PROTOCAN_INIT(CAN_HandleTypeDef *tmp_hcan, RTC_HandleTypeDef *tmp_hrtc, TIM_HandleTypeDef *tmp_tim)

    Параметры:

    • tmp_hcan — указатель на используемый hcan.
    • tmp_hrtc — указатель на используемый hrtc.
    • tmp_tim — указатель на используемый htim (Допустим NULL, если в проекте не используются Tim Register Callback)

    Приём сообщений по CAN при использовании Can Register Callback происходит в функции ProtoCanRxFifo0MsgPendingCallback. Если Can Register Callback не используется, то необходимо самостоятельно вызывать функцию в стандартном Callback приёма сообщения.

    Указанный таймер используется для отслеживания времени перед передачей пульса устройства по CAN. В случае, если пользователь не использует Tim Register Callback, то для отправки пульса необходимо самостоятельно вызывать функцию ProtoCanPulseCallback в HAL_TIM_PeriodElapsedCallback любого, выбранного пользователем для пульсации, таймера.

    Запуск основного цикла обработки

    Чтобы начать обработку входящих сообщений, вызовите:
    PROTOCAN_LOOP();
    Это — бесконечный цикл, в рамках которого обрабатываются входящие сообщения по CAN.

    Обработка сообщений

    Внутри цикла вызываются __weak функции, которые можно переопределять для обработки различных типов сообщений:

    Функция Назначение
    ProtoCanMsgToBroadcastStatus Обработка запроса статуса по широковещательной рассылке
    ProtoCanMsgToBroadcastOnOff Включение/выключение пульса
    ProtoCanMsgToBroadcastRestart Перезапуск системы
    ProtoCanMsgToBroadcastRtcSetup Настройка RTC через CAN
    ProtoCanMsgToDiscreteAccident Обработка запроса аварийных сообщений
    ProtoCanMsgToDiscreteWarning Обработка запроса предупреждающих сообщений
    ProtoCanMsgToDiscreteControlSignals Обработка запроса управляющих сигналов
    ProtoCanMsgToDiscreteFlags Обработка запроса флагов
    ProtoCanMsgToDiscreteReset Обработка запроса перезапуска устройства
    ProtoCanMsgToDiscreteChangeMode Обработка запроса изменение режима работы
    ProtoCanMsgToDiscreteRequestListOfParameters Обработка запроса параметров системы
    ProtoCanMsgToAnalogUniversal Обработка универсального запроса
    ProtoCanMsgToAnalogUSTAVKI Обработка запроса уставок
    ProtoCanMsgToAnalogUSens Обработка запроса данных датчиков напряжения
    ProtoCanMsgToAnalogISens Обработка запроса данных датчиков тока
    ProtoCanMsgToAnalogTSens Обработка запроса данных датчиков температуры
    ProtoCanMsgToModbusCoil Обработка Modbus Coil
    ProtoCanMsgToModbusDiscrete Обработка Modbus Discrete
    ProtoCanMsgToModbusHolding Обработка Modbus Holding
    ProtoCanMsgToModbusInput Обработка Modbus Input
    Downloads