Pergunta

Eu estou começando a tentar interagir com alguns componentes externos (SkyeTek M1 Mini ou scanner RFID M1) que suporta os seguintes protocolos de TTL, SPI ou I2C. Eu estou querendo saber qual dessas rotas que você recomendaria. O aplicativo que está sendo executado nas necessidades local um monte de tempo de processamento (um algoritmo gesto correspondente execução contínua) e é bastante recurso caro.

Todos os links ou fontes sobre o assunto seria muito apreciada.

Links úteis que eu encontrei:

TTL:

Obrigado por sua ajuda.


Editar:

Se isso ajuda o dispositivo que estou tentando fazer a interface com o SkyeTek M1 e M1 mini-. A plataforma / CPU é o Sol Sunspot .

Foi útil?

Solução

Por TTL que você quer dizer UART (onde um periférico recebe / envia um fluxo de série automaticamente) ou bitbanging (onde você definir manualmente / reset / alternância bits)?

Eu provavelmente recomendar SPI. É um protocolo relativamente fácil, e no lado do mestre, se você tem que, você pode bit-bang-lo. (Mas muito mais fácil de usar built-in periféricos SPI). O mestre SPI envia uma linha de relógio (SCLK) e uma linha de dados (MOSI = mestre fora escravo em), onde os bits de dados são válidos em uma borda designado do relógio linha; ele recebe uma linha de dados (MISO = mestre em fora escravo) do escravo em que os bits de dados são válidos em uma borda designado da linha de relógio. Se você tiver vários escravos, a técnica é geralmente ter selecione a linha um chip (CS) para cada escravo; se CS é baixo, então o escravo em questão está ativo, caso contrário, é suposto ignorar os sinais de clock / dados e não perturbar a linha MISO. SPI é simples e vai mesmo trabalhar com um HC594 ou HC595 registo de saída (amarrar MOSI para SER, SCLK para SCK, CS para RCK) se o seu microcontrolador é curto nos pinos porta de saída e você precisa de uns poucos extras. Se tiver mais do que 3 dispositivos de SPI, considerar o uso de uma HC138 como um descodificador para produzir as linhas dispositivo CS individuais a partir de um conjunto de bits de endereço e uma linha chip select mestre do microprocessador. (Uma vez que apenas uma linha CS é suposto ser de baixo de cada vez)

I2C é uma dor. Sua principal vantagem é que você pode fazer tudo em 2 fios (+ alimentação e terra) compartilhados entre um grupo de periféricos. Mas você tem que lidar com a contenção endereço e um monte de outras coisas. É também mais lento do que SPI e tem linhas de coletor aberto assim que sua imunidade consumo de energia + ruído estão relacionados ao que você usa, onde para resistor pull-up (ou fontes de corrente).

A UART pode ser a solução mais rápida. SPI tem uma limitação de velocidade relacionada com o tempo de propagação de ida e volta, uma vez que ambos os lados usam o mesmo sinal de relógio. (Percurso de sinal = mestre muda pino SCLK, escravo vê-lo e responde alterando MISO pino, em seguida mestre utiliza sinal MISO na borda SCLK próxima de modo que o sinal proveniente do escravo deve ter chegado por seguida) Em um UART, os fluxos de bits de entrada e de saída são independentes, e latência não significa que seu rendimento é reduzido a menos que o protocolo de alto nível é para UART endpoint a para enviar um comando para UART ponto final B, espera para B para responder, em seguida, enviar o próximo comando. Muito rápido córregos de série deve considerar o uso LVDS para manter a integridade do sinal. Mas a análise UART bytes é um tipo de dor em comparação com SPI; em SPI existem pacotes claramente delimitado, enquanto que em UARTs você está lidando com um fluxo de série undelimited e qualquer packetizing tem que ser feito a partir de analisar os dados em si.

edit: uma outra vantagem com um UART, é que às vezes o processador pode lidar automaticamente grande enviar / receber buffers, de modo que seu programa pode enfileirar uma grande glob de bytes a serem enviados, e em seguida, analisar um monte de bytes recebidos quando você sentir como ele. O hardware pode lidar com o imediatismo de envio / recebimento de cada byte individual e liberta o seu programa de preocupar-se sobre a falta de bytes individuais que chegam quando o programa está fazendo outra coisa.

Outras dicas

A resposta de Jason é muito mais detalhado, mas eu pensei que eu gostaria de acrescentar minha experiência breve.

Eu usei um Skytek M1 Micro RFID de leitura / módulo de gravação conectado a um Stamp BASIC sobre TTL. Eu nunca tive qualquer problema, eo conjunto foi muito mais simples do que teria sido se eu tivesse escolhido I2C.

Ela exige apenas o microcontrolador para enviar comandos de série-TTL simples, seguindo o protocolo SkyeTek. Eu tinha-configurado e funcionando em cerca de 5 minutos no meu placa de ensaio.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top