Información de fondo
Estoy diseñando una pequeña PCB para 4* dispositivos I2C, la tasa de baudios del I2C no es un problema importante así que 100kHz era el objetivo. Los dispositivos I2C son un RTC, un LM75, un 24AA04 y un MSP23017 para manejar un LCD, la placa está hecha con una fresadora LPKF. Antes de llenar por completo la placa pensé en probar uno de los dispositivos y el LM75 parecía la opción más fácil. Edición rápida: VCC es 5V y los Pull-Ups son ambos de 10K
He incluido algunas imágenes para que te hagas una idea de la disposición:
1º la imagen muestra la vista superior de la PCB (puentes de dirección en la parte superior derecha, todos conectados a tierra para las pruebas)
2do. la imagen muestra las trazas I2C, la dimensión de la rejilla mostrada es de 1,27mm (J11 a la izquierda está conectada al pin OS, pero se deja flotante por el momento)
El tema
Estoy probando esto con un Arduino Uno (5V VDD) con un código muy simple que sondea el LM75 cada segundo. Establecer una lectura válida es intermitente, pero una vez establecido funciona bien durante unos 2 minutos y luego se cuelga, ambas líneas I2C van alto. Para establecer un enlace de nuevo he encontrado el envío de una dirección de esclavo alternativo un par de veces y volver a la dirección correcta por lo general funciona, entonces lo mismo va a suceder.
De nuevo tengo algunas imágenes más como captura del handshaking en mi osciloscopio:
3ª la imagen muestra la configuración (no es la mejor que conozco, ignorar las resistencias por los puentes originalmente instalado 1k aquí y los enlaces de cortocircuito insertado como por la primera imagen))
4ª. La imagen muestra la primera traza del osciloscopio con datos válidos y algo de interferencia visible (marcada con un círculo rojo), ¿merece la pena preocuparse por este nivel de interferencia? Buen post que estaba leyendo sobre este tema ¿En qué momento la diafonía en I2C se convierte en un problema?
5º la imagen es sólo una base de tiempo más pequeña para que la forma de onda se pueda ver con más detalle
Estaría realmente interesado en cualquier consejo posible, probablemente necesite rehacer la placa pero cualquier sugerencia sobre las pruebas sería genial. ¡He leído algunos post y estaba bajo la impresión de I2C en estas longitudes y velocidades bajas debe estar bien, pero bastante seguro de que he hecho un error de novato!
Gracias por adelantado, Hormiga
----UPDATE----
Encontré el problema hace una semana más o menos, pero no tuve tiempo de publicar una actualización hasta ahora. Estaba convencido de que era mi PCB, pero resulta que sólo estaba solicitando 1 byte de la LM75A, cuando tenía que solicitar 2.
Todas las indicaciones sobre el hardware fueron increíblemente útiles, me permitieron mejorar el diseño y finalmente me decidí por pull-ups de 2k2, lo que mejoró la forma de onda I2C (imagen inferior).
He aceptado la única respuesta y también algunos de los comentarios, ya que todos han resultado útiles.