Eu tenho um projeto baseado em uma foto 18f4550. Para gravar em um registrador de turno '595, existe uma vantagem distinta no uso de spi sobre pinos io regulares? Ouvi dizer que o spi é mais rápido, mas não sei como. Ele usa um relógio diferente e mais rápido que o resto do chip ou é simplesmente mais eficiente? Eu posso dividir um byte através de pinos io regulares em um número muito pequeno de instruções. O spi usa menos poder de processamento? Estarei mudando com bastante frequência durante cálculos bastante intensos, por isso quero o maior número possível de ciclos dedicados ao meu processo e não mudando.
Meu principal motivo para não querer usar o spi é que meu layout atual tornaria um pouco mais difícil o acesso aos pinos necessários, porque eu já estou usando alguns deles para outras coisas e teria que embaralhar as coisas. Eu queria descobrir quais são os benefícios antes de começar a rasgar as coisas e movê-las.
Respostas:
Supondo que você esteja comparando um "mecanismo" serial periférico ou síncrono spi no micro para gerar a mesma sequência via "bang-bit", sim, ele tende a ser um pouco mais rápido, mas o mais importante é que o processador pode fornecer um byte inteiro para o periférico para enviar e depois fazer outras coisas enquanto é transmitido. No caso de troca de bits, o processador tende a ser amarrado durante a transmissão (embora, como o micro tenda a ser o principal e a maioria dos periféricos seja totalmente estático, você provavelmente pode tolerar uma pausa no meio do byte para atender a uma interrupção ou até mesmo pesquisar coisas - ADC serial com clock de interface e tarefas com intervalo de amostra sendo exemplos notáveis de exceções).
Em MCUs mais capazes, pode até ser possível programar um controlador DMA para executar uma transferência de vários bytes da memória através do mecanismo SPI sem mais atenção do processador, especialmente se apenas os dados em uma direção forem importantes.
Mas muitos projetos de microcontroladores acabam altamente otimizados para suas tarefas; se você pode poupar os ciclos e tolerar a redução de velocidade, complica seu software para poder usar os GPIOs que tornam o layout físico mais limpo, de maneira alguma uma escolha incomum.
fonte
Vantagens do bit-bang:
Desvantagens do bit-bang:
Vantagens do SPI:
Desvantagens do SPI:
Para mim, as vantagens do bit-bang são menores se comparadas às vantagens do SPI. As desvantagens do bit-bang são muito maiores que as do SPI. As três principais razões que eu posso ver para escolher bit-banging são:
fonte
No PIC, uma implementação convencional do estilo SPI de bit-bang leva cerca de cinco ciclos por bit; com um pouco de trabalho nas peças 18Fxx, pode-se reduzir para cerca de quatro (ao custo de cerca de três ciclos por byte de sobrecarga extra). Esse tempo é adicional ao tempo necessário para buscar dados (geralmente três ciclos por byte). Portanto, calcule cerca de 40 a 43 ciclos por byte. Usando o SPI de hardware, a velocidade aumenta para dois ciclos por bit mais alguns ciclos extras por byte (alguns outros podem lidar com transferências consecutivas, mas os PICs que vi não podem) e enquanto o SPI está enviando um byte o processador pode buscar o próximo, permitindo um tempo geral de cerca de 18 ciclos / byte - um ganho de velocidade de cerca de 2,5x.
fonte
Para bit banging (BB), você esqueceu de mencionar:
fonte