{"id":2042,"date":"2021-04-26T02:00:41","date_gmt":"2021-04-26T00:00:41","guid":{"rendered":"https:\/\/www.lammertbies.nl\/comm\/info\/i%c2%b2c-interface-tutorial"},"modified":"2021-05-02T18:20:32","modified_gmt":"2021-05-02T16:20:32","slug":"i2c-bus","status":"publish","type":"page","link":"https:\/\/www.lammertbies.nl\/nl\/comm\/info\/i2c-bus","title":{"rendered":"I\u00b2C interface tutorial"},"content":{"rendered":"\n<ul class=\"wp-block-list\"><li><a href=\"#hist\">Geschiedenis van de I\u00b2C interface<\/a><\/li><li><a href=\"#phys\">Fysieke eigenschappen van de I\u00b2C interface<\/a><\/li><li><a href=\"#star\">Start en stop condities op de I\u00b2C interface<\/a><\/li><li><a href=\"#data\">Dataoverdracht met I\u00b2C<\/a><\/li><li><a href=\"#sync\">Synchronisatie en arbitrage<\/a><\/li><\/ul>\n\n<h2 class=\"wp-block-heading\" id=\"hist\">Geschiedenis van de I\u00b2C interface<\/h2>\n\n<p>In de late zeventiger jaren van de vorige eeuw begonnen kleine microprocessors en digitaal werkende ge\u00efntegreerde circuits langzaam taken over te nemen van analoge circuits in consumenten producten zoals televisies. Philips\u2014\u00e9\u00e9n van de grote fabrikanten van consumentenelektronica\u2014zocht naar een interface die zou kunnen worden gebruikt om <strong>IC<\/strong>s met elkaar te laten communiceren via een goedkope low-cost verbinding op niet al te extreme snelheden. De gebruikelijke methode van <em>inter-IC communicatie<\/em> op dat moment was via een parallelle <b>8<\/b> bit brede bus. Deze busstructuur\u2014die ook gebruikt wordt om geheugen en randapparatuur te verbinden met een <strong>CPU<\/strong>\u2014benodigt niet alleen acht datalijnen om de gegevens over te dragen, maar ook verscheidene lijnen voor het addresseren van specifieke randapparatuur <strong>IC<\/strong>s. Philips onderzocht de mogelijkheid om de hoeveelheid benodigde printplaat oppervlakte te beperken voor deze bussen evenals de ermee gemoeid gaande kosten door het aantal communicatielijnen te reduceren tot twee. Deze inter-IC bus werd <strong>IIC<\/strong> of <strong>I\u00b2C<\/strong> genoemd en werd wijd ge\u00efmplementeerd in situaties waarbij kosten en afmetingen reductie belangrijker waren dan datasnelheid.<\/p>\n\n<p>Het lukte Philips om het aantal datalijnen van de <strong>I\u00b2C<\/strong> bus te reduceren door om te schakelen van parallelle naar synchroon seri\u00eble communicatie. De <strong>I\u00b2C<\/strong> bus heeft slechts twee lijnen waarbij \u00e9\u00e9n <strong>SDA<\/strong> genoemd wordt en de databits overdraagt en de tweede de naam <strong>SCL<\/strong> gekregen heeft en dient als kloksignaal. De berichten die worden verzonden over de <strong>I\u00b2C<\/strong> bus bevatten adressen die bepalen welk apparaat er op moet reageren. De <strong>I\u00b2C<\/strong> bus is zodanig ontworpen, dat het toegestaan is veel ge\u00efntegreerde circuits van verschillend model en ontwerp met elkaar te verbinden. Kleine filters aan de ingangszijde van de ontvanger van de <strong>IC<\/strong>s zijn ge\u00efmplementeerd om storingen te reduceren, en er zijn mogelijkheden dat tragere <strong>IC<\/strong>s de communicatie voor een korte tijd kunnen vertragen. Hoewel de eerste toepassing van de I\u00b2C in televisies was om audio- en videosignalen te regelen wordt de bus nu breed toegepast in allerlei besturings- en signaalverwerkingsapplicaties, bijvoorbeeld in de <a href=\"https:\/\/www.lammertbies.nl\/nl\/comm\/cable\/vga-monitor\">VGA interface<\/a> of <a href=\"https:\/\/www.lammertbies.nl\/nl\/comm\/cable\/hdmi\">HDMI interface<\/a> om video mode instellingen tussen de video controller en de aangesloten monitor uit te wisselen. Dit brede succes is voornamelijk te danken aan de veelzijdigheid van de bus.<\/p>\n\n<ul class=\"wp-block-list\"><li>Elke deelnemer op de <strong>I\u00b2C<\/strong> bus heeft zijn eigen unieke adres<\/li><li>Communicatie vindt plaats in <em>master-slave mode<\/em>, waarbij het ontwerp meerdere masters op \u00e9\u00e9n bus toestaat<\/li><li>Collision detection mechanismen zijn aanwezig om te voorkomen dat meer dan \u00e9\u00e9n apparaat op een gegeven moment de bus gebruikt<\/li><li>Communicatie tussen master en slave is <em>bi-directioneel<\/em><\/li><li>Meerdere snelheden zijn mogelijk. Huidige implementaties staan snelheden van <b>100<\/b>, <b>400<\/b> en <b>3400<\/b> kbps toe. Deze datasnelheden dragen achtereenvolgens de namen <em>standard-mode<\/em>, <em>fast mode<\/em> en <em>high-speed mode<\/em>.<\/li><\/ul>\n\n<h2 class=\"wp-block-heading\" id=\"phys\">Fysieke eigenschappen van de I\u00b2C interface<\/h2>\n\n<p>In het fysieke ontwerp van de <strong>I\u00b2C<\/strong> bus heeft Philips een datalijn <strong>SDA<\/strong> en een kloklijn <strong>SCL<\/strong> gedefinieerd. Deze twee lijnen cre\u00ebren een synchrone seri\u00eble bus. Het aantal aan te sluiten apparaten op de bus is slechts gelimiteerd door de maximaal toegelaten capaciteit op de bus van <b>400<\/b> pF. Omdat de meeste <strong>IC<\/strong>s met een <strong>I\u00b2C<\/strong> inteface gebruik maken van low-power <strong>CMOS<\/strong> technologie met een hoge ingangsweerstand kunnen veel <strong>IC<\/strong>s worden verbonden met de <strong>I\u00b2C<\/strong> bus voor de maximale capaciteit is bereikt. Het kloksignaal op de bus wordt gegenereerd door \u00e9\u00e9n van de masters die met de <strong>I\u00b2C<\/strong> bus is verbonden. Als er geen communicatie plaatsvindt worden de <strong>SDA<\/strong> en <strong>SCL<\/strong> lijnen met een pull-up weerstand naar de voedingsspanning getrokken.<\/p>\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.lammertbies.nl\/picture\/i2c_interface.png\" alt=\"\"\/><figcaption>I\u00b2C bus interface schema<\/figcaption><\/figure><\/div>\n\n<p>Voedingsspanningsniveaus zijn flexibel. Het is mogelijk om een <b>5<\/b> VDC voeding voor de bus en componenten te gebruiken, maar zelfs spanningen van minder dan <b>2<\/b> <strong>VDC<\/strong> kunnen worden gebruikt. Hierdoor kan de <strong>I\u00b2C<\/strong> bus worden ge\u00efmplementeerd in vele soorten circuits zonder de noodzaak van een eigen voeding. Level shifters kunnen worden gebruikt wanneer een <strong>I\u00b2C<\/strong> bus twee subsecties bevat met verschillende voedingsspanningen, bijvoorbeeld <b>3,3<\/b> <strong>Volt<\/strong> en <b>5<\/b> <strong>Volt<\/strong>. <strong>I\u00b2C<\/strong> inputs van <em>fast mode<\/em> en <em>high-speed mode<\/em> ICs gebruiken <a href=\"https:\/\/www.lammertbies.nl\/nl\/comm\/info\/schmitt-trigger\">Schmitt-trigger logica<\/a> om de effecten van storingen te verminderen.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"star\">Start en stop condities op de I\u00b2C interface<\/h2>\n\n<p>Alleen masters kunnen dataoverdracht initi\u00ebren op de <strong>I\u00b2C<\/strong> bus. Wanneer een master op de <strong>I\u00b2C<\/strong> bus wenst te communiceren met een slave moet het zich eerst de controle over de bus toe-eigenen. Dit is alleen mogelijk wanneer de bus idle is, dat wil zeggen dat zowel de <strong>SDA<\/strong> als de <strong>SCL<\/strong> lijn hoog zijn. De master cre\u00ebert een <em>START conditie<\/em> om andere apparaten op de <strong>I\u00b2C<\/strong> bus te melden dat het de bus overneemt. Om een START conditie te genereren blijft de kloklijn <strong>SCL<\/strong> hoog, terwijl de master de <strong>SDA<\/strong> lijn omlaag brengt. Dit is een unieke situatie. Tijdens een normale dataoverdracht zal de <strong>SDA<\/strong> datalijn alleen van toestand wijzigen wanneer de SCL kloklijn laag is. Elk apparaat op de <strong>I\u00b2C<\/strong> bus weet dat een nieuwe communicatie sessie start wanneer de datalijn naar laag gaat terwijl de kloklijn nog hoog is. Hiermee is hersynchronisatie mogelijk wanneer er fouten zijn opgetreden in de vorige dataoverdracht en apparaten de synchronisatie zijn kwijtgeraakt.<\/p>\n\n<p>Het einde van een communicatiesessie wordt aangegeven met een <em>STOP conditie<\/em>. De STOP conditie wordt gegenereerd door de <strong>SDA<\/strong> datalijn hoog te maken terwijl de kloklijn <strong>SCL<\/strong> ook hoog is. Net als bij de START conditie kan deze verandering van de <strong>SDA<\/strong> lijn niet plaatsvinden tijdens een normale dataoverdracht en aangesloten <strong>IC<\/strong>s kunnen hun interne communicatielogica zo resetten wanneer de vorige transfer in een fout is ge\u00ebindigd. Nadat de STOP conditie is gegenereerd wordt de <strong>I\u00b2C<\/strong> bus geacht vrij te zijn voor een nieuwe communicatiesessie wanneer een gedefinieerde tijd is verstreken. Deze tijd is afhankelijk van de bussnelheid.<\/p>\n\n<p>Meerdere herhaalde START condities kunnen voorkomen wanneer een START conditie wordt gegenereerd zonder een STOP conditie die de voorgaande transfer sessie be\u00ebindigd. Na een herhaalde START conditie blijft de bus bezet en daarom kan deze situatie in het algemeen worden gezien als een normale START conditie.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"data\">Dataoverdracht met I\u00b2C<\/h2>\n\n<p>Tussen de START en STOP condities vindt de dataoverdracht plaats. De eenheid van de datatransfer op de <strong>I\u00b2C<\/strong> bus is de byte. Data wordt van de master naar de slave overgedragen, of terug naar de master in bytes. Het eerste byte in elke dataoverdracht is het adres van de slave. Slechts zeven van de acht bits in het adresbyte worden gebruikt om het slave adres de defini\u00ebren. Het laagste orde bit geeft aan of het een lees of schrijfopdracht is. Een laag bit geeft een schrijfopdracht aan, terwijl een hoog bit een leesverzoek inhoudt. Bij de dataoverdracht wordt het meest significante bit het eerst verstuurd.<\/p>\n\n<p>Tijdens de dataoverdracht wijzigt de master de toestand van de kloklijn <strong>SCL<\/strong> periodiek van hoog naar laag en terug. Data op de <strong>SDA<\/strong> lijn mag alleen worden gewijzigd wanneer de <strong>SCL<\/strong> lijn in de laag toestand is. Nadat de <strong>SDA<\/strong> lijn is gewijzigd naar de gewenste bit waarde wordt de <strong>SCL<\/strong> lijn weer hoog gemaakt om aan de andere <strong>IC<\/strong>s op de <strong>I\u00b2C<\/strong> bus te melden dat er een geldig data bit aanwezig is op de lijn. <strong>IC<\/strong>s op de <strong>I\u00b2C<\/strong> bus hebben vaak een zeer gelimiteerd geheugen, logica en snelheid. Daarom moet elke verzonden byte worden bevestigd door de ontvanger. Wanneer een master een byte heeft verzonden zendt het een negende klokpuls waar tijdens de bevestiging plaats zou moeten vinden. Zoals al eerder gezegd wordt de hoog status van de <strong>SDA<\/strong> lijn verzorgd door een pull-up weerstand. De slave moet de <strong>SDA<\/strong> lijn omlaag trekken tijdens de negende klokpuls. Wanneer dit niet gebeurt en in plaats daarvan blijft de <strong>SDA<\/strong> lijn hoog, weet de master dat een fout is opgetreden tijdens de dataoverdracht.<\/p>\n\n<p>Wanneer een slave bezig is met een opdracht, of eenvoudigweg zeer langzaam in zijn functioneren en het kan niet een volgende byte ontvangen voor de vorige is verwerkt, dan kan de periode na het negende bevestigingsbit worden gebruikt om de master te laten wachten. Opnieuw is hier de logica om de master af te remmen heel eenvoudig. Wanneer de master een nieuw byte wenst te verzenden moet de master de <strong>SCL<\/strong> lijn naar de laag toestand brengen. De master wijzigt daarna de <strong>SCL<\/strong> lijn naar zijn hoog toestand door zijn uitgang in hoge impedantie te schakelen. Normaal zal de pull-up weestand de toestand van de <strong>SCL<\/strong> lijn naar hoog brengen, maar wanneer de slave de communicatie wil vertragen trekt het eenvoudigweg de <strong>SCL<\/strong> lijn naar de lage toestand voor de periode die het nodig heeft om zijn voorgaande activiteiten te be\u00ebindigen. De master kan alleen de dataoverdracht continueren wanneer het detecteert dat de <strong>SCL<\/strong> lijn weer in de hoge toestand is. Hiermee is een zeer eenvoudige en effectieve methode gecre\u00eberd om langzame slaves met gelimiteerde verwerkings- en geheugencapaciteit te laten communiceren met snellere masters. Wanneer alle bytes zijn ontvangen verwerkt wordt de STOP conditie door de master gegenereerd om de bus vrij te geven voor andere communicatie.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"sync\">Speciale situaties: synchronisatie en arbitrage<\/h2>\n\n<p>E\u00e9n van de krachtige eigenschappen van de <strong>I\u00b2C<\/strong> bus is de mogelijkheid om meer dan \u00e9\u00e9n master op de bus aan te sluiten. Dit kan echter problemen opleveren. Ten eerste genereert elke master zijn eigen kloksignaal. Kloksignaal perioden kunnen onderling verschillen wat synchronisatieproblemen kan opleveren. Bovendien moet een systeem worden ge\u00efmplementeerd om te voorkomen dat meer dan \u00e9\u00e9n master actief is op de bus op elk gegeven moment. Beide problemen worden opgelost door de synchronisatie en arbitrage logica in de <strong>I\u00b2C<\/strong> bus masters.<\/p>\n\n<p>Elke <strong>I\u00b2C<\/strong> master heeft twee interne tellers. E\u00e9n teller wordt gebruikt om de lengte van de hoog periode van de <strong>SCL<\/strong> kloklijn van de <strong>I\u00b2C<\/strong> bus te tellen, de andere wordt gebruikt voor het tellen van de lengte van de lage toestand op de <strong>SCL<\/strong> lijn. Wanneer er slechts \u00e9\u00e9n master op de bus aanwezig is bepalen deze twee tellers samen de klokfrequentie. Wanneer twee of meer <strong>I\u00b2C<\/strong> masters parallel zijn verbonden kan het voorkomen dat deze tellers niet op dezelfde snelheid lopen. Dit is waar synchronisatie zijn werk doet. Zoals al eerder beschreven wordt de <strong>SCL<\/strong> kloklijn van de <strong>I\u00b2C<\/strong> bus naar de hoge toestand getrokken door een pull-up weerstand die met de voedingsspanning is verbonden. Beschouw nu de situatie waarbij de <strong>SCL<\/strong> lijn in de hoge toestand is, en alle interne tellers van de aangesloten masters tellen tot het moment is bereikt waarop de lijn naar de lage toestand moet worden overgeschakeld. Zodra \u00e9\u00e9n van de masters op de bus de <strong>SCL<\/strong> lijn omschakelt naar de lage toestand detecteren de andere masters deze situatie en resetten hun interne teller, onafhankelijk hoeveel die eigen teller nog had moeten tellen. Ze schakelen daardoor allemaal over naar de lage toestand en de lage periode tellers beginnen met tellen.<\/p>\n\n<p>Na een bepaalde tijd zal de eerste van deze lage toestand tellers zijn eind bereiken en die I\u00b2C master zal beslissen om de <strong>SCL<\/strong> lijn weer naar de hoge toestand te schakelen. Vanwege het fysieke ontwerp van de bus waarbij een pull-up weerstand wordt gebruikt om de hoge toestand te initieren zal de <strong>SCL<\/strong> kloklijn niet naar de hoge toestand schakelen zolang er tenminste \u00e9\u00e9n <strong>I\u00b2C<\/strong> master nog de lengte van de lage toestand aan het tellen is. Wanneer de laatste <strong>I\u00b2C<\/strong> master beslist om de <strong>SCL<\/strong> lijn om te schakelen naar de hoge toestand zal de kloklijn van toestand veranderen. Alle masters met snellere counters hebben gewacht op dit moment waarbij de toestand van de lijn omschakelt, en zij starten allemaal met het tellen van de lengte van de hoge toestand. Met dit systeem van synchronisatie wordt de lengte van de hoge toestand van de <strong>SCL<\/strong> kloklijn bepaald door de snelste <strong>I\u00b2C<\/strong> master die op de bus aangesloten is en de lengte van de lage toestand door de langzaamste deelnemer.<\/p>\n\n<p>Arbitrage is een ander interessant geval. Beschouw de situatie waarbij de <strong>I\u00b2C<\/strong> bus niet actief is en twee of meer masters op hetzelfde moment beslissen om een communicatie sessie te starten. Een procedure is noodzakelijk om te beslissen welke master het recht op de bus krijgt, en welke master moet wachten op de volgende niet actieve periode. Deze procedure wordt <em>arbitrage<\/em> genoemd.<\/p>\n\n<p>We weten al, dat een master een communicatie sessie start met de START conditie. De <strong>SDA<\/strong> lijn wordt naar beneden getrokken terwijl de <strong>SCL<\/strong> kloklijn hoog blijft. Wanneer twee masters dit op hetzelfde moment doen kunnen ze niet detecteren of de START conditie is veroorzaakt door hun eigen actie, of door een andere master. Daarom zullen zijn doorgaan met hun protocol en de eerste databyte verzenden naar de gewenste slave. Elke keer wanneer een bit wordt gezet op de <strong>SDA<\/strong> lijn, controleert de master vervolgens welke waarde aanwezig is op de <strong>SDA<\/strong> lijn. Een master kan alleen de <strong>SDA<\/strong> data lijn naar een lage toestand trekken, maar niet naar een hoge. Wanneer de master een hoog bit wilde verzenden, maar het detecteert een lage waarde op de <strong>SDA<\/strong> lijn nadat de <strong>SCL<\/strong> kloklijn naar de hoge toestand is gegaan, dan weet het dat een andere master ook op datzelfde moment aan het zenden is. De master die als eerste deze situatie detecteert breekt onmiddellijk de communicatie af en zal het later opnieuw proberen. De andere master vervolgt de communicatie en krijgt prioriteit toegewezen over de <strong>I\u00b2C<\/strong> bus. Het kan een behoorlijk aantal bits kosten voordat een master detecteert dat een andere master ook informatie verzendt. Speciaal wanneer beide masters dezelfde slave adresseren\u2014wat resulteert in hetzelfde bitpatroon in het adresbyte\u2014kan het een behoorlijk aantal bits kosten voordat \u00e9\u00e9n van de masters de communicatie afbreekt. Dit heeft echter geen negatieve invloed op de communicatie van de andere masters omdat er geen bits zullen zijn verminkt.<\/p>\n\n<p>Een speciale situatie treedt op met <strong>IC<\/strong>s die zowel als master als slave functioneren op dezelfde <strong>I\u00b2C<\/strong> bus. Wanneer arbitrage plaatsvindt kan het zijn dat de verliezende master feitelijk de slave is waarmee de winnende master contact probeert te maken. In dergelijke gevallen moet de verliezende master direct omschakelen naar slave mode en de reeds verstuurde bits interpreteren om te zien of zijn slave adres door de andere master is geselecteerd.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Geschiedenis van de I\u00b2C interface Fysieke eigenschappen van de I\u00b2C interface Start en stop condities op de I\u00b2C interface Dataoverdracht met I\u00b2C Synchronisatie en arbitrage Geschiedenis van de I\u00b2C interface In de late zeventiger jaren van de vorige eeuw begonnen kleine microprocessors en digitaal werkende ge\u00efntegreerde circuits langzaam taken over te nemen van analoge circuits [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":2000,"menu_order":44,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2042","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>I\u00b2C bus, interface specificaties en tutorial - Lammert Bies<\/title>\n<meta name=\"description\" content=\"De I\u00b2C interface voor Inter-IC communicatie. Tutorial over de I\u00b2C interface specificatie en gebruik.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lammertbies.nl\/nl\/comm\/info\/i2c-bus\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"I\u00b2C bus, interface specificaties en tutorial - Lammert Bies\" \/>\n<meta property=\"og:description\" content=\"De I\u00b2C interface voor Inter-IC communicatie. Tutorial over de I\u00b2C interface specificatie en gebruik.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lammertbies.nl\/nl\/comm\/info\/i2c-bus\" \/>\n<meta property=\"og:site_name\" content=\"Lammert Bies\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/lammertbies\" \/>\n<meta property=\"article:modified_time\" content=\"2021-05-02T16:20:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lammertbies.nl\/picture\/i2c_interface.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@lammertbies\" \/>\n<meta name=\"twitter:label1\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data1\" content=\"12 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lammertbies.nl\\\/nl\\\/comm\\\/info\\\/i2c-bus\",\"url\":\"https:\\\/\\\/www.lammertbies.nl\\\/nl\\\/comm\\\/info\\\/i2c-bus\",\"name\":\"I\u00b2C bus, interface specificaties en tutorial - Lammert Bies\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lammertbies.nl\\\/nl#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lammertbies.nl\\\/nl\\\/comm\\\/info\\\/i2c-bus#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lammertbies.nl\\\/nl\\\/comm\\\/info\\\/i2c-bus#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lammertbies.nl\\\/picture\\\/i2c_interface.png\",\"datePublished\":\"2021-04-26T00:00:41+00:00\",\"dateModified\":\"2021-05-02T16:20:32+00:00\",\"description\":\"De I\u00b2C interface voor Inter-IC communicatie. Tutorial over de I\u00b2C interface specificatie en gebruik.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lammertbies.nl\\\/nl\\\/comm\\\/info\\\/i2c-bus#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lammertbies.nl\\\/nl\\\/comm\\\/info\\\/i2c-bus\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\\\/\\\/www.lammertbies.nl\\\/nl\\\/comm\\\/info\\\/i2c-bus#primaryimage\",\"url\":\"https:\\\/\\\/www.lammertbies.nl\\\/picture\\\/i2c_interface.png\",\"contentUrl\":\"https:\\\/\\\/www.lammertbies.nl\\\/picture\\\/i2c_interface.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lammertbies.nl\\\/nl\\\/comm\\\/info\\\/i2c-bus#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lammertbies.nl\\\/nl\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorials over computer interfacing\",\"item\":\"https:\\\/\\\/www.lammertbies.nl\\\/nl\\\/comm\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Communicatie en interfacing informatie\",\"item\":\"https:\\\/\\\/www.lammertbies.nl\\\/nl\\\/comm\\\/info\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"I\u00b2C interface tutorial\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lammertbies.nl\\\/nl#website\",\"url\":\"https:\\\/\\\/www.lammertbies.nl\\\/nl\",\"name\":\"Lammert Bies\",\"description\":\"Computer Interfacing\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lammertbies.nl\\\/nl#\\\/schema\\\/person\\\/5a6c15bc687da8d8d5ef7407fc62c7ba\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lammertbies.nl\\\/nl?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lammertbies.nl\\\/nl#\\\/schema\\\/person\\\/5a6c15bc687da8d8d5ef7407fc62c7ba\",\"name\":\"Lammert Bies\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\\\/\\\/www.lammertbies.nl\\\/wp-content\\\/uploads\\\/2021\\\/04\\\/lammie.jpg\",\"url\":\"https:\\\/\\\/www.lammertbies.nl\\\/wp-content\\\/uploads\\\/2021\\\/04\\\/lammie.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lammertbies.nl\\\/wp-content\\\/uploads\\\/2021\\\/04\\\/lammie.jpg\",\"width\":537,\"height\":541,\"caption\":\"Lammert Bies\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lammertbies.nl\\\/wp-content\\\/uploads\\\/2021\\\/04\\\/lammie.jpg\"},\"description\":\"is a dad, husband and polyglot. He is developing embedded systems since the eighties. Used machine learning before it had a name. Specializes in interconnecting computers, robots and humans. Was a Google Mapmaker Advocate and speaker on several international Google conferences from 2011 until the plug was pulled on Mapmaker in 2017. Currently spreading artificial intelligence to the wildest locations in production environments. He never stops learning.\",\"sameAs\":[\"https:\\\/\\\/www.lammertbies.nl\",\"https:\\\/\\\/www.facebook.com\\\/lammertbies\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/lammertbies\\\/\",\"https:\\\/\\\/x.com\\\/lammertbies\",\"https:\\\/\\\/bughunter.withgoogle.com\\\/profile\\\/1aaf547a-f30a-4145-b7f7-32259a48fa50\",\"https:\\\/\\\/github.com\\\/lammertb\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"I\u00b2C bus, interface specificaties en tutorial - Lammert Bies","description":"De I\u00b2C interface voor Inter-IC communicatie. Tutorial over de I\u00b2C interface specificatie en gebruik.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lammertbies.nl\/nl\/comm\/info\/i2c-bus","og_locale":"nl_NL","og_type":"article","og_title":"I\u00b2C bus, interface specificaties en tutorial - Lammert Bies","og_description":"De I\u00b2C interface voor Inter-IC communicatie. Tutorial over de I\u00b2C interface specificatie en gebruik.","og_url":"https:\/\/www.lammertbies.nl\/nl\/comm\/info\/i2c-bus","og_site_name":"Lammert Bies","article_publisher":"https:\/\/www.facebook.com\/lammertbies","article_modified_time":"2021-05-02T16:20:32+00:00","og_image":[{"url":"https:\/\/www.lammertbies.nl\/picture\/i2c_interface.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_site":"@lammertbies","twitter_misc":{"Geschatte leestijd":"12 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lammertbies.nl\/nl\/comm\/info\/i2c-bus","url":"https:\/\/www.lammertbies.nl\/nl\/comm\/info\/i2c-bus","name":"I\u00b2C bus, interface specificaties en tutorial - Lammert Bies","isPartOf":{"@id":"https:\/\/www.lammertbies.nl\/nl#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lammertbies.nl\/nl\/comm\/info\/i2c-bus#primaryimage"},"image":{"@id":"https:\/\/www.lammertbies.nl\/nl\/comm\/info\/i2c-bus#primaryimage"},"thumbnailUrl":"https:\/\/www.lammertbies.nl\/picture\/i2c_interface.png","datePublished":"2021-04-26T00:00:41+00:00","dateModified":"2021-05-02T16:20:32+00:00","description":"De I\u00b2C interface voor Inter-IC communicatie. Tutorial over de I\u00b2C interface specificatie en gebruik.","breadcrumb":{"@id":"https:\/\/www.lammertbies.nl\/nl\/comm\/info\/i2c-bus#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lammertbies.nl\/nl\/comm\/info\/i2c-bus"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/www.lammertbies.nl\/nl\/comm\/info\/i2c-bus#primaryimage","url":"https:\/\/www.lammertbies.nl\/picture\/i2c_interface.png","contentUrl":"https:\/\/www.lammertbies.nl\/picture\/i2c_interface.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lammertbies.nl\/nl\/comm\/info\/i2c-bus#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lammertbies.nl\/nl"},{"@type":"ListItem","position":2,"name":"Tutorials over computer interfacing","item":"https:\/\/www.lammertbies.nl\/nl\/comm"},{"@type":"ListItem","position":3,"name":"Communicatie en interfacing informatie","item":"https:\/\/www.lammertbies.nl\/nl\/comm\/info"},{"@type":"ListItem","position":4,"name":"I\u00b2C interface tutorial"}]},{"@type":"WebSite","@id":"https:\/\/www.lammertbies.nl\/nl#website","url":"https:\/\/www.lammertbies.nl\/nl","name":"Lammert Bies","description":"Computer Interfacing","publisher":{"@id":"https:\/\/www.lammertbies.nl\/nl#\/schema\/person\/5a6c15bc687da8d8d5ef7407fc62c7ba"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lammertbies.nl\/nl?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lammertbies.nl\/nl#\/schema\/person\/5a6c15bc687da8d8d5ef7407fc62c7ba","name":"Lammert Bies","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/www.lammertbies.nl\/wp-content\/uploads\/2021\/04\/lammie.jpg","url":"https:\/\/www.lammertbies.nl\/wp-content\/uploads\/2021\/04\/lammie.jpg","contentUrl":"https:\/\/www.lammertbies.nl\/wp-content\/uploads\/2021\/04\/lammie.jpg","width":537,"height":541,"caption":"Lammert Bies"},"logo":{"@id":"https:\/\/www.lammertbies.nl\/wp-content\/uploads\/2021\/04\/lammie.jpg"},"description":"is a dad, husband and polyglot. He is developing embedded systems since the eighties. Used machine learning before it had a name. Specializes in interconnecting computers, robots and humans. Was a Google Mapmaker Advocate and speaker on several international Google conferences from 2011 until the plug was pulled on Mapmaker in 2017. Currently spreading artificial intelligence to the wildest locations in production environments. He never stops learning.","sameAs":["https:\/\/www.lammertbies.nl","https:\/\/www.facebook.com\/lammertbies","https:\/\/www.linkedin.com\/in\/lammertbies\/","https:\/\/x.com\/lammertbies","https:\/\/bughunter.withgoogle.com\/profile\/1aaf547a-f30a-4145-b7f7-32259a48fa50","https:\/\/github.com\/lammertb"]}]}},"_links":{"self":[{"href":"https:\/\/www.lammertbies.nl\/nl\/wp-json\/wp\/v2\/pages\/2042","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lammertbies.nl\/nl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.lammertbies.nl\/nl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.lammertbies.nl\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lammertbies.nl\/nl\/wp-json\/wp\/v2\/comments?post=2042"}],"version-history":[{"count":0,"href":"https:\/\/www.lammertbies.nl\/nl\/wp-json\/wp\/v2\/pages\/2042\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.lammertbies.nl\/nl\/wp-json\/wp\/v2\/pages\/2000"}],"wp:attachment":[{"href":"https:\/\/www.lammertbies.nl\/nl\/wp-json\/wp\/v2\/media?parent=2042"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}