Différences entre versions de « RASP-FT232H-MPSSE-Usage-I2C »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 18 : Ligne 18 :
  
 
== Utilisation logicielle ==
 
== Utilisation logicielle ==
To use I2C with the Adafruit Python GPIO library you'll need to create an '''Adafruit_FT232.I2CDevice''' instance. This object takes as a parameter to its initializer the FT232H object that represents your FT232H chip, and the address of the I2C device to communicate with using the chip.   
+
Pour utiliser le bus I2C avec la bibliothèque Adafruit Python GPIO, il sera nécessaire de créer une instance de la classe '''Adafruit_FT232.I2CDevice'''. Cet objet prend en paramètre l'objet FT232H et l'adresse du périphérique I2C avec lequel le FT232H va communiquer.   
  
For example the code below creates an I2C device for a device with address 0x70:
+
Par exemple, le code suivant crée un périphérique I2C pour communiquer avec un périphérique I2C ayant l'adresse  0x70:
  
 
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
 
import Adafruit_GPIO.FT232H as FT232H
 
import Adafruit_GPIO.FT232H as FT232H
  
# Temporarily disable FTDI serial drivers.
+
# Désactive temporairement le pilote FTDI série.
 
FT232H.use_FT232H()
 
FT232H.use_FT232H()
  
# Find the first FT232H device.
+
# Trouver le premier périphérique FT232H.
 
ft232h = FT232H.FT232H()
 
ft232h = FT232H.FT232H()
  
# Create an I2C device at address 0x70.
+
# Créer un périphérique I2C (utilisant l'adresse 0x70).
 
i2c = FT232H.I2CDevice(ft232h, 0x70)
 
i2c = FT232H.I2CDevice(ft232h, 0x70)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
At this point the I2CDevice instance is ready for reading and writing simple 8 and 16 bit values from registers. The interface on the I2CDevice class for reading and writing is exactly the same as the [https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/blob/master/Adafruit_I2C/Adafruit_I2C.py interface on the Raspberry Pi Python I2C code], so you can examine code which is written for the Pi and use it with very few changes on the FT232H.
+
A ce point, l'instance de la classe I2CDevice est prête à lire et écrire des valeurs 8 et 16 bits depuis/dans les registres. L'interface de la classe I2CDevice permettant de lire et écrire des données est exactement la même que [https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/blob/master/Adafruit_I2C/Adafruit_I2C.py l'interface Python I2C code pour Raspberry Pi]. Cela permet d'adapter très facilement le code I2C pour Raspberry-Pi vers le breakout FT232H.
  
For example to read a 16 bit register value and write an 8 bit register value to the device the code might look like:
+
Par exemple, pour lire la valeur d'un registre 16 bits et écrire une valeur dans un registre 8 bit, vous pourriez lire un code comme celui-ci:
  
 
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
# Read a 16 bit unsigned little endian value from register 0x01.
+
# Lecture d'un valeur 16 bit non-signé (little endian) depuis le registre 0x01.
 
response = i2c.readU16(0x01)
 
response = i2c.readU16(0x01)
  
# Write a 8 bit value 0xAB to register 0x02.
+
# Ecrire une valeur 8 bits (0xAB) dans le registre 0x02.
 
i2c.write8(0x02, 0xAB)
 
i2c.write8(0x02, 0xAB)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
That's all there is to using I2C with the Adafruit Python GPIO library and the FT232H board!
+
C'est tout ce qui nous avons besoin de savoir pour utiliser le bus I2C du FT232H à l'aide de la bibliothèque Adafruit Python GPIO!
  
You might also be interested in [https://learn.adafruit.com/adafruit-ft232h-with-spi-and-i2c-libraries this tutorial which shows how to use the FT232H breakout with some Adafruit I2C devices] that have been ported to use Adafruit's Python GPIO library.
+
Vous pourriez également être intéressé dans le tutoriel [https://learn.adafruit.com/adafruit-ft232h-with-spi-and-i2c-libraries this tutorial which shows how to use the FT232H breakout with some Adafruit I2C devices] that have been ported to use Adafruit's Python GPIO library.
  
 
== Autre bibliothèque I2C ==
 
== Autre bibliothèque I2C ==

Version du 19 mars 2017 à 17:11


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

FT232 en mode Bus I2C

Le protocole I2C est un autre protocole de communication populaire utilisé par de nombreux senseurs et périphériques. I2C est plus complexe et parfois plus lent que SPI mais il ne nécessite que deux lignes de données (et la masse), ce qui le rend désirable dans de nombreuses situations. Nous avons de la chance, le composant MPSSE du FT232H implémente également le protocole I2C , ce qui vous permet de dialoguer avec les périphériques I2C via un breakout FT232H.

Pour utiliser le bus I2C avec la bibliothèque Adafruit Python GPIO du FT232H, il sera nécessaire de placer notre circuit dans un état spécial. Plus particulièrement, vous aurez besoin de raccorder les broches D1 et D2 ensemble à l'aide d'un fil. Une des broches sera "lue" par le F232H (comme une entrée), et l'autre sera utilisée comme sortie. Lorsqu'elles sont raccordées ensemble, ces deux broches forme le canal SDA (ligne de donnée) du bus I2C.

La broche D0 (seule) deviendra le signal d'horloge SCL du bus I2C.

La deuxième chose qu'il sera nécessaire de faire avec le circuit, c'est d'ajouter des résistance pull-up de SDA et SCL du FT232H vers 3.3 ou 5 volts. Cela est nécessaire car le FT232H, conçu pour utilisation très générale, n'inclus pas ces résistances pull-up.
Nous recommandons l'utilisation de résistances de 4.7 kilo-ohms.

Pour résumer, vous devrez opérer à la configuration matérielle suivante:

  • Connectez les broches D1 et D2 du FT232H ensemble (à l'aide d'un fil). Cette connexion représente la ligne SDA du bus I2C.
  • Ajouter une résistance de 4.7 kilo-ohms entre la ligne SDA (ligne de donnée, les broches D1 et D2) vers le +5V du FT232H.
  • Ajouter une résistance de 4.7 kilo-ohms entre la ligne SCL (ligne d'horloge, la broche D0) vers le +5V du FT232H.

Utilisation logicielle

Pour utiliser le bus I2C avec la bibliothèque Adafruit Python GPIO, il sera nécessaire de créer une instance de la classe Adafruit_FT232.I2CDevice. Cet objet prend en paramètre l'objet FT232H et l'adresse du périphérique I2C avec lequel le FT232H va communiquer.

Par exemple, le code suivant crée un périphérique I2C pour communiquer avec un périphérique I2C ayant l'adresse 0x70:

import Adafruit_GPIO.FT232H as FT232H

# Désactive temporairement le pilote FTDI série.
FT232H.use_FT232H()

# Trouver le premier périphérique FT232H.
ft232h = FT232H.FT232H()

# Créer un périphérique I2C (utilisant l'adresse 0x70).
i2c = FT232H.I2CDevice(ft232h, 0x70)

A ce point, l'instance de la classe I2CDevice est prête à lire et écrire des valeurs 8 et 16 bits depuis/dans les registres. L'interface de la classe I2CDevice permettant de lire et écrire des données est exactement la même que l'interface Python I2C code pour Raspberry Pi. Cela permet d'adapter très facilement le code I2C pour Raspberry-Pi vers le breakout FT232H.

Par exemple, pour lire la valeur d'un registre 16 bits et écrire une valeur dans un registre 8 bit, vous pourriez lire un code comme celui-ci:

# Lecture d'un valeur 16 bit non-signé (little endian) depuis le registre 0x01.
response = i2c.readU16(0x01)

# Ecrire une valeur 8 bits (0xAB) dans le registre 0x02.
i2c.write8(0x02, 0xAB)

C'est tout ce qui nous avons besoin de savoir pour utiliser le bus I2C du FT232H à l'aide de la bibliothèque Adafruit Python GPIO!

Vous pourriez également être intéressé dans le tutoriel this tutorial which shows how to use the FT232H breakout with some Adafruit I2C devices that have been ported to use Adafruit's Python GPIO library.

Autre bibliothèque I2C

Note that there are other libraries you might consider using for I2C communication with the FT232H. You can use libmpsse to speak the I2C protocol from C or Python code. See this guide on using a color sensor for more information and code to use libmpsse and an I2C device.

Another alternative is the libMPSSE-I2C library that uses the FTDI D2XX drivers. See this application note for more details on using libMPSSE-I2C.

Enumeration des périphériques I2C

You can run the following script to enumerate all possible I2C devices, kind of like the i2cdetect command on Linux. The script works by enumerating each possible I2C address (ignoring a few reserved ones) and checking if any device on the bus sends an ACK for the address.

import Adafruit_GPIO.FT232H as FT232H

# Temporarily disable FTDI serial drivers.
FT232H.use_FT232H()

# Find the first FT232H device.
ft232h = FT232H.FT232H()

print 'Scanning all I2C bus addresses...'
# Enumerate all I2C addresses.
for address in range(127):
	# Skip I2C addresses which are reserved.
	if address <= 7 or address >= 120:
		continue
	# Create I2C object.
	i2c = FT232H.I2CDevice(ft232h, address)
	# Check if a device responds to this address.
	if i2c.ping():
		print 'Found I2C device at address 0x{0:02X}'.format(address)
print 'Done!'

Source: Adafruit FT232H Breakout Add a serial protocol 'swiss army knife' to your computer and talk directly to devices with SPI, I2C, serial UART, GPIO's, and more!
Créé par Toni DiCola pour AdaFruit Industries.

Traduction réalisée par Meurisse D pour MCHobby.be.

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.

Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com