RASP-FT232H-MPSSE-Usage-I2C

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche


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 qui montre comment utiliser le breakout FT232H breakout avec un périphérique I2C (une bibliothèque portée par Adafruit pour utiliser la bibliothèque Python GPIO).

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