Meu MCU opera um barramento SPI com cerca de 4 dispositivos. Eu gostaria de estender esse barramento para ficar fora da placa também, ou seja, ter algumas PCBs conectadas à placa "principal" e estender a funcionalidade. A distância "almofada a almofada" seria:
comprimento do traço da placa principal + comprimento do cabo + comprimento do traço na placa de extensão
3 "+ 6" + 3 "= cerca de 12"
Na minha experiência, mesmo um sinal de 1 MHz, com cerca de 7 ns de tempo de subida, nessa distância através de um cabo de fita ultrapassava em mais de 1 V (mas não havia toque excessivo). As placas serão alimentadas pela mesma fonte de alimentação.
Nota: Você não pode ver os tempos de subida aqui, mas pode ver o excesso excessivo - este é um sinal de 3,3V. E sim, isso foi medido corretamente com um fio muito curto da sonda ao terra. Como muitas vezes é recomendado neste site. Não acho que seja um erro de medição.
Eu gostaria que o sistema funcionasse em 4 MHz, mas 2 MHz também é aceitável. O max. o número de placas que eu gostaria de conectar seria de cerca de 4 e isso estenderia o barramento SPI para cerca de 12 dispositivos. Eu não acho que isso seria muito difícil de gerenciar via código, pois eu já tenho algo funcionando assim. Ter as linhas de seleção de escravos adicionais também não é um problema.
No entanto, minha preocupação é como enviar os dados SPI de uma placa para outra. Devo apenas enviar SPI direto ou convertê-lo em LVDS em uma extremidade e depois convertê-lo novamente em SPI na outra extremidade?
fonte
Respostas:
A regra geral diz que você deve calcular os efeitos da linha de transmissão se o comprimento da sua conexão for maior que 1/10 do comprimento de onda do sinal.
As linhas de transmissão causam reflexões nas quais mostram uma mudança repentina na impedância. O sinal refletido é adicionado ao original, pode refletir novamente no lado do transmissor e, dessa forma, ir e voltar. O resultado é mostrado no gráfico: a ultrapassagem de que você está falando e alguns toques.
Um comprimento de fio de 12 "(30cm) é 1/10 de um comprimento de onda de 3m, ou 100MHz. 1MHz e até 4MHz não deve causar muitos problemas aqui. Terminar a linha, como Wouter diz, pode ser a primeira medida. a entrada é provavelmente alta impedância, e isso nunca é uma boa correspondência. Como você tem três peças diferentes em sua conexão (PCB, fio, PCB), é difícil encontrar a impedância característica. (Também será diferente para a PCB e o fio, portanto, em frequências muito altas, você também terá reflexos nas conexões do cabo.) Dado o comprimento curto e a baixa frequência, o valor do seu resistor de terminação não é crítico. 100 pode ser muito baixo para o microcontrolador, a maioria deles pode fornecer 33mA (ou até 50mA, a 5V) .Eu tentaria um 1kΩΩ Ω resistor para começar e ver até onde isso nos leva.
editar (atualização da pergunta) O
tempo de subida parece ser 7ns. Isso é rápido, como diz Kortuk, significa que você tem um espectro de pelo menos 400 MHz e esses harmônicos de fato sofrerão efeitos de linha de transmissão, mesmo que seu relógio seja de apenas 1 MHz. Tente filtrá-los, uma largura de banda de 20 MHz (80 MHz para o relógio de 4 MHz) oferece tempo de subida mais que suficiente. Esta é uma onda quadrada de 1 MHz filtrada com uma parede de tijolos LPF a 20 MHz:
A colocação de um resistor em série formará um LPF de primeira ordem com a capacitância da linha. Se estimarmos que em 50pF, então
fornece frequência de corte de 100MHz. Portanto, um resistor da série 33 deve diminuir o tempo de subida, mas deixe o suficiente para ter um bom sinal em 4MHz.Ω
fonte
Para um ônibus tão curto, eu tentaria colocar um pequeno resistor em série com qualquer coisa que estivesse dirigindo uma linha. Essa não é a maneira ideal teórica de levar em consideração a teoria das linhas de transmissão, mas uma abordagem pragmática que acho que funcionará bem o suficiente para o seu caso. Experimente 47 Ω para começar e veja o que isso faz. Se isso ajudar, mas não o suficiente, você pode ir mais alto, mas eu não excederia 120 Ω. Provavelmente, em algum lugar desse intervalo, você encontrará um valor que funcione bem o suficiente.
fonte
AFAIK, a superação pode ser eliminada pela rescisão do suporte, se o seu motorista puder conduzir a carga. Caso contrário, algum par dedicado de driver / receptor como o LVDS ou talvez o RS485 certamente funcionará.
fonte
No passado, tive sérios problemas ao executar o SPI por cabos de fita, apesar de muito mais longos do que o que você descreve. A imunidade a ruídos se tornou um problema real e comandos corrompidos acabaram chegando aos meus periféricos. Foi o suficiente para falhar nos testes de imunidade a ruídos da CE. Se você se deparar com problemas a esse respeito mais adiante, recomendo colocar um MCU separado em cada placa e conectá-los via CANbus.
fonte