Page 1 of 1

请问i2s_read返回的内存指针可以是float类型的数组吗?

Posted: Wed Jan 05, 2022 7:08 pm
by beyound

Code: Untitled.cpp Select all


#define I2S_READLEN 200

float i2s_buffer_read[I2S_READLEN];
float i2s_buffer_write[I2S_READLEN];
while (true) {

i2s_bytes_read = I2S_READLEN;
i2s_read(I2S_NUM, i2s_buffer_read, I2S_READLEN, &i2s_bytes_read, 100);

/* left channel filter */
for (uint32_t i = 0; i < i2s_bytes_read / 2; i += 2)
{
printf("L: %f\n", i2s_buffer_read[i]);
}
}
上述代码,printf打印出来的数字经常有nan(aux in输入的音频信号),如果我把float 改成int16_t就没有问题了,但是我后续的数据处理精度需要是float数据类型,谁能给解答一下?i2s_read返回的到底是整形还是浮点数?

打印的内容如下:
  • L: -nan
    L: -nan
    L: -nan
    L: -nan
    L: -nan
    L: -nan
    L: -nan
    L: -nan
    L: 0.000000
    L: 0.000000
    L: -0.000000
    L: 1.965756
    L: 1.960534
    L: 0.000000
    L: -0.000000
    L: 1.965756
    L: 0.000000
    L: 0.000000
    L: -0.000000
    L: 1.965756
    L: 1.960534
    L: 0.753641
    L: -0.000000