Autor Tema: Los pullup de I2C  (Leído 9139 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Los pullup de I2C
« en: 22 de Octubre de 2008, 15:33:57 »
Hola! estaba mirando el datasheet de una memoria I2C de microchip, y me encuentro que dice que el pin SDA necesita un pullup (normal), pero en el pin SCL no dice nada... eso quiere decir que el pullup no es necesario?



yo estaba acostumbrado a este tipo de configuracion:



Pero segun el datasheet me puedo ahorrar una resistencia...
Que opinais?
Salu2
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Los pullup de I2C
« Respuesta #1 en: 22 de Octubre de 2008, 15:37:10 »
Por el bien de tu comunicación I2C, no te ahorres esa resistencia  :D

No interpreto en ese trozo de la datasheet que no sea necesaria.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Los pullup de I2C
« Respuesta #2 en: 22 de Octubre de 2008, 15:50:49 »
Es verdad, no especifica que NO sea necesaria, pero por logica, si te dice que SDA si necesita un pullup, y de SCL no dice nada me da a interpretar que no la necesita.... no?
Tampoco especifica si WP necesita o no un pull up, por eso se entiende que no lo lleva...
En todo el datasheet solo habla una vez de los pullup, y es en SDA
En realidad el costo de la resistencia no es el problema, sino la curiosidad de saber si es necesaria....
Tal vez para comunicacion I2C de otros dispositivos si sea necesaria, pero quizas este integrado no tiene SCL como colector abierto ¿?
No te preocupes, usare la resistencia  :D
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Los pullup de I2C
« Respuesta #3 en: 22 de Octubre de 2008, 16:09:43 »
Pensando en voz alta: el sentido de hacerlo no es otro que permitir que varios dispositivos se comuniquen a la vez sin que uno "pise" a otro. Imagina que uno está enviando un 1 a la vez que otro envía un 0.
Eso tiene sentido en la línea SDA porque es la única que todos los dispositivos pueden escribir.
La línea SCL sólo es gestionada por el que hace de master, así que quizás tengas razón y pueda prescindirse de esa pullup.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Los pullup de I2C
« Respuesta #4 en: 22 de Octubre de 2008, 22:25:08 »
Pensando en voz alta: el sentido de hacerlo no es otro que permitir que varios dispositivos se comuniquen a la vez sin que uno "pise" a otro. Imagina que uno está enviando un 1 a la vez que otro envía un 0.
Eso tiene sentido en la línea SDA porque es la única que todos los dispositivos pueden escribir.
La línea SCL sólo es gestionada por el que hace de master, así que quizás tengas razón y pueda prescindirse de esa pullup.

La verdad esa explicacion tiene mucho sentido. El SCL siempre lo comandara un master, y si el master es un PIC, este puede enviar una señal de clock sin necesidad de un pullup (a menos que usemos el madito RA4  8))

Buscando por varios lados en todos dicen que las lineas SDA y SCL son drenador abierto, y que ambas necesitan pullup. Supongo que habra ICs que hagan de maestro sin ser un PIC, y seguro estos si necesitan el pullup.
Wikipedia
Robots Argentina

probare a ver que ocurre si no la pongo...
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado elmasvital

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 1713
Re: Los pullup de I2C
« Respuesta #5 en: 23 de Octubre de 2008, 07:04:03 »
Tendrias que acudir al documento original de philips para verlo pero seguro que hay dispositivos master que tiene scl en colector abierto. Se dejará por compatiblidad.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Los pullup de I2C
« Respuesta #6 en: 23 de Octubre de 2008, 15:14:23 »
Tendrias que acudir al documento original de philips para verlo pero seguro que hay dispositivos master que tiene scl en colector abierto. Se dejará por compatiblidad.

Seguramente que sea asi.
Igualmente, sin analizarlo mucho parece que los pics podrian prescindir de esa resistencia.
Tengo que probar.
Salu2
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Los pullup de I2C
« Respuesta #7 en: 23 de Octubre de 2008, 15:26:56 »
Por si las moscas, donde uso I2C pongo las dos pull-ups... :lol:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado gONzAO

  • PIC10
  • *
  • Mensajes: 38
Re: Los pullup de I2C
« Respuesta #8 en: 04 de Abril de 2010, 13:40:53 »
Hola, aprovechando el hilo...

Algunos PICs, por ejemplo el 18F4550 tienen pull-ups internos en el puerto B. Ahí se encuentran los pines de las señales SDA y SCL.
¿Activar los pull-ups internos sería una alternativa a colocar pull-ups externos?
¿Alguien lo ha probado?
¿Funcionará con los pull-ups internos?

Gracias.
gONzAO

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Los pullup de I2C
« Respuesta #9 en: 04 de Abril de 2010, 15:59:31 »
Si es posible usar la resistencia interna pull up del micro solo tienes que decirle al pic que la vas habilitar ahora encuando a si el scl usa o no la resistencia y funciona bien en casos si pero cuando la eeprom a leer o escriber esta ya plenamente en un circuito establecido el mismo tiene su impedancia lo que seria mejor tener en el circuito programador externo de la eeprom i2c usan pull up tanto para la data como para el reloj.

Saludos y espero que se aclare el tema y para eso lo mejor es hacer las pruebas fisicas.
Atten.
Alexander Santana.
Venezuela-Barcelona.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado gONzAO

  • PIC10
  • *
  • Mensajes: 38
Re: Los pullup de I2C
« Respuesta #10 en: 06 de Junio de 2010, 18:13:41 »
Hola a todos.
Estoy teniendo problemas con las comunicaciones I2C entre un PIC 18f4550 (@48MHz=12MIPS) y un par de chips: el expansor mcp23009 y el rtc ds3231.

El tema es que en ocasiones (bastante frecuente) las lecturas son incorrectas. Imagino que las escrituras también lo deben ser.
Utilizo las funciones de librería en MPLAB. Compruebo los valores devueltos por las funciones y no indican fallo.
He probado con muchos ejemplos, variando la velocidad... por lo que no creo que el codigo esté mal. De hecho, la simple escritura de un registro y la lectura a continuación no da el mismo valor que se escribió.
He comprobado que si ejecuto con el debugger, las escrituras y lecturas, paso a paso todo va correctamente.

¿Puede ser problema de las resistencias de pull-up?
Tengo colocadas resistencias de 10k. Creo que voy a cambiarlas por otras de 4k7.
¿Os ha pasado esto alguna vez?

Gonzalo

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Los pullup de I2C
« Respuesta #11 en: 06 de Junio de 2010, 23:46:26 »
Hola amigo, les cuento que en una oportunidad perdí casi un día tratando de realizar una comunicación I2C entre el PIC y otro dispositivo, todo esto se debía a que la resistencia pull-up en el pin SCL es fundamental, en algún punto de la comunicación el PIC  coloca este pin como entrada y obviamente la comunicación se llena de ruido si no está la resistencia entorpeciendo su funcionamiento.

saludos.

Desconectado Menta

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 611
Re: Los pullup de I2C
« Respuesta #12 en: 07 de Junio de 2010, 02:27:57 »
Simplemente quiero recordar que el pull-up interno de los pic está constituido por transistores FET y no es lo mismo que una resistencia externa.
Además, creo que el pull-up de i2c debe tener valores aproximados de resistencia según la frecuencia máxima de trabajo
Finalmente, el pull-up en los pic se activa sólo si el pin se va a usar como entrada.

Creo que para el CLK, siendo el master el pic, no es necesario el pull-up.
Pero al menos si usan librerías de i2c de CCS creo que no va a funcionar si no se modifican estas librerías, ya que si mal no entiendo para sacar un 1 lógico usan output_float que en realidad pone el pin como entrada. Ojo con eso!!!
     

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Los pullup de I2C
« Respuesta #13 en: 07 de Junio de 2010, 05:34:03 »
Si, ten cuidado porque segun la velocidad que tengas puesta a la comunicacion i2c necesitaras pullups de menor valor. Yo siempre uso unas de 2k2
lo que parece claro es que si al hacer debug los valores que escribes son correctos, entonces hay un fallo de transmision.
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Los pullup de I2C
« Respuesta #14 en: 07 de Junio de 2010, 07:45:12 »
Confirmo punto por punto lo que dicen los amigos Menta y Marttyn.

Por un lado las pull-up's internas se desconectan cada vez que un PIN de conmuta a salida y por otro un valor correcto para las pull-up's externa es de 2K2. Cuanto mas velocidad menor ha de ser el valor de las mismas, sin bajar de 2K. Un valor de 10K es útil para un PIN de en entrada digital pero es excesivo para un I2C.

Quiero recordar que por el Foro teníamos un hilo en que se discutía todo esto y se daban incluso las instrucciones para poder calcular el valor idóneo para un I2C a una velocidad dada. Voy a ver si lo encuentro.
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania