DS3232M Salta segundos al escribir en SRAM

Estoy usando un DS3232M que funciona muy bien para controlar el tiempo hasta que intento escribir en la SRAM del chip. Cuando uso la SRAM, ralentiza las actualizaciones del registro de segundos o las detiene todas juntas. Estoy escribiendo 18 bytes en la SRAM una vez por segundo y los datos no sobrescriben los registros de cronometraje, pero parece que impide que se actualicen los registros de cronometraje. Como nota al margen, el pin de salida de 1 Hz emite una onda cuadrada de 1 Hz con un ciclo de trabajo del 50 % cuando no estoy escribiendo en la SRAM, pero cuando empiezo a escribir en la SRAM, el ciclo de trabajo cae al 33 %. ¿Por qué no puedo escribir en la SRAM integrada y mantener un buen tiempo?

¿Está absolutamente seguro de que no está configurando accidentalmente el bit 7 en el registro 13h (SWRST)? ¿Puede ver si OSF (bit 7 en el registro 0Fh) se está configurando?
Sí. Intenté leer todo el contenido de SRAM, incluidos los registros de cronometraje, y todos tienen valores razonables. El registro de segundos simplemente no se actualiza.
¿Tiene un alcance, o qué está usando para mirar el pin de salida? Si escribe en la SRAM una vez cada 2100 ms aproximadamente (solo use un bucle de retardo simple; el tiempo no es preciso, siempre que sea un poco más de dos segundos), y emita un pulso en algún pin en algún lugar cada vez que escribe la SRAM, y también mira el reloj y golpea otro pin cada segundo, ¿cómo interactúan las escrituras de la SRAM con el pin de salida de 1 Hz y los incrementos del reloj?
Verificó que la línea de suministro no tuviera caídas ni ondulaciones en la fuente de alimentación.
En una segunda placa de circuito, no parece que las líneas de salida del reloj se vean afectadas; sin embargo, los registros de cronometraje no se actualizan al escribir en la SRAM una vez por segundo.

Respuestas (1)

Recibí esta respuesta del soporte técnico de Maxim:

Después de una mayor investigación, coincidimos en que hay un problema con el chip.

Si comienza una escritura en SRAM en un límite de dirección uniforme (18h, 20h, 28h, etc.), la cadena del contador RTC interno se restablece incorrectamente. Esta acción de reinicio es visible si SQW resulta ser alto cuando escribió en la memoria.

Las ubicaciones de SRAM 14h-17h no parecen tener esta anomalía.

Soluciones temporales a corto plazo:
1) Evite escribir en ubicaciones SRAM 18h-FFh
2) Escriba en SRAM antes de configurar el RTC

Arreglaremos el chip. Gracias por traer esto a nuestra atención.

Maxim ha publicado esta fe de erratas que cubre el tema.

Guau. Encontraste un error de silicona. Eso es bastante espectacular.
¿Al menos te enviaron una camiseta? ¡No olvides aceptar tu gran respuesta!
A menudo me pregunto por qué las empresas parecen tener tantos problemas para fabricar chips RTC que no sean ridículos. Debería ser simple hacer un chip con un contador de ejecución libre de 48 bits totalmente expuesto que se puede forzar a cero pero no configurar de otra manera, junto con un par de registros de comparación de 32 bits que activan un pulso de activación y unos pocos bytes. de memoria para mantener una compensación de tiempo. Eso parecería más simple que los chips existentes, pero permitiría sincronizaciones más precisas y sería más fácil de usar.