Springen naar inhoud


* * * * * 2 stemmen

I²C-Bus


  • Log in a.u.b. om te beantwoorden
Er zijn 6 reacties in dit onderwerp

#1 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4091 berichten
    Laatst bezocht gisteren, 09:06
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 07 February 2013 - 09:59


I²C-bus

Bijlage  quick2wire.png   67.01K   5 downloads

Geschiedenis

Ze werd in 1979 door Philips ontwikkeld en in 1980 gepatenteerd als betrouwbaar en goedkoop alternatief ter vervanging van een reeks van verschillende andere databussen die destijds werden toegepast in consumentenapparaten.

Het systeem had aanvankelijk enkele nadelen, zoals een lage snelheid (100 kbit/sec) en een geringe storingszekerheid bij lange leidingen (in de praktijk mag de totale lengte van de bus zeker niet langer dan 1m zijn), maar later is de snelheid opgevoerd en zijn er speciale buffer-IC's ontwikkeld om de leidinglengte van de bus te vergroten tot 10talle meters.

Werking

I2C bestaat uit twee data lijnen namelijk SDA (serial data) en SCL (serial clock).
Over de SDA lijn wordt de data verzonden en over de SCL lijn wordt het kloksignaal verzonden.
Beide lijnen worden hoog gehouden door een Pull-up weerstand te gebruiken van ongeveer 1800 Ohm.

Om te kunnen communiceren heeft I2C één master nodig en minimaal één slave.
De master heeft de controle over de I2C bus en genereert het kloksignaal, startbit en stopbit.
De slaves communiceren alleen nadat de master daartoe een verzoek stuurt.
Om te communiceren stuurt de master eerst een Start bit.
Dit bestaat uit een hoog naar laag signaal op de SDA lijn (flankgestuurd) terwijl de SCL lijn hoog is.
Vervolgens stuurt de master een adres + een read/write bit over de I2C lijn.

Het read/write bit houdt in of de master data wil versturen naar de of ontvangen van de slave.
De slave die het aangeroepen adres heeft zal dan reageren met een Acknowledge zodat de master weet dat de aangeroepen IC actief is.
Nu kan de data worden verzonden.
Er wordt één byte per keer verzonden + een Acknowledge van de ontvanger om te bevestigen dat de data is ontvangen.
Nadat de data is verstuurd zal de master het stopbit verzenden: Een laag naar hoog signaal op de SDA lijn (flankgestuurd) terwijl de SCL lijn hoog is.

In latere versies van de I2C-bus zijn er verschillende verbeteringen aangebracht.
Zo is onder andere de maximale snelheid verhoogd naar 400 kbit/sec (Fast-mode) en weer later naar 3,4 Mbit/sec (High-speed mode), is de adresseringsruimte van aangesloten IC's vergroot van 7 naar 10 bit en zijn er voorzieningen gekomen om I2C-bussen met verschillende voedingsspanningen te verbinden.

Bijlage  i2cprincipe.gif   12.48K   5 downloads

Voordelen

De voordelen zijn echter al even belangrijk, wanneer aangewend in geschikte toepassingen.
De belangrijkste voordelen zijn:
  • Lage kostprijs.
  • Eenvoudige bedrading (slechts twee signaalleidingen).
  • 4-draads verbinding (2*datalijn en +/-)
  • je hoeft maar 1 kant te programmeren
  • Weinig soldeerpunten, kleine IC's.
  • Uitgebreid gamma IC's met de I2C interface.
  • Compatibele IC's van andere fabrikanten.
  • Robuuste bouw.
  • Langzame perifere chips kunnen wachtcycli afdwingen.
  • Geïntegreerde multimastermogelijkheid, dat wil zeggen meerdere microcontrollers (masters) kunnen dezelfde bus gebruiken en zelfs onderling communiceren.
  • alle combinaties mogelijk (in, uit, analoog, pwm)
Nadelen

Naast de vele voordelen zijn er ook enkele nadelen:
  • Als er één IC niet goed functioneert in de I2C bus dan kan dit de hele lijn van I2C blokkeren zodat er helemaal geen communicatie meer op de I2C lijnen kan plaatsvinden.
  • I2C is traag bij grotere hoeveelheden data.

Wat is het gezegde in Ontwikkeling van software.: Er zijn vele wegen die naar Rome leiden, de kunst is de goede te vinden.
email : pascalbianca@vbib.be
of email : webmaster@vbib.be
MSN.:: pmhaschuffelers@hotmail.com
Volg ook mijn Raspberry Pi Blog.:: link


Geplaatste afbeelding


Huisregels - Tutorials - VS 2012 Express - Keybinding Posters - Code Tags gebruiken - LessThenDot - MSDN


*** If you like you're solution or appriciate the crew's effort, please click on the facebook like or the Google + button ***


#2 Akineyle

Akineyle

    Starting Developer

  • Leden
  • 21 berichten
    Laatst bezocht 10 Jul 2013 21:44

Geplaatst op 25 February 2013 - 11:32

Mooi uitleg pascalbianca en een tof project,

Ik ben hier zelf ook mee bezig voor een schoolproject in vb.net. Ik zit nog altijd in de startfase en ben nog alles aan het bestuderen.

Er zit hier een pdf bij die me niet echt duidelijk is. Als ik bijvoorbeeld een databit 1 wil zenden moet ik volgende figuur analyseren.

Geplaatste afbeelding
In code zou dit het moeten worden:
Code:
Private Sub SendOne()
		MPUSB.WriteDigitalOutPortD(1)
		MPUSB.Wait(20)
		MPUSB.WriteDigitalOutPortD(3)
		MPUSB.Wait(20)
		MPUSB.WriteDigitalOutPortD(1)
		MPUSB.Wait(20)
End Sub


De sda kan een waarde aannemen van 0 of 1, de scl een waarde van 0 of 2.

Alleen snap ik niet hoe ik aan deze waarden moet komen(1,3,1)?
De eerste waarde kom ik het zelfde uit de sda staat hoog en scl laag =>1, maar dit kom ik ook uit voor waarde 2 en 3.
Het blijft me een raadsel van waar die waarde 3 komt?

grtz

#3 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4091 berichten
    Laatst bezocht gisteren, 09:06
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 25 February 2013 - 14:14

Beste Akineyle,

Bedankt voor je compliment, doet altijd goed om te horen :)
Je zegt het volgende.:

Citeren

Er zit hier een pdf bij die me niet echt duidelijk is.
Is die pdf alleen die ritme diagram of zit er meer bij?

Ik ga ervan uit dat je die 2 datalijnen SDA/SCL beide hoog houd met 10K weerstand.
Dit project van mij loopt dit keer niet via VB maar via Python.

Toch enkele vragen.
Dat project van jou , hoe stuur je die aan, via usb , serieel? Volgens mij usb.
Is dit trouwens om een 7 segment display aan te sturen?

Ik snap helaas niet geheel je vraag, mijn excuses ervoor.
Dat je 3 waarden zult hebben kan ik mij een beetje voorstellen aangezien je op de SDA lijn met 2 signalen werkt omdat die via crossover methode werkt, daarom zie je bij de SDA lijn 2 lijnen lopen , die zich in het midden gaan kruisen.

Wat is het gezegde in Ontwikkeling van software.: Er zijn vele wegen die naar Rome leiden, de kunst is de goede te vinden.
email : pascalbianca@vbib.be
of email : webmaster@vbib.be
MSN.:: pmhaschuffelers@hotmail.com
Volg ook mijn Raspberry Pi Blog.:: link


Geplaatste afbeelding


Huisregels - Tutorials - VS 2012 Express - Keybinding Posters - Code Tags gebruiken - LessThenDot - MSDN


*** If you like you're solution or appriciate the crew's effort, please click on the facebook like or the Google + button ***


#4 Akineyle

Akineyle

    Starting Developer

  • Leden
  • 21 berichten
    Laatst bezocht 10 Jul 2013 21:44

Geplaatst op 26 February 2013 - 00:01

Dag pascalbianca,

Geplaatste afbeelding
Dit is het bordje waar ik momenteel aan bezig ben. Het wordt dus idd aangestuurd via usb.

Voor de moment beperk ik mij enkel tot het aansturen van het 7 segment display, het LCD-display is voor binnen enkele weken.

De pdf is dus gewoon de standaard datasheet die erbij zat: http://www.aurel32.n...lec/pcf8574.pdf hieruit moeten we dus al onze info halen.
Het stuk waar ik momenteel een beetje op vast zit, is hoe ik de SDA en SCL hoog of laag moet zetten, dus maw de info vanuit de datasheet analyseren en vandaar uit berekenen welke bits ik moet doorsturen.
Ik hoop dat ik het een beetje duidelijk uitleg :) .

groeten

#5 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4091 berichten
    Laatst bezocht gisteren, 09:06
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 26 February 2013 - 00:35

Dus had ik gelijk dat het voor een 7 segment display was :D
Was eigenlijk ook niet moeilijk wat ik kwam jou stukje code hier al tegen .: http://pastie.org/pa...stes/401064#3??;)
De SDA lijn oftewel Serial Data Line is de lijn waar je de commando's door stuurt van 0 of 1, de SCL ofwel Serial Clock word gebruikt om de klok snelheid in te stellen waar samen hoog worden gehouden door 10k weerstanden (meest gebruikte).
0 is dus laag en 1 is dus hoog.
Het punt wat je even in de gaten moet houden is welke 7 segment op het testboard van jouw hebt zitten.
Er zijn namelijk 2 soorten in die 7 segment displays te krijgen de CA en de CC versie ofwel CA = Common Anode en CC staat voor Common Cathode.
Ik kan helaas niet op de foto zien wat het voor een testboard is anders kon ik kijken welk soort 7 segment dit was.

Wat is het gezegde in Ontwikkeling van software.: Er zijn vele wegen die naar Rome leiden, de kunst is de goede te vinden.
email : pascalbianca@vbib.be
of email : webmaster@vbib.be
MSN.:: pmhaschuffelers@hotmail.com
Volg ook mijn Raspberry Pi Blog.:: link


Geplaatste afbeelding


Huisregels - Tutorials - VS 2012 Express - Keybinding Posters - Code Tags gebruiken - LessThenDot - MSDN


*** If you like you're solution or appriciate the crew's effort, please click on the facebook like or the Google + button ***


#6 Akineyle

Akineyle

    Starting Developer

  • Leden
  • 21 berichten
    Laatst bezocht 10 Jul 2013 21:44

Geplaatst op 26 February 2013 - 01:01

Dat is super handige info :) , die pastie.org kende ik nog niet (heb ik onmiddellijk in m'n favorieten geplaatst).

Ik zie eindelijk in waar mijn fout zit, in het adresseren is het dus eigenlijk een 7bit adres ipv 8 bit.

Dus als het ware als mijn adres 21 is, moet ik eigenlijk 42 verzenden aangezien de bits 1 plaats opschuiven.

Alvast bedankt voor de super handige info!

grtz

#7 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4091 berichten
    Laatst bezocht gisteren, 09:06
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 26 February 2013 - 01:24

Graag gedaan ;)

Wat is het gezegde in Ontwikkeling van software.: Er zijn vele wegen die naar Rome leiden, de kunst is de goede te vinden.
email : pascalbianca@vbib.be
of email : webmaster@vbib.be
MSN.:: pmhaschuffelers@hotmail.com
Volg ook mijn Raspberry Pi Blog.:: link


Geplaatste afbeelding


Huisregels - Tutorials - VS 2012 Express - Keybinding Posters - Code Tags gebruiken - LessThenDot - MSDN


*** If you like you're solution or appriciate the crew's effort, please click on the facebook like or the Google + button ***





0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


Untitled 1

Hosting provided by Combell
Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
vbib.be - vbnet.be - vbdotnet.be - visualbasic.be