2026年5月1日金曜日

ESP32S3 - PCM1808 > PCM5102 AF信号入出力

 ESP32-S3開発ボード I2Sによる、信号発生ソフトWaveGene→PCM1808モジュール(ADC入力)→PCM5102モジュール(DAC出力)をオシロスコープで測定しました。









WaveGene信号発生ソフト


















Wave1【サイン波】【1000Hz】【-10㏈】【L】
Wave2【矩形波】【1000Hz】【-10㏈】【R】


WaveGenePCM1808入力PCM5102出力→オシロスコープ
















CH1【L】  サイン波
CH2【R】  矩形波


参考サイト

回路図



























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







PCM5102A - 32ビットDAC
アマゾン購入
【SCK】ブリッジ(内部クロック)












【H1L】(FLT)      L側 ブリッジ
【H2L】(DEMP) L側 ブリッジ
【H3L】(XSMT) H側 ブリッジ
【H4L】(FMT)    L側 ブリッジ








PCM1808 - 24ビットADC
アマゾン購入
回路不明
IC周辺にコンデンサー・抵抗がついているので外付け必要ない?
SCK ー MCLK(マスタークロック)プログラムで変更可能








●I2S・24ビット

 FMT - GND

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











ボードマネージャ














追加ボードマネージャー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 adc_buffer[BUFFER_SIZE];
uint8_t dac_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*)adc_buffer, BUFFER_SIZE, &transBytes, portMAX_DELAY);    

  for(int i=0; i<BUFFER_SIZE ; i ++ )
    {
      dac_buffer[i] = adc_buffer[i];      
    }    
  i2s_write(I2S_NUM_0,(char*)dac_buffer, BUFFER_SIZE, &transBytes, portMAX_DELAY);

}
   



0 件のコメント:

コメントを投稿

ESP32S3 - PCM1808 > PCM5102 AF信号処理

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