DIY Electronic projects
PCM5102 pomoc.... - Printable Version

+- DIY Electronic projects (https://forum.yu3ma.net)
+-- Forum: Mikrokontroleri (https://forum.yu3ma.net/forumdisplay.php?fid=52)
+--- Forum: Razvojni sistemi i moduli (https://forum.yu3ma.net/forumdisplay.php?fid=56)
+--- Thread: PCM5102 pomoc.... (/showthread.php?tid=3033)



PCM5102 pomoc.... - Dragan83 - 05-06-2025

E ovako krenuo sam da se igram sa PCM modulom da pravim neki LPF za 6kHz i sad imam problem ceo sklop nece da mi radi a u sklopu imam ESP32 board, PCM5102 I ADS1115, desaava se sledece: kada u ADS udjem sa modulacijom na izlazu PCM modula bih trebao da imam obradjen zvuk da odreze sve preko 6kHz i kada po upustvu udjem u Serial Monitor u Arduino IDE da vidim sta se desava neke brojke se menjaju prilikom modulacije, mene konkretno interesuje dali mogu samo da proverim PCM modul dali je ispravan posto je kupljen kod kineza pa da me on slucajno nezeza uzeo sam neke dve verzije ali ni jedan ne radi odnosno nemam signala na izlazu, naime ja sam probao neki test kod samo za ESP32 i PCM modul koji bi na izlazu trebao da da 1khz signal, dole u postu cu priloziti kod ako neko moze da pogleda dali je taj kod uopste validan da pokrene PCM modul da da signal na izlazu, izvinite ako su informacije oskudne ako treba dopunicu drugim postom.


RE: PCM5102 pomoc.... - Dragan83 - 05-06-2025

#include <driver/i2s.h>
#include <math.h>

#define SAMPLE_RATE 44100
#define I2S_NUM I2S_NUM_0
#define PI 3.14159265

const int amplitude = 3000; // U rasponu -32768 do 32767 (int16_t)
const int frequency = 1000; // 1 kHz
const int samples_per_cycle = SAMPLE_RATE / frequency;

int16_t buffer[samples_per_cycle];

void setupSinusBuffer() {
for (int i = 0; i < samples_per_cycle; i++) {
float theta = ((float)i / samples_per_cycle) * 2.0 * PI;
buffer[i] = (int16_t)(amplitude * sin(theta));
}
}

void setup() {
Serial.begin(115200);
setupSinusBuffer();

const i2s_config_t i2s_config = {
.mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX),
.sample_rate = SAMPLE_RATE,
.bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
.channel_format = I2S_CHANNEL_FMT_ONLY_LEFT,
.communication_format = I2S_COMM_FORMAT_I2S_MSB,
.intr_alloc_flags = 0,
.dma_buf_count = 8,
.dma_buf_len = 64,
.use_apll = false,
.tx_desc_auto_clear = true
};

const i2s_pin_config_t pin_config = {
.bck_io_num = 26,
.ws_io_num = 25,
.data_out_num = 22,
.data_in_num = I2S_PIN_NO_CHANGE
};

i2s_driver_install(I2S_NUM, &i2s_config, 0, NULL);
i2s_set_pin(I2S_NUM, &pin_config);
i2s_zero_dma_buffer(I2S_NUM);
}

void loop() {
size_t bytes_written;
i2s_write(I2S_NUM, buffer, sizeof(buffer), &bytes_written, portMAX_DELAY);
}


RE: PCM5102 pomoc.... - Dragan83 - 05-06-2025

Da napomenem da sam u radu osciloskopom merio signale na sledecim izvodima BCK signal 1.4 MHz ,LRCK signal 44 kHz pravougaoni signal , na DIN imam promenjiv pravougaoni signal u vidu komunikacije sto bi znacilo da ESP komunicira sa PCM modulom al na izlazu PCM modula nema signala.


RE: PCM5102 pomoc.... - savan - 05-06-2025

Trebao bi da pusti nesto na izlazu pod uslovom da si dobro povezao, vidi ovu sliku mozda ti moze pomoci

[Image: attachment.php?aid=45485]


RE: PCM5102 pomoc.... - savan - 05-06-2025

Preporucio bih ti https://deepai.org/chat/free-chatgpt pitaj ga ovako: daj mi predlog kako da povezem esp32 sa pcm5102, hocu da na esp32 posaljem sinusni signal 1KHz preko i2s na pcm5102

Onda ga pitaj: daj mi jedan prograsmki kod za esp32, mozes i tacno koji model je u pitanju da bi dobio sto precizniji odgovor, generalno moras ga pitati i proslediti mu sto vise detalja po jednom pitanju tada ne gresi puno ali hoce da pogresi ali pomogne dosta i dosta stvari ti odradi!


RE: PCM5102 pomoc.... - savan - 05-06-2025

Onda pitaj: dali na DEM pinu treba nesto da uradim?
pa upitaj i za: dali treba nesto da uradim sa FLT pinom?

Dosta stvari objasni bukvalno u detalje. Samo da hoce da gresi hoce, ali opet pomoc je izuzetno dobra!


RE: PCM5102 pomoc.... - Dragan83 - 05-07-2025

Posle duze borbe za gpt-om Smile uspeo sam da dobijem kod koji ce da mi pokrene PCM module da daju sinus na izlazu samim tim sam ustanovio da su mi moduli ispravni a glavni program za LPF 6khz neispravan.


RE: PCM5102 pomoc.... - Dragan83 - 05-07-2025

#include <driver/i2s.h>
#include <math.h>

#define I2S_SAMPLE_RATE 44100
#define I2S_BCK_IO 26
#define I2S_WS_IO 22
#define I2S_DO_IO 25
#define PI 3.14159265

#define SIN_FREQ 1000
#define AMPLITUDE 10000
#define NUM_SAMPLES 44 // 44100 / 1000 = 44.1 ~ 44

int16_t sineWave[NUM_SAMPLES * 2]; // stereo (L + R)

void setupSineWave() {
for (int i = 0; i < NUM_SAMPLES; i++) {
int16_t sample = (int16_t)(AMPLITUDE * sin(2 * PI * i / NUM_SAMPLES));
sineWave[2 * i] = sample; // Left
sineWave[2 * i + 1] = sample; // Right
}
}

void setupI2S() {
const i2s_config_t i2s_config = {
.mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX),
.sample_rate = I2S_SAMPLE_RATE,
.bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
.channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
.communication_format = I2S_COMM_FORMAT_I2S,
.intr_alloc_flags = 0,
.dma_buf_count = 8,
.dma_buf_len = 64,
.use_apll = false,
.tx_desc_auto_clear = true
};

const i2s_pin_config_t pin_config = {
.bck_io_num = I2S_BCK_IO,
.ws_io_num = I2S_WS_IO,
.data_out_num = I2S_DO_IO,
.data_in_num = I2S_PIN_NO_CHANGE
};

i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL);
i2s_set_pin(I2S_NUM_0, &pin_config);
i2s_zero_dma_buffer(I2S_NUM_0);
}

void setup() {
Serial.begin(115200);
setupSineWave();
setupI2S();
}

void loop() {
size_t bytes_written;
i2s_write(I2S_NUM_0, sineWave, sizeof(sineWave), &bytes_written, portMAX_DELAY);
}


RE: PCM5102 pomoc.... - Dragan83 - 05-07-2025

(05-06-2025, 09:45 PM)savan Wrote: Preporucio bih ti https://deepai.org/chat/free-chatgpt pitaj ga ovako: daj mi predlog kako da povezem esp32 sa pcm5102, hocu da na esp32 posaljem sinusni signal 1KHz preko i2s na pcm5102

Onda ga pitaj: daj mi jedan prograsmki kod za esp32, mozes i tacno koji model je u pitanju da bi dobio sto precizniji odgovor, generalno moras ga pitati i proslediti mu sto vise detalja po jednom pitanju tada ne gresi puno ali hoce da pogresi ali pomogne dosta i dosta stvari ti odradi!

(05-06-2025, 09:49 PM)savan Wrote: Onda pitaj: dali na DEM pinu treba nesto da uradim?
pa upitaj i za: dali treba nesto da uradim sa FLT pinom?

Dosta stvari objasni bukvalno u detalje. Samo da hoce da gresi hoce, ali opet pomoc je izuzetno dobra!

Hvala na preporuci...