命令を見ると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 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。