T5 3.12.25 i2s使用问题
版本:wukong V3.12.25
平台:T5
硬件:自定义开发板
软件:tuyaos_demo_examples
硬件使用INMP441接开发板i2s0
在tuyaos_demo_examples新增了一个i2s测试的demo,代码如下:
Code: Select all
/**
* @file examples_driver_gpio.c
* @author www.tuya.com
* @brief 一个简单的tkl gpio接口使用演示程序,可以通过命令行执行
* @version 0.1
* @date 2022-05-20
*
* @copyright Copyright (c) tuya.inc 2022
*
*/
#include "tuya_iot_config.h"
#include "tuya_cloud_types.h"
#include "tal_log.h"
#include "tal_thread.h"
#include "tal_system.h"
#include "tkl_gpio.h"
#include "tkl_output.h"
#include <driver/i2s.h>
#include <driver/i2s_types.h>
STATIC THREAD_HANDLE sg_i2s_handle;
static RingBufferContext *m_ringbuffer = NULL;
uint8_t ch1_temp[100] = {0};
static int ch1_rx_data_handle_cb(uint32_t size)
{
//os_printf("%s, size: %d \n", __func__, size);
ring_buffer_read(m_ringbuffer, ch1_temp, size);
TAL_PR_DEBUG("rx ch1_temp[0]: 0x%2x \n", ch1_temp[0]);
return size;
}
/**
* @brief gpio task
*
* @param[in] param:Task parameters
* @return none
*/
STATIC VOID __example_i2s_task(VOID* param)
{
i2s_config_t i2s_config = DEFAULT_I2S_CONFIG();
bk_err_t ret = BK_OK;
uint32_t size = 0;
//init i2s driver
bk_i2s_driver_init();
//init i2s configure
i2s_config.role = I2S_ROLE_MASTER;
i2s_config.samp_rate = I2S_SAMP_RATE_48000;
bk_i2s_init(I2S_GPIO_GROUP_0, &i2s_config);
TAL_PR_DEBUG("init i2s driver and config successful \r\n");
/* 配置第一个通道用于接收数据,每帧数据的size为(640/2)字节 */
ret = bk_i2s_chl_init(I2S_CHANNEL_1, I2S_TXRX_TYPE_RX, 640, ch1_rx_data_handle_cb, &m_ringbuffer);
if (ret != BK_OK) {
TAL_PR_DEBUG("bk_i2s_chl_init fail \n");
return;
}
/* 启动I2S开始接收数据 */
bk_i2s_start();
}
/**
* @brief examples_adc_init_and_read
*
* @return none
*/
VOID example_i2s(INT_T argc, CHAR_T *argv[])
{
OPERATE_RET rt = OPRT_OK;
STATIC THREAD_CFG_T thrd_param = {
.priority = THREAD_PRIO_2,
.stackDepth = 1024,
.thrdname = "i2s"
};
TUYA_CALL_ERR_LOG(tal_thread_create_and_start(&sg_i2s_handle, NULL, NULL, __example_i2s_task, NULL, &thrd_param));
return;
}
烧录执行example_i2s后,打印如下:
[01-01 08:02:58 ty D][7004][tal_thread.c:224] Thread:i2s Exec Start. Set to Running Stat 0x607004d0
apll_clk: 98304000, sample_rate: 48000, smp_ratio: 15
bit_ratio: 32, bit_ratio_b: 0
[01-01 08:02:58 ty D][7004][example_driver_i2s.c:57] init i2s driver and config successful
看起来是初始化成功了,并且用示波器测试clk和DIN都有信号,但是却一直没有执行到ch1_rx_data_handle_cb里面