Resistencias pull-up y terminación de bus SPI

Mi microcontrolador (serie ATMEL) necesita comunicarse con un dispositivo esclavo mediante 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.

P1) ¿Necesito agregar una terminación en serie en el bus SPI para evitar la reflexión a esta velocidad SPI (1 MHz)? 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 otras veces en ninguna. ¿Necesitamos resistencias pull-up en las señales SPI (ya que el puerto SPI tiene 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 configurar los pines como salidas. Entonces, ¿debería necesitar usar resistencias pull-up o qué sucederá si no uso ninguna resistencia pull-up en mi diseño?

Respuestas (1)

  1. A 1 MHz y 50 mm (2 pulgadas) no necesita terminaciones. Tiene señales digitales ordinarias a bordo, 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 conducen 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 impulsada por un esclavo cuando se afirma su línea de selección de esclavo. Cuando no se usa el bus, todas las líneas de selección de esclavos generalmente no están activas, 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 consuma demasiada corriente o posiblemente oscile. Usualmente pongo un pulldown de 100 kΩ en MISO por este motivo. Mantiene la línea inofensivamente baja cuando no está en uso. También podría usar un pullup, siempre que todos los esclavos permanezcan encendidos incluso cuando no estén en uso.
Una razón importante para colocar un pull-up en los pines CS/SS es asegurarse de que todos los esclavos permanezcan sin seleccionar cuando el maestro esté reiniciando o arrancando. En ese caso, sus pines suelen ser hi-Z y, por lo tanto, flotantes, lo que podría llevar a que se seleccionen varios esclavos y controlen el bus MISO (lo que provocaría cortocircuitos). ¿Quizás esto sería una adición útil a esta respuesta?