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

beyound
Posts: 20
Joined: Sat Jan 01, 2022 9:55 am

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

Postby beyound » Wed Jan 05, 2022 7:08 pm

  1. #define I2S_READLEN 200
  2.  
  3.     float i2s_buffer_read[I2S_READLEN];
  4.     float i2s_buffer_write[I2S_READLEN];
  5.     while (true) {
  6.  
  7.         i2s_bytes_read = I2S_READLEN;
  8.         i2s_read(I2S_NUM, i2s_buffer_read, I2S_READLEN, &i2s_bytes_read, 100);
  9.  
  10.         /* left channel filter */
  11.         for (uint32_t i = 0; i < i2s_bytes_read / 2; i += 2)
  12.                 {
  13.                      printf("L: %f\n", i2s_buffer_read[i]);
  14.                 }
  15.         }
上述代码,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

Who is online

Users browsing this forum: No registered users and 34 guests