xt-sdk 文档 v1.0.3
xt-sdk 嵌入式 SDK API 参考
载入中...
搜索中...
未找到
xt_hal_i2s.h
浏览该文件的文档.
1
12
13#ifndef __XT_HAL_I2S_H__
14#define __XT_HAL_I2S_H__
15
16/* ==================== [Includes] ========================================== */
17
18#include "xt_hal_internal.h"
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
30
31/* ==================== [Defines] =========================================== */
32
33#define XT_HAL_I2S_INVALID_ID (0xFF)
34
35#define XT_HAL_I2S_PROTOCOL_S (0)
36#define XT_HAL_I2S_PROTOCOL_W (2)
37#define XT_HAL_I2S_DATA_BITS_S (2)
38#define XT_HAL_I2S_DATA_BITS_W (2)
39#define XT_HAL_I2S_CHANNELS_S (4)
40#define XT_HAL_I2S_CHANNELS_W (1)
41#define XT_HAL_I2S_MCLK_S (5)
42#define XT_HAL_I2S_MCLK_W (3)
43
44/* I2S 协议格式 */
45#define XT_HAL_I2S_PROTOCOL_I2S ((0) << XT_HAL_I2S_PROTOCOL_S)
46#define XT_HAL_I2S_PROTOCOL_MSB_JUST ((1) << XT_HAL_I2S_PROTOCOL_S)
47#define XT_HAL_I2S_PROTOCOL_LSB_JUST ((2) << XT_HAL_I2S_PROTOCOL_S)
48#define XT_HAL_I2S_PROTOCOL_PCM ((3) << XT_HAL_I2S_PROTOCOL_S)
49
50/* I2S 数据位宽 */
51#define XT_HAL_I2S_DATA_BITS_8 ((0) << XT_HAL_I2S_DATA_BITS_S)
52#define XT_HAL_I2S_DATA_BITS_16 ((1) << XT_HAL_I2S_DATA_BITS_S)
53#define XT_HAL_I2S_DATA_BITS_24 ((2) << XT_HAL_I2S_DATA_BITS_S)
54#define XT_HAL_I2S_DATA_BITS_32 ((3) << XT_HAL_I2S_DATA_BITS_S)
55
56/* I2S 通道数 */
57#define XT_HAL_I2S_CHANNELS_MONO ((0) << XT_HAL_I2S_CHANNELS_S)
58#define XT_HAL_I2S_CHANNELS_STEREO ((1) << XT_HAL_I2S_CHANNELS_S)
59
60/* I2S MCLK 与采样率之间的倍数 */
61#define XT_HAL_I2S_MCLK_64FS ((0) << XT_HAL_I2S_MCLK_S)
62#define XT_HAL_I2S_MCLK_128FS ((1) << XT_HAL_I2S_MCLK_S)
63#define XT_HAL_I2S_MCLK_256FS ((2) << XT_HAL_I2S_MCLK_S)
64#define XT_HAL_I2S_MCLK_384FS ((3) << XT_HAL_I2S_MCLK_S)
65#define XT_HAL_I2S_MCLK_512FS ((4) << XT_HAL_I2S_MCLK_S)
66
67/* ==================== [Typedefs] ========================================== */
68
69/* I2S 事件类型 */
75
76typedef void (*xt_hal_i2s_cb_t)(uint8_t i2s_id, uint32_t event_id);
77
109 size_t size;
110};
111
112/* ==================== [Global Prototypes] ================================= */
113
128 uint8_t i2s_id, uint32_t mode, uint32_t sample_rate_hz,
129 uint8_t mck_pin, uint8_t sck_pin, uint8_t ws_pin,
130 uint8_t sd_tx_pin, uint8_t sd_rx_pin);
131
139
148
157xt_err_t xt_hal_i2sm_set_rx_buf(uint8_t i2s_id, void *buffer, size_t size);
158
167xt_err_t xt_hal_i2sm_set_tx_buf(uint8_t i2s_id, void *buffer, size_t size);
168
177int32_t xt_hal_i2sm_tx(uint8_t i2s_id, const void *tx_buffer, size_t size);
178
187int32_t xt_hal_i2sm_rx(uint8_t i2s_id, void *rx_buffer, size_t size);
188
198int32_t xt_hal_i2sm_txrx(uint8_t i2s_id,
199 const void *tx_buffer,
200 void *rx_buffer,
201 size_t size);
202
209int32_t xt_hal_i2sm_get_rx_count(uint8_t i2s_id);
210
217int32_t xt_hal_i2sm_get_tx_free(uint8_t i2s_id);
218
227int32_t xt_hal_i2sm_tx_0copy(uint8_t i2s_id, const void *tx_buffer, size_t size);
228
237int32_t xt_hal_i2sm_rx_0copy(uint8_t i2s_id, void *rx_buffer, size_t size);
238
248int32_t xt_hal_i2sm_txrx_0copy(uint8_t i2s_id,
249 const void *tx_buffer,
250 void *rx_buffer,
251 size_t size);
252
264xt_err_t xt_hal_i2sm_tx_continuous(uint8_t i2s_id, const void *tx_buffer, size_t size);
265
277xt_err_t xt_hal_i2sm_rx_continuous(uint8_t i2s_id, void *rx_buffer, size_t size);
278
292 const void *tx_buffer,
293 void *rx_buffer,
294 size_t size);
295
303
313 uint8_t i2s_id, struct xt_hal_i2s_result *result);
314
323int32_t xt_hal_i2sm_tx_block(uint8_t i2s_id, const void *tx_buffer, size_t size);
324
333int32_t xt_hal_i2sm_rx_block(uint8_t i2s_id, void *rx_buffer, size_t size);
334
344int32_t xt_hal_i2sm_txrx_block(uint8_t i2s_id,
345 const void *tx_buffer,
346 void *rx_buffer,
347 size_t size);
348
349/* ==================== [Macros] ============================================ */
350 /* xt_hal_i2s */
352
353#ifdef __cplusplus
354} /* extern "C" */
355#endif
356
357#endif /* __XT_HAL_I2S_H__ */
int32_t xt_err_t
错误码类型
xt_err_t xt_hal_i2sm_setup(uint8_t i2s_id, uint32_t mode, uint32_t sample_rate_hz, uint8_t mck_pin, uint8_t sck_pin, uint8_t ws_pin, uint8_t sd_tx_pin, uint8_t sd_rx_pin)
I2S Master模式初始化
int32_t xt_hal_i2sm_rx_0copy(uint8_t i2s_id, void *rx_buffer, size_t size)
非阻塞接收数据
xt_err_t xt_hal_i2sm_get_result(uint8_t i2s_id, struct xt_hal_i2s_result *result)
获取 I2S 传输结果
int32_t xt_hal_i2sm_txrx_block(uint8_t i2s_id, const void *tx_buffer, void *rx_buffer, size_t size)
阻塞全双工传输
int32_t xt_hal_i2sm_txrx_0copy(uint8_t i2s_id, const void *tx_buffer, void *rx_buffer, size_t size)
非阻塞全双工传输
xt_err_t xt_hal_i2sm_tx_continuous(uint8_t i2s_id, const void *tx_buffer, size_t size)
非阻塞连续发送数据
int32_t xt_hal_i2sm_tx_block(uint8_t i2s_id, const void *tx_buffer, size_t size)
阻塞发送数据
xt_err_t xt_hal_i2s_set_cb(uint8_t i2s_id, xt_hal_i2s_cb_t cb)
设置I2S回调函数
int32_t xt_hal_i2sm_get_rx_count(uint8_t i2s_id)
获取已接收到流缓冲区的采样点个数
int32_t xt_hal_i2sm_tx_0copy(uint8_t i2s_id, const void *tx_buffer, size_t size)
非阻塞发送数据
xt_err_t xt_hal_i2sm_set_tx_buf(uint8_t i2s_id, void *buffer, size_t size)
为流式传输设置发送缓冲区
void(* xt_hal_i2s_cb_t)(uint8_t i2s_id, uint32_t event_id)
xt_err_t xt_hal_i2sm_txrx_continuous(uint8_t i2s_id, const void *tx_buffer, void *rx_buffer, size_t size)
非阻塞连续全双工传输
int32_t xt_hal_i2sm_rx(uint8_t i2s_id, void *rx_buffer, size_t size)
流式非阻塞接收数据
xt_err_t xt_hal_i2sm_close(uint8_t i2s_id)
关闭I2S接口
xt_err_t xt_hal_i2sm_set_rx_buf(uint8_t i2s_id, void *buffer, size_t size)
为流式传输设置接收缓冲区
xt_err_t xt_hal_i2sm_stop_continuous(uint8_t i2s_id)
停止 I2S pingpong 传输
int32_t xt_hal_i2sm_get_tx_free(uint8_t i2s_id)
获取流缓冲区的剩余空闲采样点个数
int32_t xt_hal_i2sm_rx_block(uint8_t i2s_id, void *rx_buffer, size_t size)
阻塞接收数据
xt_hal_i2s_event_id
int32_t xt_hal_i2sm_tx(uint8_t i2s_id, const void *tx_buffer, size_t size)
流式非阻塞发送数据
xt_err_t xt_hal_i2sm_rx_continuous(uint8_t i2s_id, void *rx_buffer, size_t size)
非阻塞连续接收数据
int32_t xt_hal_i2sm_txrx(uint8_t i2s_id, const void *tx_buffer, void *rx_buffer, size_t size)
流式非阻塞全双工传输
@ XT_HAL_I2S_EVENT_ERROR
@ XT_HAL_I2S_EVENT_BATCH_DONE
@ XT_HAL_I2S_EVENT_DONE
I2S 传输结果
XTINY HAL 内部公共头文件