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

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

Código do transmissor - pt.2

Trocando mensagens com o transceiver

A conversa com o transceiver acontece da seguinte forma: primeiro você tem que informar ao transceiver que você quer se comunicar com ele. Isso é feito colocando a saída conectada no pino CSN do transceiver para um nível lógico 0. Dessa forma o transceiver vai ficar pronto para trocar mensagens pela SPI com o PIC. Essa saída deve ficar nível baixo durante toda a conversa. Se o transceiver perceber que o CSN voltou para um nível alto, mesmo enquanto ele estiver recebendo dados pela SPI, ele vai considerar que a conversa com o PIC terminou e não vai receber mais nada dele até que ele perceba um valor baixo novamente no pino CSN.

Após aplicar 0 no CSN, você vai ter que enviar um comando para o transceiver. O transceiver espera receber alguns comandos específicos e predeterminados. Esses comandos podem indicar, por exemplo, que você quer escrever algum dado em um dos registradores internos do transceiver, ou que você quer dizer ao transceiver qual o pacote que ele deve enviar pela rede sem fio, ou que você quer ler o status atual do transceiver etc. Os comandos são de fato apenas sequências de bits e o formato dessas sequências e o que cada uma delas significa está descrito em detalhes no datasheet do dispositivo. Porém, você não precisa decorar todas as sequências: elas estão todas definidas no arquivo nRF24L01.h que você pode encontrar na pastas do Mestre e do Escravo nessa aula. Logo, você pode acessar esses valores usando apenas o nome do comando, o que é muito mais fácil e menos susceptível a erros.

Alguns dos comandos que você envia para o transceiver exigem que algum dado seja enviado na sequência, ou que você leia um dado do transceiver. Outros não exigem nenhum dado adicional. Se você precisar enviar algum dado na sequência ou ler algum dado do PIC após o comando, lembre-se de manter o CSN em nível baixo até terminar de enviar ou ler por completo os dados. Por fim, retorne o CSN para o nível alto para informar ao transceiver que a conversa terminou.

Dito isso, vamos a um exemplo mais prático. Suponha que você quer informar ao transmissor que os próximos 3 bytes que você deseja enviar têm os valores 10, 15 e 27. O comando usado para informar isso ao transceiver é W_TX_PAYLOAD (que é, de certa forma, intuitivo: W de write, TX significa transmitter e PAYLOAD é a carga de transmissão, ou seja, esse comando pode ser lido como “escrever a carga a ser transmitida”). Assim sendo, um trecho de código que executaria corretamente o comando seria o seguinte:

Observe no código acima aquilo que estávamos discutindo nos parágrafos anteriores: o uso do CSN para indicar a comunicação, o envio do comando W_TX_PAYLOAD, o envio da “carga” a ser transmitida (10, 15 e 27) e, finalizando a conversa, colocando novamente o CSN para o nível alto. Perceba que estamos usando o comando WriteSPI da biblioteca spi.h do C18, que recebe um byte (ou seja, um valor de 0 a 255) como argumento e o transfere pela SPI. O uso dessa função facilita bastante a comunicação com transceiver. Observe que fazemos a comunicação byte a byte, como era de se esperar de uma comunicação SPI.

Versão 5.3 - Todos os Direitos reservados