Ik heb mij even de tijd genomen om een Python script te maken die de gehele I²C range die mogelijk is te scannen en dan te tonen in de console welk hardware op een adres staat aangesloten.
Het script zend een signaal van een PCF8575 door de I²C-bus en toont dan welk hardware adres hierop reageert, elk andere I²C IC dat op de bus zit en geen PCF8575 bevat word ook gezien en word weer gegeven als overige I²C-IC's.
Python-code.:
#!/usr/bin/python
# Raspberryboard I2C bus scan V0.1
# voor de Raspberry Pi Revision 2
#
# Author : PascalBianca
# Site : http://www.vbib.be
#
# Date : 21/03/2013 tijd.: 01:14 uur.
#
# Bussysteem scannen op hardware aanwezig
#Doe imports
import smbus
import time
import pylcdlib
import os
import random
from time import sleep
from datetime import datetime
from subprocess import *
i2c = smbus.SMBus(1)
i2c_addr4x20 = 0x26
#Signaal code voor PCF8575
#Controleer voor I/0 fouten (geen device aangesloten)
temp = 0x55AA
#Gehele I2C detection reeks.
locations = [0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,
0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77]
print "****************************************************************"
print "* Het bussysteem word gescanned op aangesloten hardware , *"
print "* deze word met een signaalcode voor de PCF8575 aangeroepen. *"
print "* Alle gevonden hardware word getoont en alles wat een PCF8575 *"
print "* bevat word erachter vermeld, indien anders word *"
print "* dit ook vermeld. *"
print "****************************************************************"
b = 0
d = 0
e = 0
for device in locations:
try:
b = b + 1
i2c.write_byte(device,temp)
a = int(device) - 12
devicebyte = int(i2c.read_byte(device))
c = (b * 2.702702702702702)
sleep(0.1)
#temp = signaal code 0x55AA voor de PCF8575 word als 170 getoond.
if devicebyte == 170:
d=d+1
print 'Hardware gevonden op I2C bus met nummer.: ' + str(a) + " ,deze bevat een IC PCF8775"
if devicebyte == 0:
e=e+1
print 'Hardware gevonden op I2C bus met nummer.: ' + str(a) + " ,deze bevat een andere I2C IC."
except:
if device == 'end':
print "Geen unit gevonden op "+ device
exit()
sleep(1)
Resultaat van dit script , als ik deze bij mij test.:

Trek ik 1 van de hardware uit, dan word die niet meer weer gegeven.