the SPI interface provides an alternative method of communications with the µINS, µAHRS, and µIMU. O protocolo SPI usa muito da mesma estrutura e formato que o protocolo binário de comunicação serial que é delineado na seção de protocolo binário do manual de usuários.

activar o SPI¶

Para activar o SPI, mantenha o pin G9 (nSPI_EN) baixo no arranque.

Nota: Quando o sinal de tempo do GPS externo PPS estiver activo no G9, o módulo irá ignorar o sinal nspi_ en e o modo SPI ficará desactivado, independentemente do Estado do pin do G9.,

Hardware *

interface SPI de Sentido inercial usa 5 linhas para interface com outros dispositivos., id=”c075f8374e”>

Relógio Polaridade Ocioso Alta (CPOL = 1) Fase do Clock Borda de descida (CPHA = 1) Chip Select Baixo Ativo Dados Active High

Transferência de Dados¶

Para garantir o correto comportamento do receptor, a SPI modo Escravo, o mestre dispositivo que envia o quadro deve garantir um mínimo de atraso de um tbit (tbit sendo o tempo nominal necessária para transmitir um bit) entre cada caractere de transmissão., Dispositivos de Sentido inercial não requerem uma borda de queda do para iniciar uma recepção de caráter, mas apenas um nível baixo. No entanto, este nível baixo deve estar presente no mínimo uma tbit antes do primeiro ciclo de clock série correspondente ao bit MSB. (1)

ao ler as células e não houver dados prontos, irá enviar zeros para os dados.manter a CS baixa não deve causar quaisquer problemas. No entanto, se o clocking entre os processadores master e slave ficar fora de sincronia, não há nada para colocá-los de volta em sincronia., O ressalto no solo ou o ruído durante uma transição pode causar que os uINS vejam duas arestas do relógio quando deveria ter havido apenas uma (devido a um ESD ou um evento transiente rápido). Levantar e baixar a linha de CS reinicializa o registo de turnos re-sincroniza os relógios.

Data Ready Pin Option¶

há uma opção de data ready pin. Este sinal será levantado quando os dados estiverem prontos. Dependendo de quando isso acontece, pode haver 1-4 bytes de zeros que sairão antes do pacote começar. Também esta linha irá inativa um byte ou dois antes do fim do pacote ser enviado., Não há um caractere “não em um pacote de dados” para enviar. É estritamente feito por dados pronto pin e análise.se a linha de seleção do chip é baixada durante um pacote de dados, o byte sendo transmitido (ou que seria transmitido) pode ser perdido. Recomenda-se apenas baixar o chip selecione quando fora de um pacote de dados e o pin pronto de dados está inativo.

O tampão SPI interno é de 4096 bytes. Se houver um excesso de buffer, o buffer é largado. Isto é indicado por um PIN de dados pronto que é alto sem que os dados estejam lá., Quando um overflow acontece, ele limpa o buffer, então o sistema pode estar no meio de um pacote e os uINS apenas enviar zeros. Se um pedido é enviado para a uINS ou a uINS envia um pacote periodicamente, ele vai resolver a situação.

a interface SPI suporta até 3 Taxa de dados Mbs. (5 Mbs funciona se o pin pronto de dados é usado para receber os dados-ver B abaixo.)

leitura de dados¶

Existem duas estratégias que podem ser usadas para ler os dados:

A. Leia um tamanho de dados fixo para cada intervalo de tempo definido., Mais dados serão lidos do que o uINx irá produzir em um intervalo regular, por exemplo, lendo 512 bytes a cada 4 ms.

pacote será 0x00 acolchoado se bytes lidos exceder o tamanho do pacote.

B. Leia enquanto o PIN de dados pronto está ativo ou estamos dentro de um pacote de dados. Uma anomalia é que o PIN de dados pronto irá cair um byte ou dois antes que o fim seja cronometrado para fora, portanto necessitando observar para o fim do pacote.

Pseudo-código para leitura de dados:¶

  1. Check data ready pin. Se o pin for baixo, atrase e verifique novamente o pin.,
  2. linha CS inferior e ler um bloco de dados. Os tamanhos de leitura são arbitrários, mas tende a funcionar melhor se a contagem de leitura é longa o suficiente para conter a maioria dos pacotes de dados.
  3. Após a leitura completa, verifique o pin pronto para os dados. Se for alto, leia mais dados. Não elevar a linha CS enquanto o pin pronto de dados é alto, ele vai causar a perda de dados. Se os dados estiverem prontos, subam a linha CS. Em um sistema ocupado (e dependendo da taxa de baud) isso teria que acontecer junto com os dados lidos como o PIN pronto de dados pode não ir baixo entre pacotes.,
  4. processar os dados à procura do início do pacote (0xFF) descartando os dados até serem encontrados. Uma vez encontrado, comece a gravar os dados.
  5. gravar e analisar os dados à procura do fim do pacote (0xFE). Uma vez encontrado enviar pacote fora para uso. Se for visto um início do carácter do pacote ao procurar o fim, elimine os dados anteriores e inicie a gravação do pacote.

EVB-2 O processador EVB-2 ATSAM-E70 (E70) fornece o exemplo de interface SPI com os uINS., O EVB-2 deve ser colocado no modo CBPreset 6 (Config led color cyan) seguido por um sistema reinicializado para activar o modo SPI. O código fonte do projeto EVB-2 (E70) está disponível no SDK para referência.

Troubleshooting¶

Se todos os outros caracteres de um pacote são perdidos, pode ser que a linha CS está a ser comutada após cada byte.

o uINS 3.1 usa um periférico de SPI USART que requer um atraso mínimo de uma tbit (tbit sendo o tempo nominal necessário para transmitir um bit) entre os caracteres enviados. A leitura de bytes uma a uma pode causar atrasos significativos no tempo de transmissão de dados., Dependendo do número de streaming de dados, o uINS pode ser mantido e o buffer pode ser transbordado. Pedidos de mensagem única devem funcionar corretamente, mas streaming provavelmente não vai funcionar bem. Se o hardware mestre não consegue lidar com o atraso, o hardware uINS 3.2 deve ser usado.