Terminación de bus SPI y resistencias pull-up

12

Mi microcontrolador (serie ATMEL) necesita comunicarse con un dispositivo esclavo utilizando el protocolo SPI. Estoy diseñando el hardware. La velocidad máxima del bus SPI es de 1 MHz. La distancia entre el maestro y el esclavo es inferior a 50 mm.

Q1) ¿Necesito agregar terminación en serie en el bus SPI para evitar la reflexión a esta velocidad SPI (1MHz)? Si es así, ¿cómo debo calcular su valor y dónde debo colocar la resistencia de terminación, cerca del maestro o cerca del esclavo?

P2) He visto otros diseños de referencia en los que a veces las personas usan resistencias pull-up en todas las señales SPI, a veces solo en algunas señales (CS o MISO) y, a veces, en ninguna. ¿Necesitamos resistencias pull-up en las señales SPI (ya que el puerto SPI es una configuración push-pull)? El único momento en que los pines estarán flotando es hasta que el microcontrolador obtenga su energía y pueda establecer los pines como salidas. Entonces, ¿debería necesitar usar resistencias pull-up o qué sucederá si no uso resistencias pull-up en mi diseño?

Bharav
fuente

Respuestas:

20
  1. A 1 MHz y 50 mm (2 pulgadas) no necesita terminaciones. Tiene señales digitales a bordo normales, y ni siquiera muy rápidas.
  2. No necesita pullups o pulldowns en líneas SPI. Cuando se usan, las líneas SPI siempre se dirigen explícitamente en ambas direcciones. Sin embargo, puede ser bueno colocar un menú desplegable (o pullup) en la línea MISO. Esto se debe a que esta línea solo es conducida por un esclavo cuando se afirma su línea de selección de esclavo. Cuando no se utiliza el bus, todas las líneas de selección de esclavos generalmente no están insertadas, por lo que MISO flota. El valor de datos arbitrario es irrelevante ya que nada está mirando su valor a menos que se seleccione un esclavo, pero los voltajes intermedios en esta línea pueden hacer que el receptor en el maestro extraiga una corriente excesiva o posiblemente oscile. Por lo general, pongo un pulldown de 100 kΩ en MISO. Mantiene la línea inofensivamente baja cuando no está en uso. También podría usar un pullup, siempre y cuando todos los esclavos permanezcan alimentados incluso cuando no estén en uso.
Olin Lathrop
fuente
3
Una razón importante para poner un pullup en los pines CS / SS es asegurarse de que todos los esclavos permanezcan sin seleccionar cuando el maestro esté en reinicio o arranque. En ese caso, sus pines generalmente son de alta Z y, por lo tanto, flotan, lo que podría conducir a la selección de múltiples esclavos y a conducir el bus MISO (lo que provocaría cortocircuitos). Tal vez esto sería una adición útil a esta respuesta?
Matthijs Kooijman