ELIOT1 HAL
Загрузка...
Поиск...
Не найдено
Драйвер модуля CAN

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

Файлы

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

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

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.

Драйвер содержит функции управления контроллером CAN микросхемы ELIOT1.

Типы

◆ can_flag_t

typedef enum _can_flag can_flag_t

Флаги прерываний и состояний CAN.

Флаги в перечислении делятся на флаги прерываний, на которые можно зарегистрировать обработчик прерывания, и флаги состояний, которые только сигнализируют об определенном состоянии контроллера CAN и на которые нельзя прикрепить обработчик. Флаги состояния имеют суффикс State в названии и слово "состояние" в русском пояснении.

◆ can_kind_of_error_t

Виды ошибок на линии CAN.

Перечисление содержит виды ошибок, которые определяет контроллер CAN. Одно из данных значений устанавливается контроллером в поле koer структуры принятого кадра.

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

◆ _can_bytes_in_datafield

Размер данных кадра CAN, указываемый в поле DLC.

Элементы перечислений
CAN_0ByteDatafield 

0 байт

CAN_1ByteDatafield 

1 байт

CAN_2ByteDatafield 

2 байтa

CAN_3ByteDatafield 

3 байтa

CAN_4ByteDatafield 

4 байтa

CAN_5ByteDatafield 

5 байт

CAN_6ByteDatafield 

6 байт

CAN_7ByteDatafield 

7 байт

CAN_8ByteDatafield 

8 байт

CAN_12ByteDatafield 

12 байт

CAN_16ByteDatafield 

16 байт

CAN_20ByteDatafield 

20 байт

CAN_24ByteDatafield 

24 байтa

CAN_32ByteDatafield 

32 байтa

CAN_48ByteDatafield 

48 байт

CAN_64ByteDatafield 

64 байтa

◆ _can_flag

enum _can_flag

Флаги прерываний и состояний CAN.

Флаги в перечислении делятся на флаги прерываний, на которые можно зарегистрировать обработчик прерывания, и флаги состояний, которые только сигнализируют об определенном состоянии контроллера CAN и на которые нельзя прикрепить обработчик. Флаги состояния имеют суффикс State в названии и слово "состояние" в русском пояснении.

Элементы перечислений
CAN_FlagAbortState 

Состояние отмененной передачи

CAN_FlagError 

Флаг ошибки

CAN_FlagTransmissionSecondary 

Выполнена передача из низкоприоритетного буфера

CAN_FlagTransmissionPrimary 

Выполнена передача из высокоприоритетного буфера

CAN_FlagTransmitBufferFull 

Буфер выдачи заполнен

CAN_FlagRBAlmostFull 

Буфер приема почти заполнен

CAN_FlagRBFull 

Буфер приема заполнен

CAN_FlagRBOverrun 

Переполнение буфера приема

CAN_FlagReceive 

Выполнен прием кадра

CAN_FlagBusError 

Ошибка шины данных(BUS ERROR)

CAN_FlagArbitrationLost 

Проигран арбитраж на шине данных

CAN_FlagErrorPassiveInterrupt 

Переход в пассивный режим

CAN_FlagErrorPassiveState 

Состояние пассивного режима

CAN_FlagErrorWarningState 

Состояние, в котором количество ошибок достигло уровня предупреждения

CAN_FlagTimeTriggered 

Сработал триггер TTCAN

CAN_FlagTriggerError 

Ошибка триггера TTCAN

CAN_FlagWatchTriggerError 

Сработал следящий триггер TTCAN

CAN_FlagsNumber 

Константа - количество флагов состояния

◆ _can_kind_of_error

Виды ошибок на линии CAN.

Перечисление содержит виды ошибок, которые определяет контроллер CAN. Одно из данных значений устанавливается контроллером в поле koer структуры принятого кадра.

Элементы перечислений
CAN_ErrorNone 

Нет ошибки

CAN_ErrorBitError 

Ошибка бита

CAN_ErrorFormError 

Ошибка формы

CAN_ErrorStuffError 

Ошибка вставки дополнительных битов (бит-стаффинга)

CAN_ErrorAckError 

Ошибка подтверждения

CAN_ErrorCrcError 

Ошибка контрольной суммы

CAN_ErrorOtherError 

Прочие ошибки: доминантные биты после передачи собственного признака ошибки, признак ошибки был слишком длинным, доминантный бит при передаче признака Passive-Error после определения ошибки подтверждения

CAN_ErrorReserved 

Не используется

◆ _can_status

Коды возврата функций драйвера CAN.

Элементы перечислений
CAN_Status_Ok 

Успешно

CAN_Status_Fail 

Провал

CAN_Status_InvalidArgument 

Неверный аргумент

CAN_Status_TxBusy 

Передатчик занят

CAN_Status_RxEmpty 

Приемный буфер пуст

CAN_Status_TxIdle 

Заданное число кадров выдано

CAN_Status_RxIdle 

Заданное число кадров принято

CAN_Status_RxBusy 

Уже запущен прием

◆ _can_stb_discipline

Дисциплина выдачи из низкоприоритетного буфера

Элементы перечислений
CAN_Fifo 

Выдача в порядке поступления (по очереди)

CAN_Priority 

Выдача в соответствии с приоритетом кадра

◆ _canfd_mode

Режимы работы по протоколу CAN FD (есть отличия в расчете контрольной суммы и формировании битов стаффинга

Элементы перечислений
CAN_BoschFd 

Режим Bosch CAN FD

CAN_IsoFd 

Режим ISO CAN FD

◆ _ttcan_timer_prescaler

Символьные константы значений делителя блока TTCAN.

Элементы перечислений
CAN_TTCANDiv1 

Делитель отсутствует

CAN_TTCANDiv2 

Делитель равен 2

CAN_TTCANDiv4 

Делитель равен 4

CAN_TTCANDiv8 

Делитель равен 8

◆ _ttcan_trigger_type

Тип триггера TTCAN.

Элементы перечислений
CAN_TriggerImmediate 

Передача запускается сразу

CAN_TriggerTime 

Триггер только устанавливает флаг прерывания

CAN_TriggerSingleShotTransmit 

Триггер предназначен для использования в окнах выдачи с эксклюзивным доступом только одного узла

CAN_TriggerTransmitStart 

Триггер предназначен для запуска передачи в окнах выдачи, в котором могут выдавать несколько узлов

CAN_TriggerTransmitStop 

Триггер предназначен для останова передачи в окнах выдачи, в котором могут выдавать несколько узлов

Функции

◆ CAN_AbortPrimaryTxBuffer()

void CAN_AbortPrimaryTxBuffer ( CAN_Type * base)

Отмена выдачи кадра из высокоприоритетного буфера

Аргументы
baseБазовый адрес контроллера

◆ CAN_AbortSecondaryTxBuffer()

void CAN_AbortSecondaryTxBuffer ( CAN_Type * base)

Отмена выдачи кадров из низкоприоритетного буфера

Данная функция отменяет выдачу кадров из низкоприотетного буфера (STB, Secondary Transmit Buffer). Если буфер работает в режиме приоритетной выдачи, то отменяемые кадры определяются маской, если соответстветствующий номеру ячейки бит установлен, то выполняется отмена выдачи. Если буфер работает в режиме очереди, то выполняется полная очистка буфера, независимо от значения, переданного в маске.

Аргументы
baseБазовый адрес контроллера

◆ CAN_CalculateImprovedTimingValues()

bool CAN_CalculateImprovedTimingValues ( uint32_t baudrate,
uint32_t baudrate_data,
uint32_t source_clock_hz,
can_timing_config_t * pconfig )

Расчет рекомендуемых временных параметров (битовых таймингов) для указанных скоростей обмена в сегменте управления и данных

Аргументы
baudrateСкорость CANFD в битах/с при передаче управляющей части кадра
baudrate_dataСкорость данных в битах/с (для CANFD)
source_clock_hzОпорная частота в Гц
pconfigСтруктура с временными параметрами
Возвращаемые значения
trueКонфигурация найдена
falseНе удалось найти правильную конфигурацию

◆ CAN_ClearStatusFlag()

can_status_t CAN_ClearStatusFlag ( CAN_Type * base,
can_flag_t idx )

Сброс флага состояния/прерывания

Аргументы
baseБазовый адрес контроллера
idxНомер флага состояния/прерывания
Возвращаемые значения
CAN_Status_Ok
CAN_Status_InvalidArgument

◆ CAN_ClearStatusFlagMask()

void CAN_ClearStatusFlagMask ( CAN_Type * base,
uint32_t mask )

Сброс флагов прерываний по маске

Заметки
Позиции битов для маски флагов прерываний указаны в перечислении can_flag_t.
Аргументы
baseБазовый адрес контроллера
maskМаска флагов прерываний, которые необходимо сбросить

◆ CAN_Deinit()

void CAN_Deinit ( CAN_Type * base)

Деинициализация драйвера CAN.

Функция деинициализирует контроллер CAN.

Аргументы
baseБазовый адрес контроллера

◆ CAN_DisableInterrupt()

can_status_t CAN_DisableInterrupt ( CAN_Type * base,
can_flag_t idx )

Запрет прерывания

Аргументы
baseБазовый адрес контроллера
idxНомер флага состояния/прерывания
Возвращаемые значения
CAN_Status_Ok
CAN_Status_InvalidArgument

◆ CAN_DisableInterruptMask()

void CAN_DisableInterruptMask ( CAN_Type * base,
uint32_t mask )

Запрет прерываний по маске

Аргументы
baseБазовый адрес контроллера
maskМаска флагов прерываний, которые необходимо запретить

◆ CAN_EnableInterrupt()

can_status_t CAN_EnableInterrupt ( CAN_Type * base,
can_flag_t idx )

Разрешение прерывания

Аргументы
baseБазовый адрес контроллера
idxНомер флага состояния/прерывания
Возвращаемые значения
CAN_Status_Ok
CAN_Status_InvalidArgument

◆ CAN_EnableInterruptMask()

void CAN_EnableInterruptMask ( CAN_Type * base,
uint32_t mask )

Разрешение прерываний по маске

Аргументы
baseБазовый адрес контроллера
maskМаска флагов прерываний, которые необходимо разрешить

◆ CAN_EnterNormalMode()

void CAN_EnterNormalMode ( CAN_Type * base)

Переключение контроллера CAN в рабочий режим

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

Аргументы
baseБазовый адрес контроллера

◆ CAN_EnterStandbyMode()

void CAN_EnterStandbyMode ( CAN_Type * base)

Переключение контроллера CAN в режим ожидания

Аргументы
baseБазовый адрес контроллера

◆ CAN_GetDefaultConfig()

void CAN_GetDefaultConfig ( can_config_t * config,
uint32_t source_clock_hz )

Получение параметров драйвера CAN по умолчанию

Аргументы
configСтруктура с параметрами конфигурации
source_clock_hzОпорная частота в Гц

◆ CAN_GetEnabledInterruptMask()

uint32_t CAN_GetEnabledInterruptMask ( CAN_Type * base)

Запрос маски разрешенных прерываний CAN.

Запрос маски разрешенных прерываний CAN; единицы в соответствующих разрядах соответствуют включенным прерываниям.

Аргументы
baseБазовый адрес CAN
Возвращает
Маска разрешенных прерываний

◆ CAN_GetStatusFlag()

bool CAN_GetStatusFlag ( CAN_Type * base,
can_flag_t idx,
can_status_t * status )

Получение состояния флага состояния/прерывания

Аргументы
baseБазовый адрес контроллера
idxНомер флага состояния/прерывания
statusПо переданному указателю функция записывает свой статус выполнения. При передаче нулевого указателя запись не производится.
Возвращаемые значения
trueСостояние активно
falseСостояние неактивно

◆ CAN_GetStatusFlagMask()

uint32_t CAN_GetStatusFlagMask ( CAN_Type * base)

Получение маски активных прерываний

Аргументы
baseБазовый адрес контроллера
Возвращает
Маска активных прерываний

◆ CAN_Init()

can_status_t CAN_Init ( CAN_Type * base,
const can_config_t * config )

Инициализация драйвера CAN.

Функция инициализирует модуль CAN в соответствии с заданными пользовательскими параметрами.

Аргументы
baseБазовый адрес контроллера
configСтруктура с параметрами конфигурации

◆ CAN_IsInterruptEnabled()

bool CAN_IsInterruptEnabled ( CAN_Type * base,
can_flag_t idx,
can_status_t * status )

Запрос - разрешено ли прерывание CAN.

Аргументы
baseБазовый адрес CAN
idxНомер флага состояния/прерывания
statusПо переданному указателю функция записывает свой статус выполнения. При передаче нулевого указателя запись не производится.
Возвращаемые значения
trueПрерывание разрешено
falseПрерывание запрещено

◆ CAN_IsPrimaryTransmitRequestPending()

bool CAN_IsPrimaryTransmitRequestPending ( CAN_Type * base)

Получение признака требования выдачи для высокоприоритетного буфера

Данная функция возвращает состояние флага требования выдачи для высокоприоритетного буфера. Если флаг установлен, то буфер занят.

Аргументы
baseБазовый адрес контроллера
Возвращаемые значения
trueПризнак выдачи активен (буфер занят)
falseПризнак сброшен

◆ CAN_IsRxBufferAlmostFull()

bool CAN_IsRxBufferAlmostFull ( CAN_Type * base)

Получение признака заполнения буфера приема до границы "почти полный".

Данная функция сообщает, заполнен ли буфер приема до состояния "почти полный".

Аргументы
baseБазовый адрес контроллера
Возвращаемые значения
trueБуфер заполнен до состояния "почти полный"
falseБуфер не заполнен до состояния "почти полный"

◆ CAN_IsRxBufferEmpty()

bool CAN_IsRxBufferEmpty ( CAN_Type * base)

Получение признака опустошения буфера приема

Данная функция сообщает, пуст ли буфер приема.

Аргументы
baseБазовый адрес контроллера
Возвращаемые значения
trueБуфер пуст
falseВ буфере есть кадры

◆ CAN_IsRxBufferFull()

bool CAN_IsRxBufferFull ( CAN_Type * base)

Получение признака заполнения буфера приема

Данная функция сообщает, заполнен ли буфер приема.

Аргументы
baseБазовый адрес контроллера
Возвращаемые значения
trueБуфер заполнен
falseБуфер не заполнен

◆ CAN_IsSecondaryTransmitRequestPending()

bool CAN_IsSecondaryTransmitRequestPending ( CAN_Type * base)

Получение признака требования выдачи для низкоприоритетного буфера

Данная функция возвращает состояние флага требования выдачи для ячейки низкоприоритетного буфера (при использовании приоритетного порядка выдачи из низкоприоритетного буфера). Если флаг установлен, то ячейка занята.

Аргументы
baseБазовый адрес контроллера
Возвращаемые значения
trueПризнак выдачи активен (буфер занят)
falseПризнак сброшен

◆ CAN_IsSecondaryTxBufferEmpty()

bool CAN_IsSecondaryTxBufferEmpty ( CAN_Type * base)

Получение признака опустошения низкоприоритетного буфера

Данная функция сообщает, пуст ли низкоприоритетный буфер.

Аргументы
baseБазовый адрес контроллера
Возвращаемые значения
trueБуфер пуст
falseВ буфере есть кадры

◆ CAN_IsSecondaryTxBufferFull()

bool CAN_IsSecondaryTxBufferFull ( CAN_Type * base)

Получение признака заполнения низкоприоритетного буфера.

Данная функция сообщает, заполнен ли низкоприоритетный буфер.

Аргументы
baseБазовый адрес контроллера
Возвращаемые значения
trueОчередь пуста
falseВ очереди есть кадры

◆ CAN_IsSecondaryTxBufferMoreThanHalfFull()

bool CAN_IsSecondaryTxBufferMoreThanHalfFull ( CAN_Type * base)

Получение признака заполнения низкоприоритетного буфера выше середины

Данная функция сообщает, пуст ли низкоприоритетный буфер до уровня более половины всех доступных ячеек.

Аргументы
baseБазовый адрес контроллера
Возвращаемые значения
trueБуфер заполнен выше середины
falseБуфер заполнен меньше середины

◆ CAN_ReadRxBuffer()

can_status_t CAN_ReadRxBuffer ( CAN_Type * base,
can_rx_buffer_frame_t * prxframe )

Чтение принятого кадра из приемной очереди

Функция считывает один принятый кадр CAN из приемной очереди. Считанный кадр при этом удаляется из очереди.

Аргументы
baseБазовый адрес контроллера
prxframeПринятый кадр
Возвращаемые значения
CAN_Status_Ok
CAN_Status_RxEmpty

◆ CAN_SetArbitrationTimingConfig()

void CAN_SetArbitrationTimingConfig ( CAN_Type * base,
const can_timing_config_t * config )

Установка временных параметров (битовых таймингов) CAN.

Аргументы
baseБазовый адрес контроллера
configСтруктура с временными параметрами

◆ CAN_SetFilterConfig()

void CAN_SetFilterConfig ( CAN_Type * base,
const can_frame_filter_config_t * config )

Установка параметров фильтрации кадров при приеме

Аргументы
baseБазовый адрес контроллера
configСтруктура с параметрами фильтрации кадров

◆ CAN_SetPrimaryTxBufferConfig()

void CAN_SetPrimaryTxBufferConfig ( CAN_Type * base,
const can_ptb_config_t * config )

Установка параметров высокоприоритетного буфера выдачи

Аргументы
baseБазовый адрес контроллера
configСтруктура с параметрами высокоприоритетного буфера выдачи кадров

◆ CAN_SetRxBufferConfig()

void CAN_SetRxBufferConfig ( CAN_Type * base,
const can_rxb_config_t * config )

Установка параметров буфера приема

Аргументы
baseБазовый адрес контроллера
configСтруктура с параметрами буфера приема кадров

◆ CAN_SetSecondaryTxBufferConfig()

void CAN_SetSecondaryTxBufferConfig ( CAN_Type * base,
const can_stb_config_t * config )

Установка параметров низкоприоритетного буфера выдачи

Аргументы
baseБазовый адрес контроллера
configСтруктура с параметрами низкоприоритетного буфера выдачи кадров

◆ CAN_SetTTCANConfig()

void CAN_SetTTCANConfig ( CAN_Type * base,
const ttcan_config_t * config )

Установка параметров работы контроллера в режиме TTCAN.

Аргументы
baseБазовый адрес контроллера
configСтруктура с параметрами TTCAN

◆ CAN_TransferAbortReceive()

void CAN_TransferAbortReceive ( CAN_Type * base,
can_handle_t * handle )

Отмена приема

Аргументы
baseБазовый адрес контроллера
handleОбработчик

◆ CAN_TransferAbortSendPrimary()

void CAN_TransferAbortSendPrimary ( CAN_Type * base,
can_handle_t * handle )

Отмена выдачи из высокоприоритетного буфера

Аргументы
baseБазовый адрес контроллера
handleОбработчик

◆ CAN_TransferAbortSendSecondary()

void CAN_TransferAbortSendSecondary ( CAN_Type * base,
can_handle_t * handle )

Отмена выдачи из низкоприоритетного буфера

Аргументы
baseБазовый адрес контроллера
handleОбработчик

◆ CAN_TransferCreateHandle()

can_status_t CAN_TransferCreateHandle ( CAN_Type * base,
can_handle_t * handle,
can_transfer_callback_t callback,
void * user_data )

Инициализация обработчика событий CAN.

Аргументы
baseБазовый адрес контроллера
handleОбработчик
callbackФункция обратного вызова
user_dataАргумент функции обратного вызова
Возвращаемые значения
CAN_Status_Ok
CAN_Status_Fail

◆ CAN_TransferGetReceivedCount()

can_status_t CAN_TransferGetReceivedCount ( CAN_Type * base,
can_handle_t * handle,
uint32_t * nb_frames )

Возвращает количество принятых кадров по прерыванию

Аргументы
baseБазовый адрес контроллера
handleОбработчик
nb_framesУказатель для возврата количества отправленных кадров
Возвращаемые значения
CAN_Status_Ok
CAN_Status_RxIdle

◆ CAN_TransferGetSentPrimaryCount()

can_status_t CAN_TransferGetSentPrimaryCount ( CAN_Type * base,
can_handle_t * handle,
uint32_t * nb_frames )

Возвращает количество кадров, отправленных в шину данных через высокоприоритетный буфер

Эта функция возвращает количество кадров, отправленных в шину данных по прерыванию через высокоприоритетный буфер.

Аргументы
baseБазовый адрес контроллера
handleОбработчик
nb_framesУказатель для возврата количества отправленных кадров
Возвращаемые значения
CAN_Status_Ok
CAN_Status_TxIdle

◆ CAN_TransferGetSentSecondaryCount()

can_status_t CAN_TransferGetSentSecondaryCount ( CAN_Type * base,
can_handle_t * handle,
uint32_t * nb_frames )

Возвращает количество кадров, отправленных в шину данных через низкоприоритетный буфер

Эта функция возвращает количество кадров, отправленных в шину данных по прерыванию через низкоприоритетный буфер.

Аргументы
baseБазовый адрес контроллера
handleОбработчик
nb_framesУказатель для возврата количества отправленных кадров
Возвращаемые значения
CAN_Status_Ok
CAN_Status_TxIdle

◆ CAN_TransferHandleIRQ()

void CAN_TransferHandleIRQ ( CAN_Type * base,
can_handle_t * handle )

Установка обработчика на прерывания от CAN, не связанные с приемом/выдачей

Аргументы
baseБазовый адрес контроллера
handleОбработчик

◆ CAN_TransferReceiveFifoBlocking()

can_status_t CAN_TransferReceiveFifoBlocking ( CAN_Type * base,
can_rx_buffer_frame_t * prxframe,
size_t nb_frames )

Блокирующий прием кадра

При использовании блокирующей выдачи не нужно устанавливать обработчик соответствующего события.

Аргументы
baseБазовый адрес контроллера
prxframeБуфер для приёма кадров
nb_framesМаксимальное количество кадров в буфере для приёма
Возвращаемые значения
CAN_Status_Ok
CAN_Status_Fail

◆ CAN_TransferReceiveFifoNonBlocking()

can_status_t CAN_TransferReceiveFifoNonBlocking ( CAN_Type * base,
can_handle_t * handle,
can_rx_transfer_t * xfer )

Неблокирующий прием

Функция принимает кадр CAN по прерыванию. Это неблокирующая функция, она возвращает управление сразу. По приему кадра из шину вызывается функция обратного вызова.

Аргументы
baseБазовый адрес контроллера
handleОбработчик
xferСтруктура для передачи кадра в неблокирующем режиме
Возвращаемые значения
CAN_Status_Ok
CAN_Status_InvalidArgument
CAN_Status_RxBusy

◆ CAN_TransferSendPrimaryBlocking()

can_status_t CAN_TransferSendPrimaryBlocking ( CAN_Type * base,
can_tx_buffer_frame_t * ptxframe,
size_t nb_frames )

Блокирующая выдача кадра через высокоприоритетный буфер выдачи

При использовании блокирующей выдачи не нужно устанавливать обработчик соответствующего события.

Аргументы
baseБазовый адрес контроллера
ptxframeБуфер с кадрами для выдачи
nb_framesКоличество кадров для выдачи
Возвращаемые значения
CAN_Status_Ok
CAN_Status_Fail

◆ CAN_TransferSendPrimaryNonBlocking()

can_status_t CAN_TransferSendPrimaryNonBlocking ( CAN_Type * base,
can_handle_t * handle,
can_tx_transfer_t * xfer )

Неблокирующая выдача через высокоприоритетный буфер

Функция выдает кадр CAN по прерыванию. Это неблокирующая функция, она возвращает управление сразу. По выдачи кадра в шину данных вызывает функцию обратного вызова.

Аргументы
baseБазовый адрес контроллера
handleОбработчик
xferСтруктура для передачи кадра в неблокирующем режиме
Возвращаемые значения
CAN_Status_Ok
CAN_Status_Fail
CAN_Status_TxBusy

◆ CAN_TransferSendSecondaryBlocking()

can_status_t CAN_TransferSendSecondaryBlocking ( CAN_Type * base,
can_tx_buffer_frame_t * ptxframe,
size_t nb_frames )

Блокирующая выдача кадра через низкоприоритетный буфер выдачи

При использовании блокирующей выдачи не нужно устанавливать обработчик соответствующего события.

Аргументы
baseБазовый адрес контроллера
ptxframeБуфер с кадрами для выдачи
nb_framesКоличество кадров для выдачи
Возвращаемые значения
CAN_Status_Ok
CAN_Status_Fail

◆ CAN_TransferSendSecondaryNonBlocking()

can_status_t CAN_TransferSendSecondaryNonBlocking ( CAN_Type * base,
can_handle_t * handle,
can_tx_transfer_t * xfer )

Неблокирующая выдача через низкоприоритетный буфер

Функция выдает кадр CAN по прерыванию. Это неблокирующая функция, она возвращает управление сразу. По выдачи кадра в шину вызывается функция обратного вызова.

Аргументы
baseБазовый адрес контроллера
handleОбработчик
xferСтруктура для передачи кадра в неблокирующем режиме
Возвращаемые значения
CAN_Status_Ok
CAN_Status_Fail
CAN_Status_TxBusy

◆ CAN_WritePrimaryTxBuffer()

can_status_t CAN_WritePrimaryTxBuffer ( CAN_Type * base,
const can_tx_buffer_frame_t * ptxframe )

Запись кадра в высокоприоритетный буфер передачи.

Данная функция записывает кадр в высокоприоритетный буфер (PTB, Primary Transmit Buffer). Выдача из данного буфера "вклинивается" в выдачу из низкоприоритетного буфера. Высокоприоритетный буфер может содержать только один кадр CAN. Функция не блокирующая.

Аргументы
baseБазовый адрес контроллера
ptxframeКадр для выдачи
Возвращаемые значения
CAN_Status_Ok
CAN_Status_TxBusy
CAN_Status_InvalidArgument

◆ CAN_WriteSecondaryTxBuffer()

can_status_t CAN_WriteSecondaryTxBuffer ( CAN_Type * base,
const can_tx_buffer_frame_t * ptxframe )

Запись кадра в низкоприоритетный буфер передачи

Данная функция записывает кадр в низкоприоритетный буфер (STB, Secondary Transmit Buffer), работающий в режиме выдачи кадров в соответствии с их приоритетом.

Аргументы
baseБазовый адрес контроллера
ptxframeКадр для выдачи
Возвращаемые значения
CAN_Status_Ok
CAN_Status_TxBusy