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.
PCM5102 pomoc....
|
#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); }
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.
05-06-2025, 09:31 PM
Trebao bi da pusti nesto na izlazu pod uslovom da si dobro povezao, vidi ovu sliku mozda ti moze pomoci
05-06-2025, 09:45 PM
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!
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!
05-07-2025, 07:01 PM
Posle duze borbe za gpt-om
![]()
05-07-2025, 07:02 PM
#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); }
05-07-2025, 07:36 PM
(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 (05-06-2025, 09:49 PM)savan Wrote: Onda pitaj: dali na DEM pinu treba nesto da uradim? Hvala na preporuci... |
« Next Oldest | Next Newest »
|
Users browsing this thread: 3 Guest(s)