Estoy usando una resistencia pullup de 5k en mis líneas SDA y SCL. Estoy usando una señal de reloj de 62kHz en SCL. He hecho dos tablas hasta ahora. Para la primera placa, enruté todos los rastros, pero para la segunda usé la función de enrutador automático en Eagle. Yo mismo enruté los rastros importantes, pero para todo lo demás, incluyendo SCL y SDA, dejé las cosas en manos del enrutador automático.
Para la primera placa, obtengo un buen rendimiento en las líneas I2C:
Sinembargo,enlasegundaplaca(líneasI2Cenrutadasautomáticamente),losrastrosmuestranquelaslíneasSDAySCLestánacopladas:
Desdelacapturalógica,parecequelacomunicacióntodavíafuncionaenlasegundaplaca.Sinembargo,losnivelesanalógicoscuentanunahistoriadiferente.
Además,despuésdeejecutaresteprogramadepruebaenmimicrocontrolador(PIC16LF),elprogramaentraenmalestado.LoquequierodecirconestoesquelaslíneasI2Ccomienzanaflotar,ylaseñaldelrelojse"estira". También tengo un LED de depuración que alterna con un determinado evento, y el pin de los controles que el LED parece soltar, ya que el LED parpadea de forma un tanto aleatoria.
Por lo tanto, mis preguntas son:
1) ¿Esto se debe en realidad al diseño?
2) ¿Qué podría hacer que el programa se encuentre en mal estado?
Para dar una idea de qué tan mal se ve el rastreo de SDA, aquí hay una captura de pantalla del diseño: