Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
PCM5102 pomoc....
#1
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.
Reply
#2
#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);
}
Reply
#3
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.


Attached Files
.jpg   494327579_1021530833500733_2059917347980053670_n.jpg (Size: 167,98 KB / Downloads: 13)
.jpg   494325480_1494348511544872_3028813644963568325_n.jpg (Size: 154,95 KB / Downloads: 12)
Reply
#4
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]


Attached Files
.jpg   2025-05-06_223030.jpg (Size: 27,86 KB / Downloads: 80)
Reply
#5
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!
Reply
#6
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!
Reply
#7
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.
Reply
#8
#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);
}
Reply
#9
(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...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)