[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
es:howtos:hardware:arm:interfacing_i2c_devices [2019/07/21 23:41 (UTC)] – [Desplazamiento del nivel de tensión] rrampes:howtos:hardware:arm:interfacing_i2c_devices [2019/07/31 01:42 (UTC)] (actual) – Traducción completa. Comentarios y sugerencias son bienvenidas. rramp
Línea 1: Línea 1:
-<note important>Traducción en progreso. rramp</note> 
 ====== Conectando dispositivos I2C a tu sistema ====== ====== Conectando dispositivos I2C a tu sistema ======
 Circuito Inter-Integrado (I²C o más a menudo también escrito como I2C) es un bus multimaestro en serie de un solo extremo inventado por la división de semiconductores de Philips (consulte el artículo de wikipedia para obtener más información [[http://en.wikipedia.org/wiki/I2c | I2C]])  Circuito Inter-Integrado (I²C o más a menudo también escrito como I2C) es un bus multimaestro en serie de un solo extremo inventado por la división de semiconductores de Philips (consulte el artículo de wikipedia para obtener más información [[http://en.wikipedia.org/wiki/I2c | I2C]]) 
Línea 7: Línea 6:
 Para más información, consulte la sección "Desplazamiento del nivel de tensión". Para más información, consulte la sección "Desplazamiento del nivel de tensión".
  
- 
-I²C uses only two bidirectional open-drain lines, Serial Data Line (SDA) and Serial Clock Line (SCL), pulled to logic level 1 by pullup resistors. Typical voltages used are +5 V or +3.3 V although systems with other voltages are permitted and are often encountered. This has an interesting implication: logic level 1 is achieved by doing nothing whilst logic level 0 needs to be pulled down to ground. Although there are bidirectional I2C voltage level shifters (like the PCA9306) it may be feasible to experiment simpler solutions if on the I2C bus you're not going to have many devices connected. See more on this in the "Voltage Level Shifting" chapter. 
  
 ====== Prefacio ====== ====== Prefacio ======
Línea 26: Línea 23:
  
 Siempre que haya resuelto los problemas de nivel de tensión (consulte el capítulo "Desplazamiento del nivel de tensión"), añadir un nuevo dispositivo en el bus es muy sencillo. Siempre que haya resuelto los problemas de nivel de tensión (consulte el capítulo "Desplazamiento del nivel de tensión"), añadir un nuevo dispositivo en el bus es muy sencillo.
-El bus es multimaster, lo que significa que puedes tener muchos dispositivos (hasta 101) en el mismo bus, así que todo lo que tienes que hacer es hacer 4 conexiones: Potencia, tierra, SDA y SCL. +El bus es multimaestro, lo que significa que puedes tener muchos dispositivos (hasta 101) en el mismo bus, así que todo lo que tienes que hacer es hacer 4 conexiones: Potencia, tierra, SDA y SCL. 
-Si es el primer dispositivo que conecta en el bus, puede ser necesario instalar los pullups entre Power-SDA y Power-SCL. Es tan simple como eso y si el sistema está listo con los controladores apropiados y las utilidades del país del usuario, usted está listo para acceder al dispositivo recién conectado.+Si es el primer dispositivo que conecta en el bus, puede ser necesario instalar resistencias de pullups entre Power-SDA y Power-SCL. Es tan simple como eso y si el sistema está listo con los controladores apropiados y las utilidades del país del usuario, usted está listo para acceder al dispositivo recién conectado.
  
 ===== Detectando dispositivos conectados ===== ===== Detectando dispositivos conectados =====
Línea 278: Línea 275:
  
 Usted puede terminar con dispositivos de nivel de voltaje heterogéneo y si tiene muchos dispositivos, la manera correcta de solucionar este problema es usando desplazadores de nivel de voltaje I2C bidireccionales como el, [[ http://www.ti.com/lit/ds/symlink/pca9306.pdf |PCA9306]], pero si sólo tiene unos pocos dispositivos agrupados en una placa de circuito impreso como la unidad IMU 10DOF, es posible que desee probar un sistema más sencillo. Usted puede terminar con dispositivos de nivel de voltaje heterogéneo y si tiene muchos dispositivos, la manera correcta de solucionar este problema es usando desplazadores de nivel de voltaje I2C bidireccionales como el, [[ http://www.ti.com/lit/ds/symlink/pca9306.pdf |PCA9306]], pero si sólo tiene unos pocos dispositivos agrupados en una placa de circuito impreso como la unidad IMU 10DOF, es posible que desee probar un sistema más sencillo.
-Así es como conecté mi pcb IMU de 5V a un bus I2C de 3.3V en mi Raspberry PI:  +Así es como conecté mi PCB IMU de 5V a un bus I2C de 3.3V en mi Raspberry PI: 
- +
-You may end up with heterogeneous voltage level devices and if you have many devices the correct way to work around this problem is by using bidirectional I2C voltage level shifters like the [[ http://www.ti.com/lit/ds/symlink/pca9306.pdf |PCA9306]], but if you only have a few devices all grouped up in a neat PCB like the 10DOF IMU unit you might want to give a simpler system a try. +
-This is how I connected my 5v IMU pcb to a 3.3v I2C bus on my RaspberryPI: I took as educated guess that 4.4v (5v with a 4148 diode in series) would still be a tolerable power supply voltage for the whole IMU pcb, this would most likely allow all the I2C devices on the IMU pcb to recognize a minimum of 3.08v (4.4 * 0.7) as the lowest reliable logic level 1 tension allowing it to inter-operate with the PI's 3.3v logig levels. I was not able to find if the PI has internal pullups on the I2C bus or if they have to be externally placed so in doubt I put in 10k pullups between the 4.4v power line and the 2 data lines. I was the able to correctly detect the sensors on the IMU pcb.   +
  
 +Tomé como supuesto que 4.4 V (5V con un diodo en serie 1N4148) seguiría siendo una tensión de alimentación tolerable para toda la pcb IMU, lo que probablemente permitiría a todos los dispositivos I2C de la pcb IMU reconocer un mínimo de 3.08 V. (4.4 * 0.7) como la tensión de nivel lógico 1 más baja y fiable, lo que le permitiría interoperar con los niveles lógicos de 3.3V de la Raspberry PI.
 +No pude encontrar si la Raspberry Pi tiene Resistencias de pullups internas en el bus I2C o si tienen que ser colocados externamente, así que por las dudas pongo pullups de 10k entre la línea de alimentación de 4.4V y las dos líneas de datos. Fui capaz de detectar correctamente los sensores de la PCB IMU. 
 ====== Fuentes ====== ====== Fuentes ======
 <!-- If you are copying information from another source, then specify that source --> <!-- If you are copying information from another source, then specify that source -->
 es:howtos:hardware:arm:interfacing_i2c_devices ()