Página 1 de 1

STM32F0 - Saída do I2S com "ruido"

MensagemEnviado: 14 Set 2012 10:58
por a.rairan
Senhores,

Depois de muito apanhar do I2S de um STM32F0 consegui tocar o wave! Porém com "ruído"…

O som é simples, um .wav de uns 300K que eu coloquei numa flash AT45xx.
Leio da flash, jogo num buffer que por DMA transfere para o I2S.
A flash consegue atualizar o buffer a tempo e os dados são transmitidos para o I2S.

Mas o som sai no falante como se estivesse com ruído.

Uma coisa que percebí é que a frequencia de saída (WS do I2S) não está exatamente em 48KHz, está em 46,5KHz +/-.
O CLK e o MCLK estão em cima, um com 3MHz e outro com 12MHz.
Essa diferença poderia gerar o ruído?
Não entendi porque a diferença, já que o clock é o mesmo...

Alguém tem alguma idéia do que pode ser? Realmente estou sem idéias…


Abraço,
André Rairan.

Re: STM32F0 - Saída do I2S com "ruido"

MensagemEnviado: 14 Set 2012 19:40
por andre_luis
Cria uma forma de onda padrão de referencia (triangular) pra ver se consegue visualizar no osciloscópio o que está acontecendo.

+++

MensagemEnviado: 16 Set 2012 14:04
por a.rairan
Não entendi xará...

Tenho um bom scope aqui, com analisador lógico e decoder de I2S.
Já liguei o I2S no analisador, mas me parece normal.

Na segunda vou colocar um XTAL externo, to usando o clock interno como base clock, mas medi e está com menos de 1%.

MensagemEnviado: 16 Set 2012 14:11
por pbernardi
É ponto a ponto ou ponto a multipontos? Se o clock de 3 e 12 MHz deveriam ser o mesmos... há coisas bem erradas aí.

Como você mediu esse clock, com osciloscópio ou multímetro?

Desconfie do clock, pode estar dando reflexão.

MensagemEnviado: 16 Set 2012 19:11
por a.rairan
ponto a ponto.

vou reformular:

MCLK = 12MHz, CLK = 12MHz e WS (LRCLK) = 48KHz

Medi com o analisador lógigo do osciloscópio.

MensagemEnviado: 17 Set 2012 11:04
por pbernardi
André, dê uma medida com o osciloscópio mesmo, sem a função do analisador lógico. Pode haver undershoot/overshoots.

Essa linha de clock é muito longa? Ela está casada?

Tente diminuir a frequência do I2C, talvez fique mais estável.