ELIOT1 HAL
Загрузка...
Поиск...
Не найдено

Интерфейс драйвера модуля ввода-вывода по интерфейсу CAN. Подробнее...

#include "hal_common.h"

См. исходные тексты.

Структуры данных

struct  _can_tx_buffer_frame
 Структура буфера передачи кадра CAN. Подробнее...
 
struct  _can_rx_buffer_frame
 Структура буфера приема кадра CAN. Подробнее...
 
struct  _can_frame_filter
 Фильтр принятых кадров CAN. Подробнее...
 
struct  _can_frame_filter_config
 Конфигурация фильтрации принятых кадров CAN. Подробнее...
 
struct  _ttcan_config
 Временные параметры передачи битов CAN. Подробнее...
 
struct  _can_timing_config
 Временные параметры передачи битов CAN. Подробнее...
 
struct  _can_ptb_config
 Параметры высокоприоритетного буфера выдачи Подробнее...
 
struct  _can_stb_config
 Параметры низкоприоритетного буфера выдачи Подробнее...
 
struct  _can_rxb_config
 Параметры буфера приема Подробнее...
 
struct  _can_config
 Структура конфигурации контроллера CAN. Подробнее...
 
struct  _can_tx_transfer
 Структура для передачи кадра CAN в неблокирующем режиме (по прерыванию) Подробнее...
 
struct  _can_rx_transfer
 Структура для приема кадра CAN в неблокирующем режиме (по прерыванию) Подробнее...
 
struct  _can_handle
 Структура дескриптора драйвера CAN. Подробнее...
 

Макросы

#define HAL_CAN_DRIVER_VERSION   (MAKE_VERSION(1, 1, 0))
 Версия драйвера CAN.
 
#define CAN_NB_OF_FILTERS   4
 Количество входных фильтров CAN.
 

Определения типов

typedef enum _can_status can_status_t
 Коды возврата функций драйвера CAN.
 
typedef enum _can_kind_of_error can_kind_of_error_t
 Виды ошибок на линии CAN.
 
typedef enum _can_flag can_flag_t
 Флаги прерываний и состояний CAN.
 
typedef enum _canfd_mode canfd_mode_t
 Режимы работы по протоколу CAN FD (есть отличия в расчете контрольной суммы и формировании битов стаффинга
 
typedef enum _can_stb_discipline can_stb_discipline_t
 Дисциплина выдачи из низкоприоритетного буфера
 
typedef enum _can_bytes_in_datafield can_bytes_in_datafield_t
 Размер данных кадра CAN, указываемый в поле DLC.
 
typedef struct _can_tx_buffer_frame can_tx_buffer_frame_t
 Структура буфера передачи кадра CAN.
 
typedef struct _can_rx_buffer_frame can_rx_buffer_frame_t
 Структура буфера приема кадра CAN.
 
typedef struct _can_frame_filter can_frame_filter_t
 Фильтр принятых кадров CAN.
 
typedef struct _can_frame_filter_config can_frame_filter_config_t
 Конфигурация фильтрации принятых кадров CAN.
 
typedef enum _ttcan_timer_prescaler ttcan_timer_prescaler_t
 Символьные константы значений делителя блока TTCAN.
 
typedef enum _ttcan_trigger_type ttcan_trigger_type_t
 Тип триггера TTCAN.
 
typedef struct _ttcan_config ttcan_config_t
 Временные параметры передачи битов CAN.
 
typedef struct _can_timing_config can_timing_config_t
 Временные параметры передачи битов CAN.
 
typedef struct _can_ptb_config can_ptb_config_t
 Параметры высокоприоритетного буфера выдачи
 
typedef struct _can_stb_config can_stb_config_t
 Параметры низкоприоритетного буфера выдачи
 
typedef struct _can_rxb_config can_rxb_config_t
 Параметры буфера приема
 
typedef struct _can_config can_config_t
 Структура конфигурации контроллера CAN.
 
typedef struct _can_tx_transfer can_tx_transfer_t
 Структура для передачи кадра CAN в неблокирующем режиме (по прерыванию)
 
typedef struct _can_rx_transfer can_rx_transfer_t
 Структура для приема кадра CAN в неблокирующем режиме (по прерыванию)
 
typedef struct _can_handle can_handle_t
 Декларация типа дескриптора драйвера CAN.
 
typedef void(* can_transfer_callback_t) (CAN_Type *base, can_handle_t *handle, can_status_t status, can_flag_t interrupt_flag, void *user_data)
 Функция обратного вызова CAN.
 

Перечисления

enum  _can_status
 Коды возврата функций драйвера CAN. Подробнее...
 
enum  _can_kind_of_error
 Виды ошибок на линии CAN. Подробнее...
 
enum  _can_flag
 Флаги прерываний и состояний CAN. Подробнее...
 
enum  _canfd_mode
 Режимы работы по протоколу CAN FD (есть отличия в расчете контрольной суммы и формировании битов стаффинга Подробнее...
 
enum  _can_stb_discipline
 Дисциплина выдачи из низкоприоритетного буфера Подробнее...
 
enum  _can_bytes_in_datafield
 Размер данных кадра CAN, указываемый в поле DLC. Подробнее...
 
enum  _ttcan_timer_prescaler
 Символьные константы значений делителя блока TTCAN. Подробнее...
 
enum  _ttcan_trigger_type
 Тип триггера TTCAN. Подробнее...
 

Функции

Инициализация и деинициализация
can_status_t CAN_Init (CAN_Type *base, const can_config_t *config)
 Инициализация драйвера CAN.
 
void CAN_Deinit (CAN_Type *base)
 Деинициализация драйвера CAN.
 
void CAN_GetDefaultConfig (can_config_t *config, uint32_t source_clock_hz)
 Получение параметров драйвера CAN по умолчанию
 
void CAN_EnterNormalMode (CAN_Type *base)
 Переключение контроллера CAN в рабочий режим
 
void CAN_EnterStandbyMode (CAN_Type *base)
 Переключение контроллера CAN в режим ожидания
 
Конфигурирование настроек приемопередачи
bool CAN_CalculateImprovedTimingValues (uint32_t baudrate, uint32_t baudrate_data, uint32_t source_clock_hz, can_timing_config_t *pconfig)
 Расчет рекомендуемых временных параметров (битовых таймингов) для указанных скоростей обмена в сегменте управления и данных
 
void CAN_SetArbitrationTimingConfig (CAN_Type *base, const can_timing_config_t *config)
 Установка временных параметров (битовых таймингов) CAN.
 
void CAN_SetPrimaryTxBufferConfig (CAN_Type *base, const can_ptb_config_t *config)
 Установка параметров высокоприоритетного буфера выдачи
 
void CAN_SetSecondaryTxBufferConfig (CAN_Type *base, const can_stb_config_t *config)
 Установка параметров низкоприоритетного буфера выдачи
 
void CAN_SetRxBufferConfig (CAN_Type *base, const can_rxb_config_t *config)
 Установка параметров буфера приема
 
void CAN_SetFilterConfig (CAN_Type *base, const can_frame_filter_config_t *config)
 Установка параметров фильтрации кадров при приеме
 
void CAN_SetTTCANConfig (CAN_Type *base, const ttcan_config_t *config)
 Установка параметров работы контроллера в режиме TTCAN.
 
Флаги статусов и прерываний
bool CAN_GetStatusFlag (CAN_Type *base, can_flag_t idx, can_status_t *status)
 Получение состояния флага состояния/прерывания
 
uint32_t CAN_GetStatusFlagMask (CAN_Type *base)
 Получение маски активных прерываний
 
can_status_t CAN_ClearStatusFlag (CAN_Type *base, can_flag_t idx)
 Сброс флага состояния/прерывания
 
void CAN_ClearStatusFlagMask (CAN_Type *base, uint32_t mask)
 Сброс флагов прерываний по маске
 
Управление прерываниями
can_status_t CAN_EnableInterrupt (CAN_Type *base, can_flag_t idx)
 Разрешение прерывания
 
void CAN_EnableInterruptMask (CAN_Type *base, uint32_t mask)
 Разрешение прерываний по маске
 
bool CAN_IsInterruptEnabled (CAN_Type *base, can_flag_t idx, can_status_t *status)
 Запрос - разрешено ли прерывание CAN.
 
uint32_t CAN_GetEnabledInterruptMask (CAN_Type *base)
 Запрос маски разрешенных прерываний CAN.
 
can_status_t CAN_DisableInterrupt (CAN_Type *base, can_flag_t idx)
 Запрет прерывания
 
void CAN_DisableInterruptMask (CAN_Type *base, uint32_t mask)
 Запрет прерываний по маске
 
Прямое управление выдачей и приемом
bool CAN_IsPrimaryTransmitRequestPending (CAN_Type *base)
 Получение признака требования выдачи для высокоприоритетного буфера
 
bool CAN_IsSecondaryTransmitRequestPending (CAN_Type *base)
 Получение признака требования выдачи для низкоприоритетного буфера
 
bool CAN_IsSecondaryTxBufferEmpty (CAN_Type *base)
 Получение признака опустошения низкоприоритетного буфера
 
bool CAN_IsSecondaryTxBufferMoreThanHalfFull (CAN_Type *base)
 Получение признака заполнения низкоприоритетного буфера выше середины
 
bool CAN_IsSecondaryTxBufferFull (CAN_Type *base)
 Получение признака заполнения низкоприоритетного буфера.
 
can_status_t CAN_WritePrimaryTxBuffer (CAN_Type *base, const can_tx_buffer_frame_t *ptxframe)
 Запись кадра в высокоприоритетный буфер передачи.
 
can_status_t CAN_WriteSecondaryTxBuffer (CAN_Type *base, const can_tx_buffer_frame_t *ptxframe)
 Запись кадра в низкоприоритетный буфер передачи
 
void CAN_AbortPrimaryTxBuffer (CAN_Type *base)
 Отмена выдачи кадра из высокоприоритетного буфера
 
void CAN_AbortSecondaryTxBuffer (CAN_Type *base)
 Отмена выдачи кадров из низкоприоритетного буфера
 
bool CAN_IsRxBufferEmpty (CAN_Type *base)
 Получение признака опустошения буфера приема
 
bool CAN_IsRxBufferAlmostFull (CAN_Type *base)
 Получение признака заполнения буфера приема до границы "почти полный".
 
bool CAN_IsRxBufferFull (CAN_Type *base)
 Получение признака заполнения буфера приема
 
can_status_t CAN_ReadRxBuffer (CAN_Type *base, can_rx_buffer_frame_t *prxframe)
 Чтение принятого кадра из приемной очереди
 
Транзакционные передача и прием
can_status_t CAN_TransferSendPrimaryBlocking (CAN_Type *base, can_tx_buffer_frame_t *ptxframe, size_t nb_frames)
 Блокирующая выдача кадра через высокоприоритетный буфер выдачи
 
can_status_t CAN_TransferSendSecondaryBlocking (CAN_Type *base, can_tx_buffer_frame_t *ptxframe, size_t nb_frames)
 Блокирующая выдача кадра через низкоприоритетный буфер выдачи
 
can_status_t CAN_TransferReceiveFifoBlocking (CAN_Type *base, can_rx_buffer_frame_t *prxframe, size_t nb_frames)
 Блокирующий прием кадра
 
can_status_t CAN_TransferCreateHandle (CAN_Type *base, can_handle_t *handle, can_transfer_callback_t callback, void *user_data)
 Инициализация обработчика событий CAN.
 
can_status_t CAN_TransferSendPrimaryNonBlocking (CAN_Type *base, can_handle_t *handle, can_tx_transfer_t *xfer)
 Неблокирующая выдача через высокоприоритетный буфер
 
can_status_t CAN_TransferGetSentPrimaryCount (CAN_Type *base, can_handle_t *handle, uint32_t *nb_frames)
 Возвращает количество кадров, отправленных в шину данных через высокоприоритетный буфер
 
void CAN_TransferAbortSendPrimary (CAN_Type *base, can_handle_t *handle)
 Отмена выдачи из высокоприоритетного буфера
 
can_status_t CAN_TransferSendSecondaryNonBlocking (CAN_Type *base, can_handle_t *handle, can_tx_transfer_t *xfer)
 Неблокирующая выдача через низкоприоритетный буфер
 
can_status_t CAN_TransferGetSentSecondaryCount (CAN_Type *base, can_handle_t *handle, uint32_t *nb_frames)
 Возвращает количество кадров, отправленных в шину данных через низкоприоритетный буфер
 
void CAN_TransferAbortSendSecondary (CAN_Type *base, can_handle_t *handle)
 Отмена выдачи из низкоприоритетного буфера
 
can_status_t CAN_TransferReceiveFifoNonBlocking (CAN_Type *base, can_handle_t *handle, can_rx_transfer_t *xfer)
 Неблокирующий прием
 
can_status_t CAN_TransferGetReceivedCount (CAN_Type *base, can_handle_t *handle, uint32_t *nb_frames)
 Возвращает количество принятых кадров по прерыванию
 
void CAN_TransferAbortReceive (CAN_Type *base, can_handle_t *handle)
 Отмена приема
 
void CAN_TransferHandleIRQ (CAN_Type *base, can_handle_t *handle)
 Установка обработчика на прерывания от CAN, не связанные с приемом/выдачей
 

Подробное описание

Интерфейс драйвера модуля ввода-вывода по интерфейсу CAN.