From ee92e1a4846660c683a852c4f492909d411ef02d Mon Sep 17 00:00:00 2001 From: Jake Date: Mon, 27 Oct 2025 11:16:54 +0800 Subject: [PATCH] added i2s Device Tree Files and i2s streaming test (esp32->python) --- i2s_streaming_test/esp32_audio.wav | Bin 0 -> 80828 bytes i2s_streaming_test/rk3568-i2s3-m0-inmp441.dts | 53 ++++++++++++++++++ .../rk3568-i2s3-m0-inmp441_dummy.dts | 51 +++++++++++++++++ i2s_streaming_test/serial_sound.py | 46 +++++++++++++++ i2s_streaming_test/stream_i2s.ino | 51 +++++++++++++++++ test.wav | Bin 0 -> 212220 bytes 6 files changed, 201 insertions(+) create mode 100644 i2s_streaming_test/esp32_audio.wav create mode 100644 i2s_streaming_test/rk3568-i2s3-m0-inmp441.dts create mode 100644 i2s_streaming_test/rk3568-i2s3-m0-inmp441_dummy.dts create mode 100644 i2s_streaming_test/serial_sound.py create mode 100644 i2s_streaming_test/stream_i2s.ino create mode 100644 test.wav diff --git a/i2s_streaming_test/esp32_audio.wav b/i2s_streaming_test/esp32_audio.wav new file mode 100644 index 0000000000000000000000000000000000000000..29649b142f2f882fa0212f22d7471cfe5c95f98f GIT binary patch literal 80828 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

a;U3MiVSM?{4P0?M5-_ddHK{ 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%0DdUpM48WwlqxZs0X*;E$fc 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 R29Ctp^B_4A)YyxZ{{cN@Yq$Ua literal 0 HcmV?d00001 diff --git a/i2s_streaming_test/rk3568-i2s3-m0-inmp441.dts b/i2s_streaming_test/rk3568-i2s3-m0-inmp441.dts new file mode 100644 index 0000000..d47f8d5 --- /dev/null +++ b/i2s_streaming_test/rk3568-i2s3-m0-inmp441.dts @@ -0,0 +1,53 @@ +/dts-v1/; +/plugin/; + + / { + metadata { + title = "Enable I2S3-M0 INMP441"; + compatible = "radxa,rock-3c", "radxa,zero3"; + category = "audio"; + description = "Enable INMP441 on I2S3-M0"; + /* Hard-coded GPIO numbers for GPIO3_A3/A4/A5/A6 */ + exclusive = "99", "100", "102", "101", "i2s3_2ch"; + }; +}; + +&{/} { + dummy_codec: dummy-codec { + compatible = "rockchip,dummy-codec"; + #sound-dai-cells = <0>; + }; + + dummy_sound: dummy-sound { + #address-cells = <1>; + #size-cells = <0>; + compatible = "simple-audio-card"; + simple-audio-card,format = "i2s"; + simple-audio-card,bitclock-master = <&i2s3_2ch>; + simple-audio-card,frame-master = <&i2s3_2ch>; + simple-audio-card,mclk-fs = <256>; + simple-audio-card,name = "i2s3-inmp441"; + simple-audio-card,dai-link@0 { + reg = <0>; + format = "i2s"; + cpu { + sound-dai = <&i2s3_2ch>; + }; + codec { + sound-dai = <&dummy_codec>; + }; + }; + }; +}; + +&i2s3_2ch { + pinctrl-0 = <&i2s3m0_sclk + &i2s3m0_lrck + &i2s3m0_sdi + &i2s3m0_sdo>; + status = "okay"; +}; + +&i2c3 { + status = "disabled"; +}; diff --git a/i2s_streaming_test/rk3568-i2s3-m0-inmp441_dummy.dts b/i2s_streaming_test/rk3568-i2s3-m0-inmp441_dummy.dts new file mode 100644 index 0000000..07e3a9c --- /dev/null +++ b/i2s_streaming_test/rk3568-i2s3-m0-inmp441_dummy.dts @@ -0,0 +1,51 @@ +/dts-v1/; +/plugin/; + + / { + metadata { + title = "Enable I2S3-M0 INMP441"; + compatible = "radxa,rock-3c", "radxa,zero3"; + category = "audio"; + description = "Enable INMP441 on I2S3-M0"; + /* Hard-coded GPIO numbers for GPIO3_A3/A4/A5/A6 */ + exclusive = "99", "100", "102", "101", "i2s3_2ch"; + }; +}; + +&{/} { + dummy_codec: dummy-codec { + compatible = "rockchip,dummy-codec"; + #sound-dai-cells = <0>; + }; + + dummy_sound: dummy-sound { + #address-cells = <1>; + #size-cells = <0>; + compatible = "simple-audio-card"; + simple-audio-card,format = "i2s"; + simple-audio-card,mclk-fs = <256>; + simple-audio-card,name = "i2s3-inmp441"; + simple-audio-card,dai-link@0 { + reg = <0>; + format = "i2s"; + cpu { + sound-dai = <&i2s3_2ch>; + }; + codec { + sound-dai = <&dummy_codec>; + }; + }; + }; +}; + +&i2s3_2ch { + pinctrl-0 = <&i2s3m0_sclk + &i2s3m0_lrck + &i2s3m0_sdi + &i2s3m0_sdo>; + status = "okay"; +}; + +&i2c3 { + status = "disabled"; +}; diff --git a/i2s_streaming_test/serial_sound.py b/i2s_streaming_test/serial_sound.py new file mode 100644 index 0000000..72e4e82 --- /dev/null +++ b/i2s_streaming_test/serial_sound.py @@ -0,0 +1,46 @@ +import serial +import wave +import struct + +# === CONFIGURATION === +SERIAL_PORT = 'COM7' # Update this to match your system +BAUD_RATE = 1000000 +SAMPLE_RATE = 8000 +DURATION_SECONDS = 5 +OUTPUT_FILE = 'esp32_audio.wav' + +# === SETUP SERIAL === +ser = serial.Serial(SERIAL_PORT, BAUD_RATE, timeout=0.01) + +# === PREPARE TO CAPTURE === +print(f"Recording {DURATION_SECONDS} seconds of audio...") + +samples = [] +max_samples = SAMPLE_RATE * DURATION_SECONDS +chunk_size = 4096 # bytes + +# === CAPTURE LOOP === +while len(samples) < max_samples: + data = ser.read(chunk_size) + for i in range(0, len(data) - 1, 2): + sample = int.from_bytes(data[i:i+2], byteorder='little', signed=True) + samples.append(sample) + if len(samples) % 1000 == 0: + print(f"{len(samples)} samples captured") + +ser.close() + +# === NORMALIZE AUDIO === +peak = max(abs(s) for s in samples) +scale = 32767 / peak if peak > 0 else 1.0 +normalized = [int(max(-32768, min(32767, s * scale))) for s in samples] + +# === WRITE TO WAV FILE === +with wave.open(OUTPUT_FILE, 'w') as wav: + wav.setnchannels(1) + wav.setsampwidth(2) # 16-bit + wav.setframerate(SAMPLE_RATE) + for sample in normalized: + wav.writeframes(struct.pack(' + +#define I2S_WS 6 // LRCL (Word Select) +#define I2S_SCK 7 // BCLK (Serial Clock) +#define I2S_SD 8 // DOUT (Serial Data from mic) + +#define I2S_PORT I2S_NUM_0 +#define BUFFER_SIZE 2048 // Larger buffer = fewer calls + +void setup() { + Serial.begin(1000000); // High-speed serial for streaming audio + + // I2S configuration + const i2s_config_t i2s_config = { + .mode = i2s_mode_t(I2S_MODE_MASTER | I2S_MODE_RX), + .sample_rate = 8000, + .bits_per_sample = I2S_BITS_PER_SAMPLE_32BIT, + .channel_format = I2S_CHANNEL_FMT_ONLY_LEFT, + .communication_format = I2S_COMM_FORMAT_I2S, + .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1, + .dma_buf_count = 4, + .dma_buf_len = BUFFER_SIZE / 4, + .use_apll = false, + .tx_desc_auto_clear = false, + .fixed_mclk = 0 + }; + + const i2s_pin_config_t pin_config = { + .bck_io_num = I2S_SCK, + .ws_io_num = I2S_WS, + .data_out_num = I2S_PIN_NO_CHANGE, + .data_in_num = I2S_SD + }; + + i2s_driver_install(I2S_PORT, &i2s_config, 0, NULL); + i2s_set_pin(I2S_PORT, &pin_config); +} + +void loop() { + uint8_t buffer[BUFFER_SIZE]; + size_t bytes_read; + + if (i2s_read(I2S_PORT, &buffer, BUFFER_SIZE, &bytes_read, portMAX_DELAY) == ESP_OK && bytes_read > 0) { + for (int i = 0; i < bytes_read; i += 4) { + int32_t sample_32 = *(int32_t*)&buffer[i]; + int16_t sample_16 = sample_32 >> 12; // Less aggressive shift + + Serial.write((uint8_t*)&sample_16, 2); + } + } +} diff --git a/test.wav b/test.wav new file mode 100644 index 0000000000000000000000000000000000000000..bf85b5055e274fc0b74abbd42d7f4c70aadc17ed GIT binary patch literal 212220 zcmeIuu?;|A7zEG{3mCy5B2kcN71R>Z>9i6f8b;4Qh3efkS6ubRq3@r%h`F7*Z9l3q zBC^!0N#l&jql|SqmOFi3AwYlt0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ KfB*pkKL~tU9L$6O literal 0 HcmV?d00001