Files
DS_SN65HVD230/Inc/DS_SN65HVD230.h

40 lines
1.5 KiB
C

#ifndef DS_SN65HVD230_H
#define DS_SN65HVD230_H
#include <stdint.h>
#ifdef STM32G030xx
#include "stm32g0xx_hal.h"
#endif
#ifdef STM32G0B1xx
#include "stm32g0xx_hal.h"
#endif
/* Управляющий дескриптор для STM32G0 */
typedef struct {
FDCAN_HandleTypeDef *hfdcan; // Указатель на аппаратный FDCAN в STM32G0
} SN65HVD230_t;
/* Унифицированная структура кадра (Классический CAN-режим на FDCAN) */
typedef struct {
uint32_t Identifier; // ID пакета (11 или 29 бит)
uint32_t IdType; // Тип: FDCAN_STANDARD_ID или FDCAN_EXTENDED_ID
uint32_t TxFrameType; // Тип кадра: FDCAN_DATA_FRAME или FDCAN_REMOTE_FRAME
uint32_t DataLength; // Количество байт данных: от FDCAN_DLC_BYTES_0 до FDCAN_DLC_BYTES_8
uint8_t Data[8]; // Буфер данных (макс 8 байт для классического CAN)
} CAN_Message_t;
/* Прототипы функций управления */
HAL_StatusTypeDef SN65HVD230_Init(SN65HVD230_t *node, FDCAN_HandleTypeDef *hfdcan_handle);
HAL_StatusTypeDef SN65HVD230_Start(SN65HVD230_t *node);
HAL_StatusTypeDef SN65HVD230_Stop(SN65HVD230_t *node);
/* Функции отправки и приема */
HAL_StatusTypeDef SN65HVD230_Transmit(SN65HVD230_t *node, CAN_Message_t *msg, uint32_t timeout_ms);
HAL_StatusTypeDef SN65HVD230_Receive(SN65HVD230_t *node, CAN_Message_t *msg, uint32_t timeout_ms);
#endif // DS_SN65HVD230_H