Ultrasone meetlint (4 / 13 stap)

Stap 4: een paar woorden over I²C bus


ik weet er is een heleboel informatie over het protocol van de I²C daar op het web, nog steeds zal ik u een korte beschrijving, om de instructable meer compleet.

Korte beschrijving van de bus
De I²C bus is een 8 of 10 bits, bidirectionele seriële communicatieprotocol, met overdrachtsnelheden van 100 KHz, 400 KHz of onlangs 1 MHz (plus voor gebruik met Fast-modus). De bus bestaat uit twee bidirectionele signalen (gewoonlijk genoemd SCL - seriële klok, SDA - seriële data). Deze signalen verbinden met elk apparaat van de I²C in onze schakeling die we communiceren willen met.
Thhe SDA lijn wordt gebruikt voor de overdracht van seriële gegevens, de SCL-regel verzekert dat de communicatie is in sync, in beide richtingen. Naast deze twee moeten ook de I²C meester en de I²C slaven te delen een gemeenschappelijke grond.

De pinnen van de apparaten die zijn aangesloten op een I²C bus zijn open collector, of open-afvoer. Dit betekent, dat zij de drijvende communicatielijn kunnen brengen op de grond, en zij kunnen vrij om te stijgen naar het niveau waarop ze bent trok.
Het is zeer belangrijk om te begrijpen, dat de term 'release' betekent niet dat een '1', het betekent alleen, dat de meester of de slaaf de communicatielijn is niet rijden. Hebben gezegdd dat, moeten we ervoor zorgen, dat de lijn is niet steeds laag zijn, wanneer het is niet verondersteld om. Dit kan worden gedaan door het installeren van een pull-up aan de rail van de macht van het circuit. Wij niet moet (of mag) zetten een pull-up naar elke slaaf in het circuit, dat dat een parallelle aansluiting, die betekenen zou - als teveel weerstanden zijn geïnstalleerd - zou niet toestaan dat de pin om de regel naar beneden.
De waarde van de weerstand gebruikt hoeft te zijn van een bepaalde waarde, meestal een paar k-ohm weerstand zal prima werken.

Het protocol van de I²C is master-slave gebaseerd. Een master beslist wanneer de slave-apparaten communiceren, door middel van enkele gegevens die worden verzonden op de I²C bus. In ons geval moet de PIC worden geconfigureerd als een slaaf, aangezien de Arduino zal de meester in het circuit. Een slaaf is meestal een sensor, een spaander van het geheugen, of om het even wat die vermag de functies van een microcontroller uitbreiden.
Alle transmissie worden getriggerd door de meester, de slaven niet communiceren iets, tenzij de meester vraagt hen om dit te doen. Juiste I²C bus werking wordt ervan uitgegaan, dat een enkele slaaf adres is alleen herkend door een enkele slaaf. Als een slaaf is geselecteerd, mogen alle andere slaven zwijgen.
De kapitein is verantwoordelijk voor alle soorten tijdsinstellingen - in de meeste systemen (single-master) de clock lijn wordt gemanipuleerd alleen door de meester. Dit betekent dat is de snelheid van de transmissie ingegeven door de I²C kapitein van het circuit.

• Wanneer een meester wil een overdracht starten, het voert een reeks start op de I²C bus. Een start-voorwaarde treedt op, wanneer de SDA-lijn op laag niveau gebracht is terwijl de SCL-lijn hoog is.
• Wanneer de meester wil signaal, dat de overdracht voorbij is, het verzendt een stop-voorwaarde, oftewel een stijgende rand op SDA terwijl de SCL hoog is.
• Gegevens wordt verzonden in het tijdsbestek tussen deze twee gebeurtenissen. Voor een data-bit om geldig te zijn, moet de SDA waarde, niet wijzigen terwijl de SCL hoog is. Als dat zo is, de reeks bits is geïnterpreteerd als een stop of conditie, en leidt tot communicatiefouten.

In mijn geval, wordt gegevensoverdracht gedaan in groepen van 8 bits. De gegevens die - na de big endian patroon - is geklokt uit met het meest significante bit eerst. Na elke 8-th-bit krijgt geklokt uit, moet de slaaf signaal terug voor de doorgifte naar een succesvolle gegevensuitwisseling worden beschouwd. Dit signaal wordt genoemd een 'erkennen', waarbij ervan wordt uitgegaan, dat de slaaf brengt de SDA-lijn naar beneden op de 9-th kloksignaal op de SCL-regel.

Zoals ik eerder al noemde, elke slaaf moet een unieke slave-adres hebben. Dit adres slaaf is 7 bits lang, wat betekent dat, dat een totaal van 128 apparaten kan worden aangesloten op de I²C bus, zonder enige vorm van geknoei met het circuit.
Als het gaat om aan te pakken, de kapitein stuurt 8 bits, adres 7 die daarvan de slaaf zijn bits, de laatstgenoemde bepaling of de master wil lezen of schrijven in de apparaten van de interne registers van slaaf. Dit laatste stukje staat bekend als de R/W-bit, een '0' op deze bitfield betekent een schrijven, een '1' op deze bitfield betekent een te lezen.
Bijvoorbeeld als men wenst te schrijven naar een slave-apparaat met een slaaf adres van 0b1010000, moet hij 0b1010000 verzenden nadat de eerste voorwaarde hebt gestart. Als een meester wil lezen van hetzelfde apparaat, moet de eerste byte na de start-voorwaarde 0b10100001. Deze, omgezet in hexadecimale geven 0xA0 en 0xA1. Datasheets geven normaal gesproken het adres van de slaaf in hexadecimale notatie.

In sommige gevallen, kan de fabrikant de gebruiker meer toe te voegen voor dezelfde chip naar de I²C bus: dit wordt bereikt doordat de gebruiker om te bepalen van een aantal slave adres bits. Bijvoorbeeld, heeft een I²C EEPROM meestal de onderste 3 bits van het adres van haar slaaf dat op pennen. Trekken deze hoge betekent een '1' op de corresponderende de slaaf adres byte, betekent trekken ze naar de grond een '0' op die locatie.

Er zijn situaties, waar de meester gewoon te snel is voor de slaaf, het wil lezen sneller, dan de slaaf aankon. Om te voorkomen dat dit soort situaties, kunnen de I²C slave apparaat fabrikanten bouwen in een functie, waarmee de slaaf te trekken van de SCL-lijn laag, terwijl ze bezig zijn het uitvoeren van de opdrachten van de meester. Als de slaaf is klaar met meten, lezing, sensing, etc. - vrijkomen het van de SCL-lijn, waardoor de pull-ups de hoge lijn te volgen. De meester zal niet een andere overdracht, starten, tenzij zij de hoge SCL-lijn ziet. Dit is vaak genoemd 'klok uitrekken'.

Voorbeeld van een START-voorwaarde, gevolgd door een lees opdracht van slaaf 0xA3. De leesbewerking is geldig, we nu dit, uit de ACK (erkennen) signaal door de slaaf.

Ik zoomde in een beetje op het einde van de dezelfde gegevensoverdracht te vangen twee meer signalen, de halte en de NACK. Deze bitpatroon plaatsvindt aan het einde van een lees sequentie.

Helaas heb ik niet kunnen vangen klok uitrekken van fasen, maar als ik zie een tijdens het werken met de PIC I²C, zal ik ervoor te laten zien aan de lezers.

Dus, we net geleerd dit en dat over de seriële communicatieprotocol we, nu laten we gebruiken zullen in actie zien. Eerst laat me presenteren u een voorbeeld van bestuur, een PC hulpmiddel en een microcontroller-programma.

Gerelateerde Artikelen

Digitale ultrasone meetlint

Digitale ultrasone meetlint

Dit instructable zal tonen hoe te bouwen van een digitale lintmeter met behulp van een HC - SR04 ultrasone afstandssensor en een Arduino Pro Mini. Dit werd geïnspireerd door elecronics, voor iedereen is instructable die kan hier worden gevonden.Ik he
300-voet Pocket meetlint

300-voet Pocket meetlint

hoeveel 300-voet tape maatregelen passen in uw zak en kosten onder $2?Ik had een zeer mooie, enigszins enorme, open reel-type 300-voet landmeter de lintmeter die goed totdat op een dag werkte het wond grappig en ik heb een paar vruchteloos uren tryin
HDD klok - persistentie van de visie

HDD klok - persistentie van de visie

1. een flink POV klokken die er zijn, waarom is dit speciale?Nou, vooral omdat het is de mijne. Er zijn een flink aantal POV klokken die er op het web met behulp van allerlei display mechanismen, chassis, controllers. Enerzijds die heb ik besloten om
Meten van vak (afstand sensing) met behulp van ultrasone Sensor ~ de gemakkelijkste

Meten van vak (afstand sensing) met behulp van ultrasone Sensor ~ de gemakkelijkste

Ooit wilde meten zonder schaal of meetlint?Meet afstand zonder gedoe met dit kleine apparaat!Zeer nauwkeurige *Voor meer Intresting projecten bezoeken: www.miymakers.comFacebook: www.facebook.com/miymakersStap 1: Hoe het werkt 'HOE HET WERKT?Een spec
LinKit een ultrasone afstand meting apparaat

LinKit een ultrasone afstand meting apparaat

In dit instructable, ik zal u tonen hoe te een ultrasone sensor (HC-SR04) combineren met een Linkit één te maken van een afstand meettoestel. Dit apparaat kan een maximale woede tot 2 meter meten, dit is echt leuk project om te ontwerpen. U kunt dit
LinkIt één tutorials - #11 HC-SR04 ultrasone afstandssensor

LinkIt één tutorials - #11 HC-SR04 ultrasone afstandssensor

Voor deze tutorial ga ik een HC-SR04 ultrasone afstandssensor een LinkIt één board interface.De HC-SR04 werken met behulp van een echo systeem - een kleine puls van hoge frequentie ruis (ver boven menselijke gehoor bereik) wordt uitgezonden van één k
DIY digitale meetlint

DIY digitale meetlint

Hey iedereenIk hoop vandaag om je te leren alles over ultrasone sensoren en hopelijk aan het eind heb je een mooie beetje digitale meetlint van uw eigen om te gebruiken als u aub.Geniet vanStap 1: Onderdelenlijst Dit is mijn tweede versie van dit pro
Hoe lees ik een meetlint

Hoe lees ik een meetlint

Leren hoe om te lezen een meetlint is een belangrijke vaardigheid om te leren, of u bent home projects home projecten doen, onderwijzen uw kinderen of leerlingen, of op zoek te krijgen in de ambachtslieden in wat hoedanigheid. Wij hier bij Construct-
Daar tussenin meetlint

Daar tussenin meetlint

Hebben u ooit worstelde om nauwkeurig te meten tussen twee vlakken?Ik heb onlangs is up-fietsen een oude rekken eenheid en die nodig zijn om te meten tussen de bodems van twee behuizingen in de schappen te snijden in de scheidingswand. [Behuizingen z
Besturen van een Motor met behulp van ultrasone sensoren van de afstand (HC-SR04)

Besturen van een Motor met behulp van ultrasone sensoren van de afstand (HC-SR04)

Hallo iedereen! In dit project zullen wij de richting van een motor met behulp van twee ultrasone opgezette sensoren controleren.Als de juiste sensor wordt geactiveerd, zal de motor draaien linksom.Als de linker sensor wordt geactiveerd, zal de motor
Ultrasone afstandsmeter met LCD-scherm van Arduino UNO

Ultrasone afstandsmeter met LCD-scherm van Arduino UNO

In deze tutorial gaan we zien een ander gebruik van de HC-SR04 ultrasone module. In deze module wordt vaak gebruikt op robots en speelgoedauto's te vinden van belemmeringen, maar het kan worden gebruikt voor het meten van afstanden ook.Afstanden geme
Hars meetlint klok

Hars meetlint klok

Wij heb wilde maken van een klok voor geruime tijd nu. We wilde ook proberen molding en het gieten van een object dat een beetje groter was en gedetailleerder zodat we echt de grenzen testen konden van het gebruik van Famowood Glaze vacht als een har
Arduino ultrasone waterniveau Sensor voor espressomachines

Arduino ultrasone waterniveau Sensor voor espressomachines

Ik heb een zeer goede maar mooie oude koffie espressomachine met een uitneembare watertank, het probleem is dat het niet bieden een waarschuwing voor laag waterniveau, licht, dus ik kan niet zo'n niveau voordat u uit water weten! OF op zijn minst zon
Gemakkelijk ultrasone 4-pin sensor controle (hc-sr04)

Gemakkelijk ultrasone 4-pin sensor controle (hc-sr04)

Hallo Instructables,Ik heb wat moeite met mijn goedkoop ultrasone sensor (hc-sr04) en vandaag vond ik een echt eenvoudige oplossing.Het is een echt eenvoudig bewerken van de code van de normale 3pin.Ik voegde de 4 int naar het begin van de code, zoda