nRF Connect SDK API 3.3.99
Loading...
Searching...
No Matches
audio_i2s.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2021, PACKETCRAFT, INC.
3 *
4 * SPDX-License-Identifier: LicenseRef-PCFT
5 */
6
16#ifndef _AUDIO_I2S_H_
17#define _AUDIO_I2S_H_
18
19#include <zephyr/kernel.h>
20#include <stdint.h>
21
29#if ((CONFIG_AUDIO_FRAME_DURATION_US == 7500) && CONFIG_SW_CODEC_LC3)
30
31#define FRAME_SIZE_BYTES \
32 ((CONFIG_I2S_LRCK_FREQ_HZ / 1000 * 15 / 2) * CONFIG_I2S_CH_NUM * \
33 CONFIG_AUDIO_BIT_DEPTH_OCTETS)
34#else
35#define FRAME_SIZE_BYTES \
36 ((CONFIG_I2S_LRCK_FREQ_HZ / 1000 * 10) * CONFIG_I2S_CH_NUM * CONFIG_AUDIO_BIT_DEPTH_OCTETS)
37#endif /* ((CONFIG_AUDIO_FRAME_DURATION_US == 7500) && CONFIG_SW_CODEC_LC3) */
38
39#define FRAME_SIZE_MONO_BYTES (FRAME_SIZE_BYTES / CONFIG_I2S_CH_NUM)
40#define BLOCK_SIZE_BYTES (FRAME_SIZE_BYTES / CONFIG_FIFO_FRAME_SPLIT_NUM)
41
50#define I2S_SAMPLES_NUM \
51 (BLOCK_SIZE_BYTES / (CONFIG_AUDIO_BIT_DEPTH_OCTETS) / (32 / CONFIG_AUDIO_BIT_DEPTH_BITS))
52
60typedef void (*i2s_blk_comp_callback_t)(uint32_t frame_start_ts, uint32_t *rx_buf_released,
61 uint32_t const *tx_buf_released);
62
69void audio_i2s_set_next_buf(const uint8_t *tx_buf, uint32_t *rx_buf);
70
77void audio_i2s_start(const uint8_t *tx_buf, uint32_t *rx_buf);
78
82void audio_i2s_stop(void);
83
90
94void audio_i2s_init(void);
95
100#endif /* _AUDIO_I2S_H_ */
void audio_i2s_blk_comp_cb_register(i2s_blk_comp_callback_t blk_comp_callback)
Register callback function for I2S block complete event.
void audio_i2s_init(void)
Initialize I2S module.
void audio_i2s_set_next_buf(const uint8_t *tx_buf, uint32_t *rx_buf)
Supply the buffers to be used in the next part of the I2S transfer.
void audio_i2s_start(const uint8_t *tx_buf, uint32_t *rx_buf)
Start the continuous I2S transfer.
void audio_i2s_stop(void)
Stop the continuous I2S transfer.
void(* i2s_blk_comp_callback_t)(uint32_t frame_start_ts, uint32_t *rx_buf_released, uint32_t const *tx_buf_released)
I2S block complete event callback type.
Definition audio_i2s.h:60