Como selecionar e usar um codec de áudio e microcontrolador para arquivos de resposta de áudio embarcado

By Jacob Beningo

Contributed By DigiKey's North American Editors

Há uma demanda crescente entre sistemas embarcados para fornecer áudio de alta-fidelidade em vez de campainhas para experiência do usuário, incluindo alarmes e alertas. Embora bipes e chiados foram efetivos no passado, os usuários desejam sons avançados que podem ser produzidos somente através de áudio em formatos de arquivos como MP3. O problema é que a reprodução de áudio pode parecer intimidante, acrescentar custo extra e complexidade ao sistema. A primeira intuição é encontrar um microcontrolador que possa tocar MP3, mas isto tende a acrescentar vários dólares na lista de materiais (BOM), além de complexidade considerável ao software embarcado.

Uma solução, particularmente boa, para equilibrar o custo extra e a complexidade do software é usar um codec de áudio. Os codecs de áudio não apenas aceitam um fluxo de dados de áudio a partir de um microcontrolador, mas também possuem vários recursos que permitem ao desenvolvedor ajustar o sistema de reprodução de áudio de forma minuciosa, deste modo melhora a qualidade do som tocado pelo sistema.

Este artigo discutirá o papel dos codecs de áudio, as características principais que os desenvolvedores devem considerar ao fazer uma seleção, além de como aplicá-los de forma efetiva. As soluções da AKM Semiconductor, Texas Instruments e Maxim Integrated serão introduzidas e usadas como exemplo aqui, além de outras também disponíveis. E por fim, haverá dicas e truques sobre como acelerar o desenvolvimento de aplicações de reprodução de áudio usando um codec, enquanto reduz o custo do sistema.

O que são codecs de áudio?

Um codec de áudio é um componente de hardware capaz de codificar ou decodificar um fluxo de dados digitais que contem informações de áudio1. Um codec de áudio é útil porque permite que o processamento de áudio seja feito fora do microcontrolador. Isso pode reduzir de forma significativa a complexidade do software, além de permitir reduzir gastos e a capacidade do microcontrolador a ser usado numa aplicação.

Um típico codec de áudio contem vários blocos funcionais:

  • Uma interface I2S para transmitir e receber dados de áudio digital codificado
  • Uma interface I2C para configurar e ler os registradores de controle do codec de áudio
  • Uma entrada de microfone que é conectada ao conversor analógico para digital (ADC)
  • Pelo menos um canal de saída de áudio como um alto-falante, mas em geral que inclua também uma saída de linha, assim como várias saídas de alto-falantes para reprodução estéreo
  • Um bloco digital que contenha filtros passa-alta, passa-baixa, rejeita-faixa e equalizadores para ajustar gravações e reproduções de áudio

Um exemplo de codec de áudio muito popular devido ao baixo custo e capacidades de áudio é o AK4637EN codec de áudio de 24 bits da AKM Semiconductor (figura 1). O AK4637EN possui todos os esses recursos, além de uma entrada geradora de bipes que pode ser usada para bipar por meio de um sinal de modulação por largura de pulso (PWM) numa frequência desejada.

Diagrama do codec de áudio AK4637EN AKM Semiconductor com uma saída mono de alto-falante (clique para ampliar)Figura 1: o AK4637EN é um codec de áudio com uma saída mono de alto-falante que possui capacidade de gravação e reprodução de áudio. Ele contem também um bloco interno de áudio, o qual pode ser usado para filtrar áudios que chegam e saem para melhorar a fidelidade.  (Fonte da imagem: AKM semicondutor)

Os desenvolvedores descobrirão que o principal diferencial de um codec de áudio será se ele reproduz áudio mono ou estéreo, assim como as capacidades do bloco digital. Por exemplo, o AK4637EN oferece um filtro passa-alta, um filtro passa-baixa, um equalizador de quatro bandas, um recurso de ajuste automático do canal e um equalizador de banda única. Esse último pode ser usado como um filtro rejeita-faixa. A forma que um desenvolvedor configura estes filtros digitais pode afetar dramaticamente a forma que o sistema soa.

O codec de áudio pode, algumas vezes, intimidar um desenvolvedor iniciante na reprodução de áudio. Por exemplo, o AK4637EN é um codec de áudio simples, uma rápida olhada na ficha técnica mostra que ele possui 64 registradores configuráveis. Isto pode parecer muito à primeira vista, mas a maioria destes registradores são usados para definir os coeficientes do filtro para os vários filtros digitais que estão disponíveis. Existem apenas alguns que precisam ser usados para obter o áudio produzido pelo sistema de forma apropriada, tornando o desenvolvimento do controlador para um codec de áudio muito mais simples do que um novato poderia imaginar.

Como selecionar um codec de áudio

Um dos requisitos principais para selecionar qualquer coisa em desenvolvimento de produto é o custo, logo os codecs de áudio não são diferentes. Além disso, é importante ter em mente que os desenvolvedores obtém o que pagam, então quando se trata de áudio, uma equipe deve equilibrar com cuidado as exigências do projeto em relação aos parâmetros principais da solução.

A primeira consideração é a saída exigida pelo codec de áudio. Existem várias escolhas diferentes. Por exemplo, o AK4637EN possui uma saída de linha e uma saída mono de alto-falante. Há outros codecs como o da Texas Instruments TLV320AIC3110IRHBR codec de áudio estéreo que pode suprir dois alto-falantes a 1,29 watts (figura 2).

Diagrama do TLV320AIC3110IRHBR TI é um codec de áudio com saída estéreo e amplificação (clique para ampliar)Figura 2: o TLV320AIC3110IRHBR TI é um codec de áudio com saída estéreo e amplificação, além de uma entrada de microfone. O codec pode suprir 1,29 watts dos amplificadores internos e possui blocos programáveis de áudio digital. (Fonte da imagem: Texas Instruments)

Outros codecs de áudio como o da Maxim Integrated MAX9867 são projetados apenas para suprir um par de fones de ouvido (figura 3). O MAX9867 possui as típicas interfaces digitais I2S e I2C, mas também contem entradas de microfone estéreo e duas entradas de linha que podem ser selecionadas digitalmente.

Diagrama do codec de áudio Maxim Integrated MAX9867Figura 3: o codec de áudio Maxim Integrated MAX9867 pode suprir fones de ouvido estéreo e selecionar entre as entradas de linha, microfone e digitais. (Fonte da imagem: Maxim Integrated)

Decidir entre essas três soluções quanto ao tipo de saída (ou entrada) é uma decisão crítica preliminar.

Os desenvolvedores também precisam considerar o que elas alimentarão. O codec de áudio alimentará fones de ouvido, um alto-falante ou um par deles diretamente? Qual será a capacidade de saída? Se o sistema alimentará um alto-falante de 5 watt, não existem muitos codecs para sistemas embarcados que farão isto. Em vez disso, o desenvolvedor pode selecionar a saída de linha e usar um amplificador separado Classe D para suprir o alto-falante diretamente. Isso economiza algum valor, além de também oferecer flexibilidade no projeto.

Duas considerações finais estão relacionadas ao roteamento interno e a capacidade de filtragem digital. Aqui é onde a diferença real e de custos são determinadas por um codec de áudio. Por exemplo, o TLV320AIC311IRHBR possui capacidade de-pop e partida suave para minimizar estalos no alto-falante e permitir uma transição adequada à reprodução de áudio. Ele também possui um mixer interno para cada canal de saída e controle digital de volume.

O desenvolvedor é quem escolha equilibrar com cuidado as necessidades do codec de áudio com a BOM e o espaço disponível da placa que será ocupado pelo circuito.

O sistema de reprodução de áudio

Ao trabalhar com um codec de áudio, é importante perceber que existem vários blocos diferentes além do codec de áudio, os quais são necessários para obter uma reprodução de áudio profissional. Os blocos exatos variam levemente com base na aplicação e os métodos escolhidos para reprodução, mas um diagrama generalizado é mostrado na figura 4.

Diagrama de blocos de conexão generalizado para um sistema de reprodução de áudioFigura 4: um diagrama de blocos de conexão generalizado para um sistema de reprodução de áudio numa típica aplicação embarcada, mostra que há necessidade de armazenamento de arquivos de áudio, os quais podem estar gravados no microcontrolador ou na memória externa. (Fonte da imagem: Beningo Embedded Group)

Há vários pontos neste diagrama que merecem discussão. Primeiro, há necessidade de algum método para armazenar os arquivos de áudio. São duas opções para isso, armazenar os arquivos internamente na memória flash do microcontrolador ou externamente na memória flash. A escolha dependerá do tamanho dos arquivos de áudio, assim como do tamanho da memória flash interna do microcontrolador.

Os desenvolvedores também precisam considerar qual será o formato na reprodução de áudio. O mais comum é usar um MP3. Neste caso, o microcontrolador selecionado precisar ter uma pilha de software que suporte decodificação MP3. Isso permite o arquivo MP3 ser aberto e enviado usando uma saída do controlador de acesso à memória dinâmica (DMA) via a interface I2S. Até a porta I2S pode ser configurada para modo mestre/escravo e vários outros, logo isso precisa ser examinado com cuidado para garantir que os dados sejam transferidos para o codec na taxa certa.

Como mencionado anteriormente, um amplificador de áudio externo pode ser necessário ou não, dependendo da aplicação. Um típico codec gera cerca 1 a 1,5 watts, que é útil para suprir um pequeno alto-falante. Para suprir um alto-falante de 3 watts ou maior, será necessário usar um amplificador externo. De novo, o mais amplamente usado é o Classe D. O amplificador não precisa necessariamente ter ganho variável. O codec de áudio pode ajustar o controle de volume digitalmente, isto fornece uma ampla faixa da potência de saída.

Um assunto esquecido com frequência é a capacitância do material. Quando o áudio está tocando, isto pode exigir bastante das trilhas de alimentação. Se não há capacitância suficiente na placa, a qualidade de saída pode ser afetada dramaticamente, isto pode gerar um som arranhado junto com vários ruídos indesejáveis. Isso pode ser detectado pelo monitoramento cuidadoso das trilhas de alimentação durante o teste. Não é má ideia deixar pegadas extras na placa de circuito impresso durante o desenvolvimento dela, isto permite que diferentes valores de capacitância sejam testados com intuito de ajustar o circuito de saída.

Dicas e truques para selecionar e usar um codec de áudio

Os codecs de áudio podem simplificar dramaticamente o software embarcado e fornecer uma aplicação com ótima qualidade de som. Os codecs de áudio podem ser complicados se um desenvolvedor nunca trabalhou com eles antes. Para aproveitar com sucesso um codec de áudio, existem várias “dicas e truques” que as equipes devem ter em mente como:

  • Usar o recurso do controlador de acesso direto à memória (DMA) dentro de um microcontrolador para suprir o codec de áudio com mínima intervenção da CPU. Isso ajuda a garantir que o codec não esteja “faminto” por dados.
  • Quando o áudio não estiver sendo tocado, use o recurso mudo do codec para evitar que ruído de baixo nível na saída chegue no alto-falante.
  • Ao desabilitar ou habilitar a reprodução, use um recurso mudo suave do codec de áudio para evitar estalos e outros ruídos indesejáveis no alto-falante.
  • Use uma aplicação terminal para dar saída aos registradores do codec após este ser inicializado. Isto pode ser especialmente útil quando tentar depurar problemas ou ajustar o circuito de saída do alto-falante e caixa.
  • Aproveite os mecanismos de filtro digital interno incluído em um codec. Os filtros digitais permitem ao desenvolvedor equalizar a saída, filtrar frequências altas e baixas indesejáveis, além de maximizar a qualidade do sistema de som.
  • Não esqueça que ajustar o som será apenas um esforço útil se a placa de circuito e alto-falante estiverem instalados na caixa, pois a caixa e montagem fazem uma enorme diferença.

Para começar, os desenvolvedores podem experimentar o kit de avaliação MAX9867EVKIT+ do MAX9867 da Maxim Integrated (figura 5).

Imagem do kit de aval. MAX9867EVKIT+ do MAX9867Figura 5: o kit de aval. MAX9867EVKIT+ do MAX9867 conecta a um PC via cabo USB e apresenta entradas RCA, saídas de fone de ouvido e módulos de transmissão e recepção de fibra óptica. (Fonte da imagem: Maxim Integrated)

O kit inclui a placa, software associado e vem configurado para enviar e receber dados de áudio através da interface digital Sony/Philips (S/PDIF), embora possa ser também usado I2S. Ele possui dois jacks de entrada RCA, dois jacks de 3,5 milímetros (mm) para fone de ouvido na saída analógica, além de módulos de transmissão e recepção de fibra óptica. O software é compatível com Windows e ao ser conectado ao PC via cabo USB, abre uma interface gráfica do usuário (GUI) através da qual o desenvolvedor pode experimentar as configurações do MAX9867 (figura 6).

Imagem da GUI baseada em Windows (clique para ampliar)Figura 6: ao usar a GUI baseada em Windows, os usuários podem experimentar uma ampla variedade de configurações do MAX9867, começando com Clock e Áudio Digital (aba selecionada), todo o caminho para os Registradores 1 e Registradores 2 (à direita). (Fonte da imagem: Maxim Integrated)

Conclusão

Os usuários de sistema embarcado se acostumaram com áudio de qualidade e é o esperam a partir de agora, em vez de campainhas e bipes para alarmes, alertas e outras respostas de áudio. Isso coloca o ônus sobre as equipes de desenvolvimento para implementar capacidades de reprodução MP3 nos sistemas. Isso pode parecer um esforço complexo à primeira vista. Contudo, ao usar o codec de áudio junto com um microcontrolador, seguido de algumas boas práticas de projeto, os desenvolvedores podem equilibrar o custo e complexidade associada com aplicações de áudio.

Referências

  1. https://en.wikipedia.org/wiki/Audio_codec
DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

About this author

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo is an embedded software consultant. He has published more than 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer, and holds three degrees, including a Masters of Engineering from the University of Michigan.

About this publisher

DigiKey's North American Editors