Terminais de barramento SPI e resistores pull-up

12

Meu microcontrolador (série ATMEL) precisa se comunicar com um dispositivo escravo usando o protocolo SPI. Estou projetando o hardware. A velocidade máxima do barramento SPI é de 1 MHz. A distância entre o mestre e o escravo é inferior a 50 mm.

Q1) Preciso adicionar terminação em série no barramento SPI para evitar reflexos nessa velocidade SPI (1 MHz)? Se sim, como devo calcular seu valor e onde devo colocar o resistor de terminação - próximo ao mestre ou próximo ao escravo?

Q2) Vi outros projetos de referência em que, às vezes, as pessoas usam resistores pull-up em todos os sinais SPI, às vezes apenas em alguns sinais (CS ou MISO) e às vezes nenhum. Precisamos de resistores pull-up em sinais SPI (já que a porta SPI é configuração push-pull)? O único momento em que os pinos estarão flutuando é até que o microcontrolador obtenha energia e possa definir os pinos como saídas. Então, preciso usar resistores de pull-up ou o que acontecerá se eu não usar nenhum resistor de pull-up no meu projeto?

Bharav
fonte

Respostas:

20
  1. A 1 MHz e 50 mm (2 polegadas), você não precisa de terminações. Você tem sinais digitais comuns a bordo, e nem mesmo muito rápidos.
  2. Você não precisa de pullups ou pulldowns nas linhas SPI. Quando usadas, as linhas SPI são sempre explicitamente direcionadas nas duas direções. No entanto, pode ser bom colocar um pulldown (ou pullup) na linha MISO. Isso ocorre porque essa linha é acionada apenas por um escravo quando a linha de seleção de escravo é afirmada. Quando o barramento não é usado, todas as linhas de seleção de escravos geralmente não são declaradas, portanto o MISO flutua. O valor arbitrário dos dados é irrelevante, uma vez que nada está olhando para o seu valor, a menos que um escravo seja selecionado, mas tensões intermediárias nessa linha podem fazer com que o receptor no mestre gaste corrente excessiva ou, possivelmente, oscile. Eu costumo colocar um pulldown de 100 kΩ no MISO por esse motivo. Mantém a linha inofensivamente baixa quando não está em uso. Você também pode usar um pullup, desde que todos os escravos permaneçam energizados, mesmo quando não estiverem em uso.
Olin Lathrop
fonte
3
Um motivo importante para colocar um pullup nos pinos CS / SS é garantir que todos os escravos permaneçam desmarcados quando o mestre estiver em redefinição ou inicialização. Nesse caso, seus pinos são geralmente hi-Z e, portanto, flutuam, o que pode levar à seleção de vários escravos e à condução do barramento MISO (resultando em curto-circuito). Talvez isso seja uma adição útil a esta resposta?
Matthijs Kooijman