Os materiais didáticos aqui disponibilizados estão licenciados através de Creative Commons Atribuição-SemDerivações-SemDerivados CC BY-NC-ND. Você possui a permissão para visualizar e compartilhar, desde que atribua os créditos do autor. Não poderá alterá-los e nem utilizá-los para fins comerciais.
Atribuição-SemDerivações-SemDerivados
CC BY-NC-ND
Cursos / Eletrônica / Projeto de Sistemas RF / Aula
Se quiséssemos ler dois dados do transceiver, poderíamos fazer da seguinte forma:
CSN = 0.
WriteSPI(R_RX_PAYLOAD).
dado1 = ReadSPI().
dado2 = ReadSPI().
CSN = 1.
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.
CSN = 0.
WriteSPI(FLUSH_TX).
CSN = 1.
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.
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:
CSN = 0.
WriteSPI(0b00100101).
WriteSPI(15).
CSN = 1.
Onde o “0b” indica que o número é um valor binário.
Versão 5.3 - Todos os Direitos reservados