Problema ICSP + SST25VF016B + ATmega2560

2

Hemos diseñado una placa que utiliza un ATMega2560 y queríamos tener la opción de hacer actualizaciones de firmware remotas (también tiene un Sim800C para obtener los archivos de firmware).

Por lo tanto, hemos agregado un módulo de memoria SST25VF016B (para almacenar el firmware) y lo hemos acoplado con un Convertidor de nivel lógico (ya que Atmega está operando en 5V y el SST25VF016B a 3.3V).

Nuestro esquema es el siguiente:

ElproblemaalquenosenfrentamosesquenopodemosprogramarelATMegacuandoelSST25VF016Bestásoldadoennuestrotablero.Despuésdebuscarunpoco,heencontrado esta Nota de Atmel :

  

Uso compartido de las líneas de programación SPI   Si hay dispositivos adicionales conectados a las líneas ISP, el programador debe estar protegido de cualquier dispositivo   que puede tratar de conducir las líneas, que no sea el AVR. Esto es importante con el bus SPI, ya que es similar al   Interfaz ISP. Aplicación de resistencias en serie en las líneas SPI, como se muestra en Conexión de las líneas SPI a la   Interfaz ISP, es la forma más fácil de lograr esto. Típicamente, el valor de la resistencia R puede ser de 330. Esto permite   Programar todos los dispositivos a través de una interfaz mínima. Sin embargo, si no hay un diseño especial.   Consideraciones, entonces todos los dispositivos AVR responderán a las instrucciones del ISP. Las líneas de reloj SPI deberían   se suministran por separado (se pueden activar mediante puentes o interruptores DIP) de modo que solo uno de los dispositivos AVR   recibe el reloj SPI a la vez. Otras líneas SPI (MOSI y MISO) se pueden compartir. Este método asegura que   Los AVR están separados del programador por las mismas resistencias de protección, ya que todos se mantienen en   REINICIAR mientras la línea de reinicio del ISP está activada. El reloj del ISP se puede sincronizar mediante puentes o interruptores DIP.   Una solución alternativa es utilizar múltiples interfaces ISP, una para cada dispositivo, todas protegidas por separado con   resistencias en serie.

La pregunta es si alguien ha hecho algo similar y sabe que funcionará. Además, ¿cómo podría usar varias interfaces ISP para cada dispositivo que se menciona al final?

    
pregunta Lefteris

2 respuestas

1

El método a prueba de bombas para hacer esto es como se muestra a continuación

Al programar a través de SPI (supongo que está utilizando AVR-ISP o la última versión para hacer la programación de producción inicial), la unidad se mantiene en reinicio. Por lo tanto, este método aísla todo SPI del procesador que no sea la unidad de programación.

Tenga cuidado con el chip de reinicio. He sido atrapado por una salida push-pull que toma el control de la línea de reinicio y lo he superado con un dispositivo de drenaje abierto o una resistencia en serie entre la salida del chip de reinicio y el resto del circuito.

Puedes usar un 4053, no tiene que ser un 74HC.

    
respondido por el DiBosco
1

El conflicto surge de la habilitación permanente del controlador único para MISO que está orientado hacia el ATmega; debe habilitar esa función contextual en flash frente a la operación ISP.

Si la sincronización de su ciclo SPI habitual hace que la selección del chip de flash sea baja durante todo el tiempo que espera recibir una respuesta desde el flash, entonces todo lo que necesita hacer es:

1) Conduzca el /G4 habilitado desde la selección del chip lateral de ATmega, es decir, PCO_53

2) Asegúrese de que esto y la selección del chip sean altos durante las operaciones de programación; por ejemplo, agregue una resistencia de extracción.

(Es típico mantener un nivel bajo de / CS durante todo el ciclo, pero algunas partes le permiten tenerlo alto antes y aún así completar la transferencia, pero esto rara vez es necesario , por lo que solo puede hacer Asegúrate de mantenerlo bajo hasta el final).

Debería poder intentar esto con una pequeña modificación en su placa existente: doble el pin 13 o corte la traza, pásele un puente al pin 9, coloque una resistencia en algún lugar.

    
respondido por el Chris Stratton

Lea otras preguntas en las etiquetas