Cursos / Eletrônica / Projeto de Sistemas RF / Aula

arrow_back Aula 10 - Transmissão de dados utilizando transceptor SPI

Código do transmissor - pt.3

Se quiséssemos ler dois dados do transceiver, poderíamos fazer da seguinte forma:

Perceba que aqui o comando é R_RX_PAYLOAD (R de read e RX indicando receptor, ou seja, “ler a carga recebida”), e estamos usando a função ReadSPI da bibliteca spi.h. O primeiro dado lido está sendo colocado na variável dado1 e o segundo dado na variável dado2. Se o comando não exigir uma escrita ou leitura adicional, como o comando FLUSH_TX, nós podemos enviar somente ele, como mostrado no código abaixo.

Na prática desta aula, vamos precisar manter os seguintes tipos de comunicação com o transceiver: escrever e ler um dado em um registrador do transceiver; ler um dado recebido e escrever um dado a ser transmitido; limpar o buffer de transmissão e de recepção.

  • Escrever e ler um dado em um registrador

O transceiver contém alguns registradores que definem o seu funcionamento. A configuração inicial dele que é feita na função UserInit significa, basicamente, setar os valores dos bits desses registradores para os valores corretos que fazem com que ele funcione da forma que queremos.

O comando de escrita é W_REGISTER e o de leitura é R_REGISTER, mas eles não funcionam se enviados sozinhos: você precisa informar qual é o endereço do registrador que você quer ler ou escrever. A diferença é que não informamos o endereço em um byte separado, e sim dentro do próprio byte de comando!

Parece complicado, mas, na verdade, não é. Os comandos W_REGISTER e R_REGISTER são formados por 1 Byte, porém somente os 3 bits mais significativos que definem o comando. Os 5 menos significativos são variáveis e definem o endereço do registrador. Por exemplo, W_REGISTER tem o valor binário “001AAAAA” onde somente “001” define o comando de escrita, e “AAAAA” é o endereço do registrador. Se você quisesse escrever o valor 15 no registrador RF_CH cujo endereço é “00101” em binário, o comando de “escrever no registrador 00101” ficaria:

Onde o “0b” indica que o número é um valor binário.

Versão 5.3 - Todos os Direitos reservados