Arduino-SPI (Português)

Esta biblioteca permite-lhe comunicar com dispositivos SPI, com o Arduino como dispositivo principal.
Para utilizar esta biblioteca
#include <SPI.h>

Uma Breve Introdução sobre o Serial Peripheral Interface (SPI)

Serial Peripheral Interface (SPI) é uma série síncrona de dados de protocolo usado por microcontroladores para a comunicação com um ou mais dispositivos periféricos rapidamente em distâncias curtas. Ele também pode ser usado para a comunicação entre dois microcontroladores.,

com uma conexão SPI há sempre um dispositivo mestre (geralmente um microcontrolador) que controla os dispositivos periféricos., Normalmente, existem três linhas comuns a todos os dispositivos:

  • MISO (Mestrado Em Escravos para Fora) – O servo de linha para o envio de dados para o mestre,
  • MOSI (Mestre Escravo Na) – O Mestre de linha para enviar dados para a periféricos,
  • SCK (Serial Clock) – O relógio de pulsos que sincronizar a transmissão de dados gerado pelo mestre

e uma linha específica para cada dispositivo:

  • SS (Slave Select) – o pino em cada dispositivo que o mestre pode usar para ativar e desativar dispositivos específicos.,

Quando o pin Select de um dispositivo é baixo, ele se comunica com o mestre. Quando está alto, ignora o mestre. Isso permite que você tenha vários dispositivos SPI compartilhando as mesmas linhas MISO, MOSI e CLK.

para escrever código para um novo dispositivo SPI, você precisa de notar algumas coisas:

  • Qual é a velocidade máxima de SPI que o seu dispositivo pode usar? Isto é controlado pelo primeiro parâmetro em SPISettings. Se você estiver usando um chip avaliado em 15 MHz, use 15000000. Arduino irá usar automaticamente a melhor velocidade que é igual ou inferior ao número que você usa com SPISettings.,
  • os dados são deslocados em primeiro lugar no Bit mais significativo (MSB) ou no Bit menos significativo (LSB)? Isto é controlado pelo segundo parâmetro SPISettings, ou MSBFIRST ou LSBFIRST. A maioria dos chips SPI usam MSB primeira ordem de dados.o relógio de dados está inactivo quando alto ou baixo? As amostras estão na borda ascendente ou em queda dos pulsos do relógio? Estes modos são controlados pelo terceiro parâmetro em SPISettings.

a norma SPI está solta e cada dispositivo a implementa de forma um pouco diferente. Isso significa que você tem que prestar especial atenção à ficha de dados do dispositivo ao escrever o seu código., em termos gerais, existem quatro modos de transmissão. Estes modos controlam se os dados são deslocados para dentro e para fora na borda ascendente ou descendente do sinal de clock de dados (chamado de fase de clock), e se O clock é ocioso quando alto ou baixo (chamado de polaridade do clock).,se according to this table:

Mode Clock Polarity (CPOL) Clock Phase (CPHA) Output Edge Data Capture
SPI_MODE0 0 0 Falling Rising
SPI_MODE1 0 1 Rising Falling
SPI_MODE2 1 0 Rising Falling
SPI_MODE3 1 1 Falling Rising

Once you have your SPI parameters, use SPI.,beginTransaction () to begin using the SPI port. A porta SPI será configurada com todas as suas configurações. A maneira mais simples e eficiente de usar SPISettings é diretamente dentro de SPI.beginTransaction ().Por exemplo:

SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0));

Se outras bibliotecas usar a SPI a partir de interrupções, eles serão impedidos de acessar SPI, até que você chame SPI.endTransaction(). A configuração do SPI é aplicada no início da transacção e SPI.endTransaction() não altera a configuração do SPI., A menos que você, ou alguma biblioteca, inicie a transmissão uma segunda vez, a configuração é mantida. Você deve tentar minimizar o tempo entre Antes de chamar SPI.endTransaction(), para melhor compatibilidade se o seu programa for usado em conjunto com outras bibliotecas que usam SPI.

Com mais SPI dispositivos, depois de SPI.beginTransaction(), você irá escrever o escravo selecione fixar na tela de BAIXO, chamada de SPI.transfer() qualquer número de vezes para transferir dados e, em seguida, escrever o SS pinos ALTA, e, finalmente, chamar SPI.endTransaction().

para mais em SPI, veja a página da Wikipédia em SPI.,

Conexões

a tabela A seguir tela em que fixa o SPI linhas são divididas em diferentes placas Arduino:

Note que o MISO, MOSI, e SCK estão disponíveis em uma consistente localização física no cabeçalho ICSP; isto é útil, por exemplo, na criação de um escudo que funciona em cada tábua.

Nota sobre Slave Select (SS) pino AVR placas baseadas no

Todos os AVR baseado placas de ter um SS pin, que é útil quando agem como um escravo controlado por uma força externa, mestre., Uma vez que esta biblioteca suporta apenas o modo mestre, este pin deve ser definido sempre como saída caso contrário, a interface SPI poderia ser colocada automaticamente no modo escravo por hardware, tornando a biblioteca inoperante.

é, no entanto, possível usar qualquer pin Como O Slave Select (SS) para os dispositivos. Por exemplo, o escudo Arduino Ethernet usa o pin 4 para controlar a conexão SPI com o cartão SD de bordo, e o pin 10 para controlar a conexão com o controlador Ethernet.

exemplos

  • Sensor De Pressão Barométrica: ler a pressão do ar e a temperatura de um sensor utilizando o protocolo SPI.,controle Digital de potes: Controle de um potenciômetro digital AD5206 usando o protocolo SPI.

Última Revisão 2019/12/24 por SM

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *