De I2C bus op de Raspberry Pi kun je gebruiken voor het aansluiten van verschillende sensoren en displays. Wanneer je gebruik maakt van een OLED scherm dan zul je merken dat deze scherm niet echt snel zijn met het verversen van het scherm. De oorzaak hiervan is de snelheid van de I2C bus, deze staat standaard onder Raspbian ingesteld op 100 Kbit/s.
Met behulp van het Raspbian config.txt bestand kun je de snelheid van de I2C bus aanpassen tot maximaal 400 Kbit/s. Hierdoor zal het verwerken van gegevens naar bijvoorbeeld een OLED scherm stukken sneller gaan.
BCM2835 I2C specificaties
Volgens de BCM2835 ARM Peripherals specificaties is de Raspberry Pi voorzien van een Fast-mode 400Kb per seconde driver. Hoewel als defaults 100Kb/s is ingesteld kunnen we dus maximaal gebruik maken van 400Kb/s.
De I2C-bus werd in 1979 door Philips ontwikkeld en in 1980 gepatenteerd als een betrouwbaar en goedkoop alternatief voor een reeks van andere databussen die destijds werden toegepast in consumentenapparaten.
I2C bus snelheid aanpassen in config.txt
Vanzelfsprekend dien je de I2C bus te hebben geactiveerd op de Raspberry Pi, dit kun je doen met behulp van de raspi-config
commandline tool. Nadat I2C is geactiveerd kunnen we de bussnelheid gaan aanpassen.
Open met behulp van de nano-editor het config.txt bestand in de map /boot:
sudo nano /boot/config.txt
Ga op zoek in het bestand naar onderstaande regel:
dtparam=i2c_arm=on
Vervang deze regel door:
dtparam=i2c_arm=on,i2c_arm_baudrate=400000
Met het aangepast commando wordt I2C geactiveerd en de bussnelheid op 400 Kbit/s ingesteld.
Gebruik CTRL-X, Y, Enter om de wijzigingen op te slaan in het config.txt bestand.
Herstart hierna de Raspberry Pi om de I2C bussnelheid wijziging actief te maken, hiervoor kun je gebruikmaken van het commando:
sudo reboot -h 0
Na de herstart is wijziging actief en zal je merken dat de I2C bus aanzienlijk sneller werkt.
Mocht 400 Kbit/s toch te snel zijn voor een aangesloten device dan kun je de snelheid naar beneden bijstellen naar bijvoorbeeld 300 of 200 Kbit/s.
Is het een idee dat je je tips in een categorie/skill level stopt? het is niet voor iedereen om wijzigingen aan te brengen in de boot config (er kan iets fout gaan waardoor het systeem niet meer boot — ben al een paar keer bij een systeem gekomen waar dat het probleem was.)
Goed idee, ga ik fixen!
Dank u, dank u ?