2018年4月2日月曜日

M5Stack、ちゃんとPDM音が出ますね

命令を見るとtone系なので「あれ、せっかくのスピーカーなのにビープだけ?」って思ったんですが、回路図を見るとGPIO25がアンプ入力につながってます。

ってことで、下記の通り初期化して

void set_16k_16() {
  i2s_set_pin(I2S_NUM, NULL);
  i2s_config_t i2s_config;
  i2s_config.mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX | I2S_MODE_PDM);       // Only TX
  i2s_config.sample_rate = 16000;
  i2s_config.bits_per_sample = BITS_PER_SAMPLE;
  i2s_config.channel_format = I2S_CHANNEL_FMT_ONLY_RIGHT;                //right channels
  //  i2s_config.channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT;                //right left
  i2s_config.communication_format = I2S_COMM_FORMAT_PCM;
  i2s_config.dma_buf_count = 4;
  i2s_config.dma_buf_len =  1024;
  i2s_config.intr_alloc_flags = ESP_INTR_FLAG_LEVEL1;                    //Interrupt level 1
  i2s_driver_install(I2S_NUM, &i2s_config, 0, NULL);
}

これつかって PCMデータ(符号なし16ビット)を渡すと音声出ますね。

  i2s_write_bytes(I2S_NUM, (const char *)ching, sizeof(ching),   portMAX_DELAY);
  i2s_zero_dma_buffer(I2S_NUM);

0 件のコメント:

コメントを投稿