|
ELIOT1 HAL
|
Драйвер последовательной шины для соединения цифровых аудиоустройств Подробнее...
Файлы | |
| файл | hal_i2s.h |
| Интерфейс драйвера модуля I2S. | |
Структуры данных | |
| struct | _i2s_config |
| Структура конфигурации контроллера I2S. Подробнее... | |
| struct | _i2s_transfer |
| Структура для передачи данных I2S в неблокирующем режиме (по прерыванию) Подробнее... | |
| struct | _i2s_handle |
| Структура обработчика драйвера I2S. Подробнее... | |
Макросы | |
| #define | HAL_I2S_DRIVER_VERSION (MAKE_VERSION(0, 1, 0)) |
| Версия драйвера I2S. | |
Определения типов | |
| typedef enum _i2s_status | i2s_status_t |
| Коды возврата функций драйвера I2S. | |
| typedef enum _i2s_flag | i2s_flag_t |
| Флаги прерываний I2S. | |
| typedef enum _i2s_sclk_per_sample | i2s_sclk_per_sample_t |
| Перечисление возможных значений числа синхроимпульсов sclk на левый и правый поток | |
| typedef enum _i2s_sclk_gating | i2s_sclk_gating_t |
| Перечисление возможных значений обрезания числа синхроимпульсов sclk. | |
| typedef enum _i2s_resolution | i2s_resolution_t |
| Разрядность данных I2S. | |
| typedef enum _i2s_interrupt_level | i2s_interrupt_level_t |
| Уровни срабатывания прерывания по опустошению очереди I2S. | |
| typedef struct _i2s_config | i2s_config_t |
| Структура конфигурации контроллера I2S. | |
| typedef struct _i2s_transfer | i2s_transfer_t |
| Структура для передачи данных I2S в неблокирующем режиме (по прерыванию) | |
| typedef struct _i2s_handle | i2s_handle_t |
| Сокращённое название типа для структуры обработчика драйвера I2S. | |
| typedef void(* | i2s_transfer_callback_t) (I2S_Type *base, i2s_handle_t *handle, i2s_flag_t interrupt_flag, void *user_data) |
| Функция обратного вызова I2S. | |
Перечисления | |
| enum | _i2s_status |
| Коды возврата функций драйвера I2S. Подробнее... | |
| enum | _i2s_flag |
| Флаги прерываний I2S. Подробнее... | |
| enum | _i2s_sclk_per_sample |
| Перечисление возможных значений числа синхроимпульсов sclk на левый и правый поток Подробнее... | |
| enum | _i2s_sclk_gating |
| Перечисление возможных значений обрезания числа синхроимпульсов sclk. Подробнее... | |
| enum | _i2s_resolution |
| Разрядность данных I2S. Подробнее... | |
| enum | _i2s_interrupt_level |
| Уровни срабатывания прерывания по опустошению очереди I2S. Подробнее... | |
Инициализация и деинициализация | |
| i2s_status_t | I2S_Init (I2S_Type *base, const i2s_config_t *config, uint32_t source_clock_hz) |
| Инициализация драйвера I2S. | |
| void | I2S_Deinit (I2S_Type *base) |
| Деинициализация драйвера I2S. | |
| void | I2S_GetDefaultConfig (i2s_config_t *config) |
| Получение параметров драйвера I2S по умолчанию | |
Управление прерываниями | |
| static void | I2S_EnableInterrupt (I2S_Type *base, i2s_flag_t idx) |
| Разрешение прерывания | |
| static void | I2S_EnableInterruptMask (I2S_Type *base, uint32_t mask) |
| Разрешение прерываний по маске | |
| static bool | I2S_IsInterruptEnabled (I2S_Type *base, i2s_flag_t idx) |
| Запрос - разрешено ли прерывание I2S. | |
| static uint32_t | I2S_GetEnabledInterruptMask (I2S_Type *base) |
| Запрос маски разрешенных прерываний I2S. | |
| static void | I2S_DisableInterrupt (I2S_Type *base, i2s_flag_t idx) |
| Запрет прерывания | |
| static void | I2S_DisableInterruptMask (I2S_Type *base, uint32_t mask) |
| Запрет прерываний по маске | |
| static bool | I2S_GetInterruptStatus (I2S_Type *base, i2s_flag_t idx) |
| Получение состояния флага прерывания | |
| static uint32_t | I2S_GetInterruptStatusMask (I2S_Type *base) |
| Получение маски активных прерываний | |
| static void | I2S_ClearDataOverrunFlag (I2S_Type *base) |
| Сброс флага переполнения очереди выдачи | |
Прямое управление выдачей | |
| void | I2S_WriteLeftFifo (I2S_Type *base, uint32_t sample) |
| Запись сэмпла в левый канал I2S. | |
| void | I2S_WriteRightFifo (I2S_Type *base, uint32_t sample) |
| Запись сэмпла в правый канал I2S. | |
| static void | I2S_AbortTx (I2S_Type *base) |
| Отмена выдачи по I2S. | |
| static void | I2S_EnableTx (I2S_Type *base) |
| Включение передатчика I2S. | |
| static void | I2S_DisableTx (I2S_Type *base) |
| Выключение передатчика I2S. | |
Неблокирующая выдача по I2S | |
| i2s_status_t | I2S_TransferCreateHandle (I2S_Type *base, i2s_handle_t *handle, i2s_transfer_callback_t callback, void *user_data) |
| Инициализация обработчика событий I2S. | |
| i2s_status_t | I2S_TransferNonBlocking (I2S_Type *base, i2s_handle_t *handle, i2s_transfer_t *xfer) |
| Неблокирующая выдача через высокоприоритетный буфер | |
| void | I2S_TransferAbort (I2S_Type *base, i2s_handle_t *handle) |
| Отмена выдачи из высокоприоритетного буфера | |
| void | I2S_TransferHandleIRQ (I2S_Type *base, i2s_handle_t *handle) |
| Установка обработчика на прерывания от I2S, не связанных с приемом/выдачей | |
Драйвер последовательной шины для соединения цифровых аудиоустройств
Драйвер содержит функции управления контроллером I2S микросхемы ELIOT1. Контроллер интерфейса собран со следующими параметрами:
| typedef enum _i2s_sclk_gating i2s_sclk_gating_t |
Перечисление возможных значений обрезания числа синхроимпульсов sclk.
Если разрешение канала I2S меньше, чем размер слова, то часть импульсов sclk может быть обрезана на выходе с помощью установки значения из этого перечисления в параметре драйвер i2s_config_t::sclk_gating.
| typedef void(* i2s_transfer_callback_t) (I2S_Type *base, i2s_handle_t *handle, i2s_flag_t interrupt_flag, void *user_data) |
Функция обратного вызова I2S.
| base | Базовый адрес контроллера |
| handle | Указатель на обработчик |
| interrupt_flag | Причина вызова |
| user_data | Данные пользователя |
| enum _i2s_flag |
| enum _i2s_interrupt_level |
Уровни срабатывания прерывания по опустошению очереди I2S.
| enum _i2s_resolution |
| enum _i2s_sclk_gating |
Перечисление возможных значений обрезания числа синхроимпульсов sclk.
Если разрешение канала I2S меньше, чем размер слова, то часть импульсов sclk может быть обрезана на выходе с помощью установки значения из этого перечисления в параметре драйвер i2s_config_t::sclk_gating.
| enum _i2s_sclk_per_sample |
| enum _i2s_status |
|
inlinestatic |
Отмена выдачи по I2S.
| base | Базовый адрес контроллера |
|
inlinestatic |
Сброс флага переполнения очереди выдачи
| base | Базовый адрес контроллера |
| void I2S_Deinit | ( | I2S_Type * | base | ) |
Деинициализация драйвера I2S.
Функция деинициализирует контроллер I2S.
| base | Базовый адрес контроллера |
|
inlinestatic |
Запрет прерывания
| base | Базовый адрес контроллера |
| idx | Номер флага состояния/прерывания |
|
inlinestatic |
Запрет прерываний по маске
| base | Базовый адрес контроллера |
| mask | Маска флагов прерываний |
|
inlinestatic |
Выключение передатчика I2S.
| base | I2S Базовый адрес контроллера |
|
inlinestatic |
Разрешение прерывания
| base | Базовый адрес контроллера |
| idx | Номер флага состояния/прерывания |
|
inlinestatic |
Разрешение прерываний по маске
| base | Базовый адрес контроллера |
| mask | Маска флагов прерываний |
|
inlinestatic |
Включение передатчика I2S.
| base | I2S Базовый адрес контроллера |
| void I2S_GetDefaultConfig | ( | i2s_config_t * | config | ) |
Получение параметров драйвера I2S по умолчанию
| config | Структура с параметрами конфигурации |
|
inlinestatic |
Запрос маски разрешенных прерываний I2S.
Запрос маски разрешенных прерываний I2S, единицы в соответствующих разрядах соответствуют включенным прерываниям.
| base | Базовый адрес I2S |
|
inlinestatic |
Получение состояния флага прерывания
| base | Базовый адрес контроллера |
| idx | Номер флага состояния/прерывания |
| true | Флаг прерывания установлен |
| false | Флаг прерывания сброшен |
|
inlinestatic |
Получение маски активных прерываний
| base | Базовый адрес контроллера |
| i2s_status_t I2S_Init | ( | I2S_Type * | base, |
| const i2s_config_t * | config, | ||
| uint32_t | source_clock_hz ) |
Инициализация драйвера I2S.
Функция инициализирует модуль I2S в соответствии с заданными пользовательскими параметрами.
| base | Базовый адрес контроллера |
| config | Структура с параметрами конфигурации |
| source_clock_hz | Опорная частота в Гц |
| I2S_Status_Ok | |
| I2S_Status_UnsupportedBitRate |
|
inlinestatic |
Запрос - разрешено ли прерывание I2S.
| base | Базовый адрес I2S |
| idx | Номер флага состояния/прерывания |
| true | Прерывание разрешено |
| false | Прерывание запрещено |
| void I2S_TransferAbort | ( | I2S_Type * | base, |
| i2s_handle_t * | handle ) |
Отмена выдачи из высокоприоритетного буфера
| base | Базовый адрес контроллера |
| handle | Обработчик |
| i2s_status_t I2S_TransferCreateHandle | ( | I2S_Type * | base, |
| i2s_handle_t * | handle, | ||
| i2s_transfer_callback_t | callback, | ||
| void * | user_data ) |
Инициализация обработчика событий I2S.
| base | Базовый адрес контроллера |
| handle | Обработчик |
| callback | Функция обратного вызова |
| user_data | Данные пользователя |
| I2S_Status_Ok | |
| I2S_Status_Fail |
| void I2S_TransferHandleIRQ | ( | I2S_Type * | base, |
| i2s_handle_t * | handle ) |
Установка обработчика на прерывания от I2S, не связанных с приемом/выдачей
| base | Базовый адрес контроллера |
| handle | Обработчик |
| i2s_status_t I2S_TransferNonBlocking | ( | I2S_Type * | base, |
| i2s_handle_t * | handle, | ||
| i2s_transfer_t * | xfer ) |
Неблокирующая выдача через высокоприоритетный буфер
Функция выдает кадр I2S по прерыванию. Это неблокирующая функция, она возвращает управление сразу. По выдачи кадра в шину вызывает функция обратного вызова.
| base | Базовый адрес контроллера |
| handle | Обработчик |
| xfer | Структура для передачи кадра в неблокирующем режиме |
| I2S_Status_Ok | |
| I2S_Status_Fail | |
| I2S_Status_TxBusy |
| void I2S_WriteLeftFifo | ( | I2S_Type * | base, |
| uint32_t | sample ) |
Запись сэмпла в левый канал I2S.
| base | Базовый адрес контроллера |
| sample | Значение сэмпла |
| void I2S_WriteRightFifo | ( | I2S_Type * | base, |
| uint32_t | sample ) |
Запись сэмпла в правый канал I2S.
| base | Базовый адрес контроллера |
| sample | Значение сэмпла |