5 LUAT_I2S_MODE_MASTER
= 0, // 主机模式
6 LUAT_I2S_MODE_SLAVE
, // 从机模式
8 LUAT_I2S_MODE_I2S
= 0, // I2S 标准
9 LUAT_I2S_MODE_LSB
, // LSB 标准
10 LUAT_I2S_MODE_MSB
, // MSB 标准
11 LUAT_I2S_MODE_PCMS
, // PCM 短帧标准
12 LUAT_I2S_MODE_PCML
, // PCM 长帧标准
14 LUAT_I2S_CHANNEL_LEFT
= 0, // 左声道
15 LUAT_I2S_CHANNEL_RIGHT
, // 右声道
16 LUAT_I2S_CHANNEL_STEREO
, // 立体声
18 LUAT_I2S_BITS_16
= 16, // 16位数据
19 LUAT_I2S_BITS_24
= 24, // 24位数据
20 LUAT_I2S_BITS_32
= 32, // 32位数据
22 LUAT_I2S_HZ_8k
= 8000, // i2s 8kHz采样率
23 LUAT_I2S_HZ_11k
= 11000, // i2s 11kHz采样率
24 LUAT_I2S_HZ_16k
= 16000, // i2s 16kHz采样率
25 LUAT_I2S_HZ_22k
= 22050, // i2s 22.05kHz采样率
26 LUAT_I2S_HZ_32k
= 32000, // i2s 32kHz采样率
27 LUAT_I2S_HZ_44k
= 44100, // i2s 44.1kHz采样率
28 LUAT_I2S_HZ_48k
= 48000, // i2s 48kHz采样率
29 LUAT_I2S_HZ_96k
= 96000, // i2s 96kHz采样率
31 LUAT_I2S_STATE_STOP
= 0, // i2s停止状态
32 LUAT_I2S_STATE_RUNING
, // i2s传输状态
36 LUAT_I2S_EVENT_TX_DONE
,
37 LUAT_I2S_EVENT_TX_ERR
,
38 LUAT_I2S_EVENT_RX_DONE
,
39 LUAT_I2S_EVENT_RX_ERR
,
40 LUAT_I2S_EVENT_TRANSFER_DONE
,
41 LUAT_I2S_EVENT_TRANSFER_ERR
,
44 typedef struct luat_i2s_conf
{
46 uint8_t mode
; // i2s模式
47 uint8_t standard
; // i2s数据标准
48 uint8_t channel_format
; // i2s声道格式
49 uint8_t data_bits
; // i2s有效数据位数
50 uint8_t channel_bits
; // i2s通道数据位数
51 volatile uint8_t state
; // i2s状态
52 uint8_t is_full_duplex
; // 是否全双工
53 uint32_t sample_rate
; // i2s采样率
54 uint32_t cb_rx_len
; // 接收触发回调数据长度
55 int (*luat_i2s_event_callback
)(uint8_t id
,luat_i2s_event_t event
, uint8_t *rx_data
, uint32_t rx_len
, void *param
); // i2s回调函数
56 void *userdata
; // 用户数据
60 int luat_i2s_setup(const luat_i2s_conf_t
*conf
); // 初始化i2s
61 int luat_i2s_modify(uint8_t id
,uint8_t channel_format
,uint8_t data_bits
,uint32_t sample_rate
); // 修改i2s配置(不会进行初始化操作,动态修改配置)
63 int luat_i2s_send(uint8_t id
, uint8_t* buff
, size_t len
); // i2s发送数据
64 int luat_i2s_recv(uint8_t id
, uint8_t* buff
, size_t len
); // i2s接收数据
65 int luat_i2s_transfer(uint8_t id
, uint8_t* txbuff
, size_t len
); // i2s传输数据(全双工)
66 int luat_i2s_transfer_loop(uint8_t id
, uint8_t* buff
, uint32_t one_truck_byte_len
, uint32_t total_trunk_cnt
, uint8_t need_callback
); // i2s循环传输数据(全双工)
68 int luat_i2s_pause(uint8_t id
); // i2s传输暂停
69 int luat_i2s_resume(uint8_t id
); // i2s传输恢复
70 int luat_i2s_close(uint8_t id
); // i2s关闭
73 luat_i2s_conf_t
*luat_i2s_get_config(uint8_t id
);
75 int luat_i2s_txbuff_info(uint8_t id
, size_t *buffsize
, size_t* remain
);
76 int luat_i2s_rxbuff_info(uint8_t id
, size_t *buffsize
, size_t* remain
);
78 int luat_i2s_set_user_data(uint8_t id
, void *user_data
);