Revisión de diseño: SPI, ISP y esclavos múltiples

2

Estoy diseñando una pequeña tabla de ruptura para un AVR ATmega8U2, que me permitirá aprender sobre los AVR, SPI, ISP y USB. En este proceso, encontré algo sobre lo que me pregunto un poco: cómo diseñar el encadenamiento de margaritas de los dispositivos SPI.

Tengo la intención de poder usar múltiplos de la misma placa como Maestro y Esclavo, dependiendo de un simple interruptor / puente. La opción de diseño n. ° 1 aborda esto, con un interruptor de selección que determina qué canal de selección esclavo se conecta al pin! SS del chip. Los resistores de 1 k están allí para aislar el bus SPI cuando se ejecuta el ISP.

Mi opción de diseño # 2 (ver más abajo), crea un encabezado SPI donde la placa será el maestro y otra donde está el esclavo. Esto no parece, bueno, una solución lo suficientemente buena. Cada tarjeta esclava que quiero conectar necesitará un encabezado en la tarjeta maestra. No estoy restringido a solo encabezados de 6 pines, por lo que la opción # 1 podrá proporcionar varios esclavos más por encabezado, incluso si Vcc y GND tienen que ser parte del conector.

En la opción # 2, también tendré que codificar el encabezado esclavo que estoy usando en el momento de la compilación, y mover los conectores para saber si es necesario cambiar algo durante la ejecución. Si estoy usando la opción # 1, simplemente puedo girar el interruptor de selección de chip a la posición correcta.

También quiero poder conectar otros periféricos SPI a bordo.

[Todos los nombres de pin / puerto corresponden a ATmega8U2. Los pines PB [4..6] son salidas simples. PB0 es! SS en el chip, PB1 es SCLK, PB2 es MOSI, PB3 es MISO. PC1 es! RESET.]

1) ¿Cuál de mis enfoques funcionará mejor? ¿Estoy violando alguna regla crucial sobre SPI?

2) ¿Será necesario tener un pin GND en el encabezado para proporcionar un punto de referencia común? Ambas tarjetas / todas serán alimentadas con una batería de 9V, suministrando un regulador de 5V.

3) ¿Tendré que aislar las salidas de selección de esclavo del encabezado o interruptor a través de una resistencia en serie u otros medios? ¿Es suficiente nunca tirar de la línea de selección de esclavos en el chip maestro que tiene en baja, o existe una solución de hardware para este posible problema?

4) ¿Es necesaria la terminación en cada esclavo / maestro? ¿Cómo puedo implementar esto, si es necesario? Tenga en cuenta que la longitud máxima del cable será de 15 cm, tabla a tabla.

5) ¿Cómo puedo producir un esquema más limpio y legible?

(Pregunta un poco desordenada, pregunte si algo no está claro)

EDITAR: Numeración fija.

    
pregunta Araho

2 respuestas

2

Primero, ha identificado una parte realmente molesta de SPI en el AVR: la conexión de esclavos SPI interferirá con el funcionamiento correcto de ICSP.

Segundo: el bus SPI tiene MISO, MOSI y un pin de selección de chip. Puede dividir los pines MISO, MOSI y GND, y quizás VCC, más un pin CS diferente para cada placa hija que desee conectar. Siempre que la CS no esté activa para las placas hijas y que los chips de la placa hija no intenten utilizar el bus en modo maestro, debería estar bien.

Tercero: puede usar un chip de almacenamiento intermedio de algún tipo (tal vez 74HC125 o similar) con una función tri-state para aislar la función ICSP de la función SPI-talking-to-slaves; configura el chip de almacenamiento intermedio para que requiera un pin alto en particular para permitir el paso de las señales, y usa el software para tirar de ese pin alto solo cuando tu código quiere hablar con los esclavos, y mantenerlo bajo después de restablecer el código.

    
respondido por el Jon Watte
2

Use pullups externos (por ejemplo, 10K) en todos los pines! SS. Eso asegurará que los periféricos estén desactivados durante la programación.

    
respondido por el vkp

Lea otras preguntas en las etiquetas

Comentarios Recientes

para asignar CPU, red y almacenamiento por clase2- Minimice las BOM de nodo de línea con SMTPrinters DR query3- Necesita un mejor mecanismo de aceleración para el tamaño de BOM / utilidad de papel OLTP en el optimizador de cola grande4- No inactivo capaz de procesar la no desreferencia para el conjunto imponible (sin ID de evento) en servidores antiguos en RDTA2014 / 06/14: continúe trabajando en el concepto Java SPA en ese momento (lo siento, solo necesitaba comentar una característica que no está directamente... Lees verder