2026年5月1日金曜日

ESP32S3 - PCM1808 信号入力シリアルプロッタ

下記サイトを参考にしてESP32-S3開発ボードI2Sによる信号発生器 XR2206をPCM1808モジュールADCに信号入力してシリアルプロッタで確認。(PCM5102モジュールは未使用)









シリアルプロッタ























参考サイト



回路図



























ESP32-S3 開発ボード
アマゾン購入
5Vピン → 5V出ない?
(赤い線材)三端子レギュレータから直接5Vを取出しPCM1808のアナログ電圧(5V)に供給。(自己責任で)




PCM1808 - 24ビットADC
アマゾン購入
回路不明
IC周辺にコンデンサー・抵抗がついているので外付け必要ない?

SCK ー MCLK(マスタークロック)
ESP32-S3 IO0(BOOT)ですがTj Labの記事によるとプログラムで変更可能です。







●I2S・24ビット
 FMT - GND

●スレーブ・モード
 MD1 - GND
 MD0 - GND












信号発生器 XR2206
信号発生器 XR2206
・周波数10Hz~1MHz
・サイン波・三角波・方形波
・出力調整(サイン波・三角波)

 
 
 





信号発生器 XR2206出力波形 



ボードマネージャ














追加ボードマネージャーURLを変更
【https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json】
【esp 32】
【バージョン3.2.0】インストール


ライブラリマネージャー








●ESP32-audioI2S-master 
 所定のlibrariesに貼付

【i2s】
【バージョン3.2.1】インストール




プログラム Arduino IDE【ボード:ESP32S3 Dev Module
#include <driver/i2s.h>

#define SAMPLING_RATE 16000
#define BUFFER_SIZE 512
uint8_t sound_buffer[BUFFER_SIZE];

  // I2S 構成パラメータ指定
  i2s_port_t i2s_port = I2S_NUM_0;
  i2s_config_t i2s_config = {
    .mode =  (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX  | I2S_MODE_RX), //I2S作業モード
    .sample_rate = SAMPLING_RATE, //I2Sサンプルレート
    .bits_per_sample = I2S_BITS_PER_SAMPLE_32BIT, //サンプルあたりのI2Sビット
    .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, //I2Sチャネルフォーマット
    .communication_format = I2S_COMM_FORMAT_I2S, //I2S通信フォーマット
    .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1, //割り込みを割り当てるために使用されるフラグ
    .dma_buf_count =6, //I2S DMAバッファ数
    .dma_buf_len = BUFFER_SIZE, //I2S DMAバッファ長
    .use_apll = false, //2SはAPLLをメインI2Sクロックとして使用し、正確なクロックを取得
    .tx_desc_auto_clear   = true,
    .fixed_mclk           = 0,
   
  };
  // I2S ピン番号指定
  i2s_pin_config_t pin_config = {
        .bck_io_num = 42,  //BCK
        .ws_io_num = 2,    //LRC,LCK
        .data_out_num = 41, //DIN
        .data_in_num = 1    //OUT                                                  
    };

void setup() {  
  Serial.begin(115200);
  i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL); //I2S 構成パラメータ指定
  i2s_set_pin(I2S_NUM_0, &pin_config);                 //I2S ピン番号指定  
 
}  

void loop(){
 size_t transBytes;
 
  i2s_read(I2S_NUM_0,(char*)sound_buffer, BUFFER_SIZE, &transBytes, portMAX_DELAY);    
   
     for(int i=0; i<BUFFER_SIZE ; i += 8)
    {
      int32_t* L = (int32_t*)&sound_buffer[i];
      Serial.println(*L);                          //シリアルプロッタL
      //int32_t* R = (int32_t*)&sound_buffer[i+4];
      //Serial.println(*R);
    }    
   
  }  

0 件のコメント:

コメントを投稿

ESP32S3 - PCM1808 > PCM5102 AF信号処理

Tj Lab「ESP32-S3 AF信号処理ボード」 I2Sによる、信号発生ソフトWaveGene→PCM1808モジュール(ADC入力)→PCM5102モジュール(DAC出力)→オシロスコープでL・R波形が再現しました 。 WaveGene信号発生ソフト 同ブログ【 WaveG...