sábado, 18 de fevereiro de 2017

Teste do módulo sintonizador de rádio FM com o IC RDA5807M.

     Em uma compra da Aliexpress, para aproveitar o frete, mandei vir um módulo de rádio FM baseado no IC RDA5807M. Seu circuito é inacreditavelmente simples, no módulo além do IC propriamente dito há apenas mais dois capacitores e um cristal de 32kHz. Já havia comprado um módulo baseado no IC TDA5767, receptor de rádio FM da NXP, mas nunca consegui fazê-lo funcionar.
        O módulo tem as seguintes características:
Duas bandas de frequência;
Saída de áudio Mono ou Stereo com potência suficiente para acionar um fone de ouvido;
Indicador de força do sinal ( RSSI );
Controle de volume;
Comunicação I²C;
Tensão de alimentação de 1,8V a 3,3V;

Pinagem do módulo.
Módulo montado em uma placa com os headers para o barramento I²C e alimentação à direita e saída de áudio à esquerda. O fio branco é um cabo coaxial que serve como antena.
Firmware que lista todos os endereços I²C: 0x78 é do controlador do display OLED SSD1308 e 0x20 é do RDA5807M, não descobri porque é listado os endereços 0x22 e 0xC0.

Inicialização:

        O RDA5807M possui vários registros de 16 bits. Para iniciá-lo, usei somente os registros 0x02 a 0x05 que são escritos enviando primeiro a parte alta e em seguida a baixa. Estes registros são enviados nesta ordem e em sequência:

Mapa de bits dos  registros 0x02 a 0x05.

RDA5807 REGISTER 0x02 HIGH
Valor: 0xD0

RDA5807 REGISTER 0x02 LOW
Valor: 0x0D

RDA5807 REGISTER 0x03 HIGH
Valor: 0x00
    BAND = 2 (76~108 MHz, world wide)
    Channel Spacing = 100kHz, sendo a frequência de sintonização = (Channel Spacing x Channel_Select + 76000)/1000, que neste caso é 76,0MHz

RDA5807 REGISTER 0x03 LOW
Valor: 0x18

RDA5807 REGISTER 0x04 HIGH
Valor: 0x00

RDA5807 REGISTER 0x04 LOW
Valor: 0x00

RDA5807 REGISTER 0x05 HIGH
Valor: 0x88

RDA5807 REGISTER 0x05 LOW
Valor: 0xA4
Volume = 4 (0 a 15).
Os bits 7 e 5 são reservados mas se não tiverem setados a recepção não funciona, ainda bem que peguei estes valores em um fórum do Arduino, nunca iria descobrir.

Operação:

        Para ler status e valores de operação, mando o firmaware ler os registros 0x0A e 0x0B, que também são lidos nesta ordem e em sequência. Após a leitura, trato os valores para serem mostrados do display.

Mapa de bits dos registros 0x0A e 0x0B.
Status e valores do RDA5807M: Bargraph é do RSSI (nível de recepção), modo da saída de áudio (mono ou stereo), status da sintonia (Tuned ou Seeking), frequência de sintonização, volume da saída de áudio (0 a 15) e os oito zeros são os RDS blocks (Informações de texto transmitidas pela estação FM que ainda não descobri como funciona).

RDA5807M procurando uma estação. Usei o modo de banda que abrange de 76 até 108MHz (world wide). Aqui no Brasil é usado de 88 até 108MHz (100 canais), porém com a migração de estações AM para FM e com o fim de canais de TV analógicos, esta faixa deve aumentar.

        Enviando o comando para procurar estações de rádio acima da frequência atual:
Seta bit SEEKUP de RDA5807 REGISTER 0x02 HIGH (1 = SEEK UP)
Reseta bit TUNE de RDA5807 REGISTER 0x03 LOW (0 = DISABLE TUNE)
Seta bit SEEK de RDA5807 REGISTER 0x02 HIGH (1 = ENABLE SEEK)
Escreve os registros 0x02 a 0x05 novamente

        Enviando o comando para procurar estações de rádio abaixo da frequência atual:
Reseta bit SEEKUP de RDA5807 REGISTER 0x02 HIGH (0 = SEEK DOWN)
Reseta bit TUNE de RDA5807 REGISTER 0x03 LOW (0 = DISABLE TUNE)
Seta bit SEEK de RDA5807 REGISTER 0x02 HIGH (1 = ENABLE SEEK)
Escreve os registros 0x02 a 0x05 novamente

Um comentário:

  1. Boa Noite. Você poderia me enviar o seu codigo de acesso as funções do modulo, pois também adquiri essa placa mas não consigo sintonizar nenhuma estação.
    consigo até alterar volume, mas a estação não sintoniza. Estou pensando em até comprar o TEA5767 e tentar com ele.
    Caso afirmativo meu email é: valmir.menegaz@gmail.com
    Um Abraço.

    ResponderExcluir