|
ELIOT1 HAL
|
Драйвер ввода-вывода по последовательному шинному интерфейсу 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.
| typedef enum _can_flag can_flag_t |
Флаги прерываний и состояний CAN.
Флаги в перечислении делятся на флаги прерываний, на которые можно зарегистрировать обработчик прерывания, и флаги состояний, которые только сигнализируют об определенном состоянии контроллера CAN и на которые нельзя прикрепить обработчик. Флаги состояния имеют суффикс State в названии и слово "состояние" в русском пояснении.
| typedef enum _can_kind_of_error can_kind_of_error_t |
Виды ошибок на линии CAN.
Перечисление содержит виды ошибок, которые определяет контроллер CAN. Одно из данных значений устанавливается контроллером в поле koer структуры принятого кадра.
Размер данных кадра CAN, указываемый в поле DLC.
| enum _can_flag |
Флаги прерываний и состояний CAN.
Флаги в перечислении делятся на флаги прерываний, на которые можно зарегистрировать обработчик прерывания, и флаги состояний, которые только сигнализируют об определенном состоянии контроллера CAN и на которые нельзя прикрепить обработчик. Флаги состояния имеют суффикс State в названии и слово "состояние" в русском пояснении.
| enum _can_kind_of_error |
Виды ошибок на линии CAN.
Перечисление содержит виды ошибок, которые определяет контроллер CAN. Одно из данных значений устанавливается контроллером в поле koer структуры принятого кадра.
| enum _can_status |
Коды возврата функций драйвера CAN.
| enum _can_stb_discipline |
| enum _canfd_mode |
| enum _ttcan_trigger_type |
Тип триггера TTCAN.
| void CAN_AbortPrimaryTxBuffer | ( | CAN_Type * | base | ) |
Отмена выдачи кадра из высокоприоритетного буфера
| base | Базовый адрес контроллера |
| void CAN_AbortSecondaryTxBuffer | ( | CAN_Type * | base | ) |
Отмена выдачи кадров из низкоприоритетного буфера
Данная функция отменяет выдачу кадров из низкоприотетного буфера (STB, Secondary Transmit Buffer). Если буфер работает в режиме приоритетной выдачи, то отменяемые кадры определяются маской, если соответстветствующий номеру ячейки бит установлен, то выполняется отмена выдачи. Если буфер работает в режиме очереди, то выполняется полная очистка буфера, независимо от значения, переданного в маске.
| base | Базовый адрес контроллера |
| 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_status_t CAN_ClearStatusFlag | ( | CAN_Type * | base, |
| can_flag_t | idx ) |
Сброс флага состояния/прерывания
| base | Базовый адрес контроллера |
| idx | Номер флага состояния/прерывания |
| CAN_Status_Ok | |
| CAN_Status_InvalidArgument |
| void CAN_ClearStatusFlagMask | ( | CAN_Type * | base, |
| uint32_t | mask ) |
Сброс флагов прерываний по маске
| base | Базовый адрес контроллера |
| mask | Маска флагов прерываний, которые необходимо сбросить |
| void CAN_Deinit | ( | CAN_Type * | base | ) |
Деинициализация драйвера CAN.
Функция деинициализирует контроллер CAN.
| base | Базовый адрес контроллера |
| can_status_t CAN_DisableInterrupt | ( | CAN_Type * | base, |
| can_flag_t | idx ) |
Запрет прерывания
| base | Базовый адрес контроллера |
| idx | Номер флага состояния/прерывания |
| CAN_Status_Ok | |
| CAN_Status_InvalidArgument |
| void CAN_DisableInterruptMask | ( | CAN_Type * | base, |
| uint32_t | mask ) |
Запрет прерываний по маске
| base | Базовый адрес контроллера |
| mask | Маска флагов прерываний, которые необходимо запретить |
| can_status_t CAN_EnableInterrupt | ( | CAN_Type * | base, |
| can_flag_t | idx ) |
Разрешение прерывания
| base | Базовый адрес контроллера |
| idx | Номер флага состояния/прерывания |
| CAN_Status_Ok | |
| CAN_Status_InvalidArgument |
| void CAN_EnableInterruptMask | ( | CAN_Type * | base, |
| uint32_t | mask ) |
Разрешение прерываний по маске
| base | Базовый адрес контроллера |
| mask | Маска флагов прерываний, которые необходимо разрешить |
| void CAN_EnterNormalMode | ( | CAN_Type * | base | ) |
Переключение контроллера CAN в рабочий режим
Данную функцию необходимо вызвать после инициализации, чтобы запустить процесс подключения контроллера CAN к шине данных.
| base | Базовый адрес контроллера |
| void CAN_EnterStandbyMode | ( | CAN_Type * | base | ) |
Переключение контроллера CAN в режим ожидания
| base | Базовый адрес контроллера |
| void CAN_GetDefaultConfig | ( | can_config_t * | config, |
| uint32_t | source_clock_hz ) |
Получение параметров драйвера CAN по умолчанию
| config | Структура с параметрами конфигурации |
| source_clock_hz | Опорная частота в Гц |
| uint32_t CAN_GetEnabledInterruptMask | ( | CAN_Type * | base | ) |
Запрос маски разрешенных прерываний CAN.
Запрос маски разрешенных прерываний CAN; единицы в соответствующих разрядах соответствуют включенным прерываниям.
| base | Базовый адрес CAN |
| bool CAN_GetStatusFlag | ( | CAN_Type * | base, |
| can_flag_t | idx, | ||
| can_status_t * | status ) |
Получение состояния флага состояния/прерывания
| base | Базовый адрес контроллера |
| idx | Номер флага состояния/прерывания |
| status | По переданному указателю функция записывает свой статус выполнения. При передаче нулевого указателя запись не производится. |
| true | Состояние активно |
| false | Состояние неактивно |
| uint32_t CAN_GetStatusFlagMask | ( | CAN_Type * | base | ) |
Получение маски активных прерываний
| base | Базовый адрес контроллера |
| can_status_t CAN_Init | ( | CAN_Type * | base, |
| const can_config_t * | config ) |
Инициализация драйвера CAN.
Функция инициализирует модуль CAN в соответствии с заданными пользовательскими параметрами.
| base | Базовый адрес контроллера |
| config | Структура с параметрами конфигурации |
| bool CAN_IsInterruptEnabled | ( | CAN_Type * | base, |
| can_flag_t | idx, | ||
| can_status_t * | status ) |
Запрос - разрешено ли прерывание CAN.
| base | Базовый адрес CAN |
| idx | Номер флага состояния/прерывания |
| status | По переданному указателю функция записывает свой статус выполнения. При передаче нулевого указателя запись не производится. |
| true | Прерывание разрешено |
| false | Прерывание запрещено |
| bool CAN_IsPrimaryTransmitRequestPending | ( | CAN_Type * | base | ) |
Получение признака требования выдачи для высокоприоритетного буфера
Данная функция возвращает состояние флага требования выдачи для высокоприоритетного буфера. Если флаг установлен, то буфер занят.
| base | Базовый адрес контроллера |
| true | Признак выдачи активен (буфер занят) |
| false | Признак сброшен |
| bool CAN_IsRxBufferAlmostFull | ( | CAN_Type * | base | ) |
Получение признака заполнения буфера приема до границы "почти полный".
Данная функция сообщает, заполнен ли буфер приема до состояния "почти полный".
| base | Базовый адрес контроллера |
| true | Буфер заполнен до состояния "почти полный" |
| false | Буфер не заполнен до состояния "почти полный" |
| bool CAN_IsRxBufferEmpty | ( | CAN_Type * | base | ) |
Получение признака опустошения буфера приема
Данная функция сообщает, пуст ли буфер приема.
| base | Базовый адрес контроллера |
| true | Буфер пуст |
| false | В буфере есть кадры |
| bool CAN_IsRxBufferFull | ( | CAN_Type * | base | ) |
Получение признака заполнения буфера приема
Данная функция сообщает, заполнен ли буфер приема.
| base | Базовый адрес контроллера |
| true | Буфер заполнен |
| false | Буфер не заполнен |
| bool CAN_IsSecondaryTransmitRequestPending | ( | CAN_Type * | base | ) |
Получение признака требования выдачи для низкоприоритетного буфера
Данная функция возвращает состояние флага требования выдачи для ячейки низкоприоритетного буфера (при использовании приоритетного порядка выдачи из низкоприоритетного буфера). Если флаг установлен, то ячейка занята.
| base | Базовый адрес контроллера |
| true | Признак выдачи активен (буфер занят) |
| false | Признак сброшен |
| bool CAN_IsSecondaryTxBufferEmpty | ( | CAN_Type * | base | ) |
Получение признака опустошения низкоприоритетного буфера
Данная функция сообщает, пуст ли низкоприоритетный буфер.
| base | Базовый адрес контроллера |
| true | Буфер пуст |
| false | В буфере есть кадры |
| bool CAN_IsSecondaryTxBufferFull | ( | CAN_Type * | base | ) |
Получение признака заполнения низкоприоритетного буфера.
Данная функция сообщает, заполнен ли низкоприоритетный буфер.
| base | Базовый адрес контроллера |
| true | Очередь пуста |
| false | В очереди есть кадры |
| bool CAN_IsSecondaryTxBufferMoreThanHalfFull | ( | CAN_Type * | base | ) |
Получение признака заполнения низкоприоритетного буфера выше середины
Данная функция сообщает, пуст ли низкоприоритетный буфер до уровня более половины всех доступных ячеек.
| base | Базовый адрес контроллера |
| true | Буфер заполнен выше середины |
| false | Буфер заполнен меньше середины |
| can_status_t CAN_ReadRxBuffer | ( | CAN_Type * | base, |
| can_rx_buffer_frame_t * | prxframe ) |
Чтение принятого кадра из приемной очереди
Функция считывает один принятый кадр CAN из приемной очереди. Считанный кадр при этом удаляется из очереди.
| base | Базовый адрес контроллера |
| prxframe | Принятый кадр |
| CAN_Status_Ok | |
| CAN_Status_RxEmpty |
| void CAN_SetArbitrationTimingConfig | ( | CAN_Type * | base, |
| const can_timing_config_t * | config ) |
Установка временных параметров (битовых таймингов) CAN.
| base | Базовый адрес контроллера |
| config | Структура с временными параметрами |
| void CAN_SetFilterConfig | ( | CAN_Type * | base, |
| const can_frame_filter_config_t * | config ) |
Установка параметров фильтрации кадров при приеме
| base | Базовый адрес контроллера |
| config | Структура с параметрами фильтрации кадров |
| void CAN_SetPrimaryTxBufferConfig | ( | CAN_Type * | base, |
| const can_ptb_config_t * | config ) |
Установка параметров высокоприоритетного буфера выдачи
| base | Базовый адрес контроллера |
| config | Структура с параметрами высокоприоритетного буфера выдачи кадров |
| void CAN_SetRxBufferConfig | ( | CAN_Type * | base, |
| const can_rxb_config_t * | config ) |
Установка параметров буфера приема
| base | Базовый адрес контроллера |
| config | Структура с параметрами буфера приема кадров |
| void CAN_SetSecondaryTxBufferConfig | ( | CAN_Type * | base, |
| const can_stb_config_t * | config ) |
Установка параметров низкоприоритетного буфера выдачи
| base | Базовый адрес контроллера |
| config | Структура с параметрами низкоприоритетного буфера выдачи кадров |
| void CAN_SetTTCANConfig | ( | CAN_Type * | base, |
| const ttcan_config_t * | config ) |
Установка параметров работы контроллера в режиме TTCAN.
| base | Базовый адрес контроллера |
| config | Структура с параметрами TTCAN |
| void CAN_TransferAbortReceive | ( | CAN_Type * | base, |
| can_handle_t * | handle ) |
Отмена приема
| base | Базовый адрес контроллера |
| handle | Обработчик |
| void CAN_TransferAbortSendPrimary | ( | CAN_Type * | base, |
| can_handle_t * | handle ) |
Отмена выдачи из высокоприоритетного буфера
| base | Базовый адрес контроллера |
| handle | Обработчик |
| void CAN_TransferAbortSendSecondary | ( | CAN_Type * | base, |
| can_handle_t * | handle ) |
Отмена выдачи из низкоприоритетного буфера
| base | Базовый адрес контроллера |
| handle | Обработчик |
| 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_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_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_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 |
| void CAN_TransferHandleIRQ | ( | CAN_Type * | base, |
| can_handle_t * | handle ) |
Установка обработчика на прерывания от CAN, не связанные с приемом/выдачей
| base | Базовый адрес контроллера |
| handle | Обработчик |
| 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_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_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_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_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_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_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_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 |