Como fazer falar Omega 2 ou a lenda do I2S

Qual o problema do I2S, você diz? Conecte a fiação aos pinos desejados e tudo funciona.

Minicomputador Omega2 Eu também pensava assim, mas com o minicomputador Omega2, acabou não sendo tão simples. Então eu decidi escrever este artigo.

Vamos começar com o que consegui no final. Conectei o chip TDA1543 (DAC I2S estéreo com uma resolução de 16 bits em amplitude) ao microcomputador Omega 2. O som é bom, gosto de ouvir estações de rádio da Internet (deve haver uma piada sobre som audiófilo e de tubo quente). No entanto, ainda não entendi o motivo da sobrecarga do áudio, mas apenas aprendi a ignorá-lo com o método muleta. E eu gostaria muito de ouvir suas idéias sobre esse assunto.

Talvez alguém não saiba o que é o Omega2. Este é o minicomputador no qual o Linux se baseia no LEDE, que é essencialmente uma ramificação do OpenWRT. Processador MT7688, 64 MB de RAM e 16 MB de Flash. Em geral, você pode ler mais na Wikipedia , aqui e aqui .

Também é importante observar que todas as ações são executadas na versão original do firmware 0.2.0

E agora, vamos falar um pouco sobre a dor quando cheguei a isso.
Para começar, tudo é transparente, conectamos todas as linhas do I2S TDA'shki e Omega. Estas são a linha do relógio CLK, a linha de sincronização do canal WS, a linha de dados DATA e o terra GND, respectivamente. Além disso, adicionamos alguns resistores e capacitores, mas o principal é o resistor de sintonia na 7ª perna do TDA1543. Um deslocamento de zero deve ser aplicado a essa perna, e assim adormeci. O fato é que o chip TDA1543, único para sua época, funciona com energia unipolar. Bem, o sinal sonoro é oscilações em relação a 0 para baixo e para cima, então você precisa mudar esse zero para o meio da faixa de tensão de alimentação e obter as oscilações em relação a este ponto. Tudo está escrito na folha de dados, mas inicialmente montei um circuito com um resistor convencional (desses da sua Internet) e recebi distorções que não entendi por muito tempo. Coloque um resistor variável e atinja um viés zero na ausência de um sinal na entrada (modo de espera) 1,3-1,5 V (com fonte de alimentação de 3,3 V). Acontece o seguinte esquema.

Diagrama de conexão do TDA1543 ao Omega2

Além disso, seguindo as etapas do site oficial do onion, somos atualizados para desenvolver a versão do firmware, que adicionou suporte ao I2S (eu queria escrever menos de um ano, mas não ... passou). Atualizamos e instalamos os pacotes necessários para o som:

opkg update opkg install alsa-utils mpg123 

Alterne o GPIO para o modo I2S com o comando:

 omega2-ctrl gpiomux set i2s i2s 

Copiamos o arquivo wav de teste, usei o clássico Suzanne Vega - Tom's Diner. E tente jogar usando o aplay:

 aplay za_sebya_i_za_sashky.wav 

E ouvimos distorção. Apenas muita sobrecarga. Tanto que parece que você estava em 2007. Mas o motivo de choque da música pode ser traçado nela, então algo funciona lá, certo?

Tentei diminuir o volume no mixer alsa - sem sucesso, porque o driver é aguçado pelo chip MAX98090, que é controlado pelo I2C e, portanto, todas as configurações são simplesmente enviadas para o I2C, e os dados do I2S não são alterados.

Ok, abra a folha de dados no MAX98090. E começamos a iluminar. O microcircuito suporta muitos formatos de dados de entrada: I2S / LJ / RJ / TDM e pode digerir muito. E o próprio processador MT7688 também pode ser maior e mais rápido que o TDDA. Talvez problemas de dados no I2S?

Fui mexendo gradualmente no osciloscópio.

Bit 16 bits? Sim Pendurei a linha WS em um canal no outro canal, a linha CLK. E eu estava convencido das medidas de comprimento de pulso WS - 16.

Frequências de operação incorretas? Não. Todas as frequências correspondem aos trabalhadores. WS - 44100 Hz, CLK - 1411200 Hz.

Formatar números de tipo nos dados? O formato correto de caractere é usado (sim, achei que não era necessário assinar). Ele verificou criando senos artificiais e movendo-os para cima e para baixo em relação a 0 em audácia e mudou a amplitude. Não há mudanças qualitativas.
Existe alguma maneira I2S? provavelmente sim. Primeiro, porque então tudo funcionou para mim (bem, ou parece-me assim) e, em segundo lugar, tentei verificar com um osciloscópio, embora sem um analisador lógico isso seja obviamente difícil. Pode valer a pena realizar um teste mais preciso e trazer seu Beaglebone aqui.

Parece que tudo é verdade, e para os caras do fórum da cebola tudo funciona, mas a verdade está em outros chips: MAX98357A e PCM5102. Em geral, desisto da idéia de tocar wav'ki e fazer com que o mpg123 reproduza mp3s. Cortei-o com a bandeira -C e começo a diminuir o volume. E aqui me sentei. Ao definir o nível de volume no programa mpg123 para cerca de 1%, obtém um ótimo som. O chip oscila para a amplitude total. Começo o rádio com o sinalizador -f 128:

 mpg123 -f 128 http://us2.internet-radio.com:8443/ 

E os sons de um relaxante blues americano me conhecem. A propósito, o link para o rádio pode não estar funcionando, tirado daqui .

imagem Eu inicio um sinal de dente de serra e gradualmente aumento a amplitude. Como resultado, vi que distorções são saltos caóticos de 0 à tensão de alimentação e quanto maior o nível, mais esses saltos. Levei várias semanas para fazer o Omega falar. Eu estava muito cansado e, portanto, neste momento decidi parar - funciona!

No entanto, entendo que isso é impossível, por isso ficarei feliz em ouvir suas idéias e sugestões. Bem, para aqueles que estão tentando fazer o ômega falar em agonia, espero ter ajudado você!

Obrigado a todos!

Source: https://habr.com/ru/post/pt413623/


All Articles