T5支持I2S的接口,芯片本身是支持的,但是涂鸦层未能适配。可以适配吗?
从芯片规格书上看是支持I2S接口,但是涂鸦适配层没有适配,我们需要使用这个I2S接口, 预计什么时候适配?
T5支持I2S的接口,芯片本身是支持的,但是涂鸦层未能适配。可以实现吗?
T5支持I2S的接口,芯片本身是支持的,但是涂鸦层未能适配。可以实现吗?
-
- Posts: 7
Re: T5支持I2S的接口,芯片本身是支持的,但是涂鸦层未能适配。可以实现吗?
请将代码放至tkl驱动适配层vendor/T5/tuyaos/tuyaos_adapter/src/driver/tkl_i2s.c vendor/T5/tuyaos/tuyaos_adapter/include/i2s/tkl_i2s.h下进行使用,并修改vendor/T5/tuyaos/tuyaos_adapter/CMakeLists.txt文件,如附图17531772406217.png、17531772232866.png所示
添加对应文件编译路径
-
- Posts: 7
Re: T5支持I2S的接口,芯片本身是支持的,但是涂鸦层未能适配。可以实现吗?
若以上代码无法正常工作,请合入附件patch再次尝试
- Attachments
-
- 0001-i2s.zip
- (4.7 KiB) Downloaded 23 times
Re: T5支持I2S的接口,芯片本身是支持的,但是涂鸦层未能适配。可以实现吗?
在SDK(3.12.14)找不到相关demo,能发一个简单的测试demo源码吗
-
- Posts: 7
Re: T5支持I2S的接口,芯片本身是支持的,但是涂鸦层未能适配。可以实现吗?
可以参考附件中的代码使用,该demo将采集到的数据通过喇叭播放
- Attachments
-
- test_i2s.c
- (298.17 KiB) Downloaded 7 times
Re: T5支持I2S的接口,芯片本身是支持的,但是涂鸦层未能适配。可以实现吗?
想使用T5驱动inmp441,实测编译不通过,麻烦查看一下是什么问题
Code: Select all
#define TEST_AUDIO_SAMPLE_RATE 16000
#define TEST_AUDIO_SAMPLE_BITS 24
// #define TEST_AUDIO_DATA_LEN_PER_SECOND (TEST_AUDIO_SAMPLE_RATE * TEST_AUDIO_SAMPLE_BITS * 4 / 8 / 50)
#define TEST_AUDIO_DATA_LEN_PER_CHUNK ((TEST_AUDIO_SAMPLE_RATE * 3 * 1 * 0.04))
static void drv_i2s_init(void)
{
int ret = 0;
TUYA_I2S_BASE_CFG_T i2s_cfg;
i2s_cfg.mode = TUYA_I2S_MODE_MASTER | TUYA_I2S_MODE_RX;
i2s_cfg.communication_format = I2S_COMM_FORMAT_STAND_I2S;
i2s_cfg.channel_format = TUYA_I2S_CHANNEL_FMT_RIGHT_LEFT;
i2s_cfg.bits_per_sample = TUYA_I2S_BITS_PER_SAMPLE_24BIT;
i2s_cfg.mclk = 0;
i2s_cfg.sample_rate = TEST_AUDIO_SAMPLE_RATE;
i2s_cfg.i2s_dma_flags = 1;
uint8_t *buffer = tkl_system_psram_malloc(TEST_AUDIO_DATA_LEN_PER_CHUNK);
if (buffer == NULL)
{
bk_printf("spk buffer malloc failed\r\n");
return;
}
ret = tkl_i2s_init(TUYA_I2S_NUM_0, &i2s_cfg);
if (OPRT_OK != ret)
{
bk_printf("i2s_init fail %d\r\n", __LINE__);
return;
}
while (1)
{
ret = tkl_i2s_recv(TUYA_I2S_NUM_0, buffer, TEST_AUDIO_DATA_LEN_PER_CHUNK);
if (ret < 0)
{
bk_printf("i2s_recv fail %d\r\n", __LINE__);
return;
}
}
}
- Attachments
-
-
- Posts: 7
Re: T5支持I2S的接口,芯片本身是支持的,但是涂鸦层未能适配。可以实现吗?
1.请问是否合入0001-i2s.zip中的patch后clean再编译?
2.需要在config文件中打开i2s宏,CONFIG_I2S=y
3.tkl_system.c中新增以下函数实现
/**
- @brief system enter critical
* - @return irq status
*/
UINT_T tkl_system_enter_critical(VOID_T)
{
return rtos_disable_int();
}
/**
- @brief system exit critical
* - @param[in] irq_mask: irq mask
- @return none
*/
VOID_T tkl_system_exit_critical(UINT_T irq_mask)
{
rtos_enable_int(irq_mask);
}
Re: T5支持I2S的接口,芯片本身是支持的,但是涂鸦层未能适配。可以实现吗?
1:0001-i2s.zip里边的patch要怎么合入?
2:config文件指的是哪个配置文件,在什么路径?
3:kl_system.c在什么路径,对应的.h文件要不要修改?
最好能截个图说明一下
-
- Posts: 7
Re: T5支持I2S的接口,芯片本身是支持的,但是涂鸦层未能适配。可以实现吗?
您好,请替换掉附件中最新tkl_i2s相关文件
software/TuyaOS/vendor/T5/tuyaos/tuyaos_adapter/src中存放tkl_i2s.c
software/TuyaOS/vendor/T5/tuyaos/tuyaos_adapter/include/i2s存放tkl_i2s.h,若无此文件夹请创建
确认software/TuyaOS/vendor/T5/t5_os/bk_idk/middleware/soc/bk7258_cp1/hal/i2s_hal.c、
software/TuyaOS/vendor/T5/t5_os/bk_idk/middleware/soc/bk7258/hal/i2s_hal.c 文件中对应代码是否如附图i2s_hal.c.png所示
config路径位于software/TuyaOS/vendor/T5/t5_os/projects/tuya_app/config/bk7258/config 、software/TuyaOS/vendor/T5/t5_os/projects/tuya_app/config/bk7258_cp1/config 两个路径中文件均需修改
Re: T5支持I2S的接口,芯片本身是支持的,但是涂鸦层未能适配。可以实现吗?
你们有实际测试过的吗?实际测试编译sdk都有问题!!
第一步:把最新的文件放到指定位置
vendor/T5/tuyaos/tuyaos_adapter/src/driver/tkl_i2s.c
vendor/T5/tuyaos/tuyaos_adapter/include/i2s/tkl_i2s.h
第二步:修改脚本
在$ENV{ARMINO_PATH}/../../tuyaos/tuyaos_adapter/include/i2c下一行添加$ENV{ARMINO_PATH}/../../tuyaos/tuyaos_adapter/include/i2s
在src/driver/tkl_i2c.c下一行添加src/driver/tkl_i2s.c
第三步:
在TuyaOS/vendor/T5/t5_os/projects/tuya_app/config/bk7258/config修改CONFIG_I2S=y
在TuyaOS/vendor/T5/t5_os/projects/tuya_app/config/bk7258_cp1/config修改CONFIG_I2S=y
第四步:
在TuyaOS/vendor/T5/t5_os/bk_idk/middleware/soc/bk7258/hal/i2s_hal.c修改i2s_ll_set_pcm_cfg_datalen(config->data_length - 1, i2s_cfg_index);
在vendor/T5/t5_os/bk_idk/middleware/soc/bk7258_cp1/hal/i2s_hal.c修改i2s_ll_set_pcm_cfg_datalen(config->data_length - 1, i2s_cfg_index);
应用层保持创建工程时候的源码
最后编译不过!!
- Attachments
-