Arduino'da birden fazla i2c arabirim cihazını tek bir A4 (SDA) ve A5 (SCL) pimine nasıl bağlayabilirim?


31

Küçük projeme gerçek zamanlı saat modülü eklemek istiyorum. Mevcut i2c 2x16 LCD modülümde hem saati hem de tarihi görüntülemek istiyorum.

Hem i2c arayüzü gerçek zamanlı saat modülü hem de 2x16 LCD modülü, Arduino Uno'da aynı pin A4 (SDA) ve A5 (SCL) kullanır. İnternette saatlerce arama yaptıktan sonra i2c veriyolu birçok seri aygıtı alabilir. Bu mümkündür, çünkü her cihazın kendine özgü bir adresi vardır.

Sorum şu ki, iki i2c arayüz cihazını fiziksel olarak tek bir A4 ve A5'e nasıl bağlayacaksınız? Teşekkürler.


2
Kısa cevap: Paralel olarak bağlayın. SDA'ları birbirine bağlayın ve A4'e ve SCL'leri A5'e bağlayın. Sonra tabii ki bazen yardımcı olan pull-up sorunu var.
SDsolar

Yanıtlar:


32

Bazı insanlar birbirine bağlı şeyleri görselleştirmekte zorlanıyorlar, işte bir resim:

(Hizmet önerisi)

şematik

bu devreyi simüle edin - CircuitLab I2C kullanılarak oluşturulan şematik bir veriyoludur, bu nedenle adlandırılmış sinyaller birbirine bağlanır. Adresleme şeması, mikrodenetleyicinin hangi cihaza konuştuğunu seçmesine izin verir. Arduino'da 10k çekme dirençleri, 5V veya 3.3V pinleri olan "VDD" ye gidiyor.


Merhaba, bu çok basit olabilir, ancak elektronik konusunda yeniyim ve bu sayfayı google search'den indirdim, ne anlama geliyor?
Ciasto piekarz

Referans şemasının, aksi belirtilmediği sürece, bağlantı şeması aynı olması gerektiğine inanıyorum.
KingsInnerSoul,

uC bir Arduino olabilir. SDA pin A4 ve SCL pin A5'tir.
SDsolar

8
@Ciastopiekarz, μC "mikrodenetleyici" için kısa. Yunanca harf μ, mikro için kısaltmadır. Çünkü u size benziyor, birçok insan sadece "uc" yazıyor.
foobarbecue

9

I2C için, tüm bağımlı cihazların farklı cihaz adresleri varsa, tüm SDA pinleri birbirine bağlanmalı ve tüm SCL pinleri birbirine bağlanmalıdır. Bu kadar basit.

Doğal olarak, I2C için gereken şekilde her iki hatta da direnç dirençleri dahil etmelisiniz. Direnç değerlerinin nasıl seçileceği daha önce burada tartışılmıştır .


Cihazlardan biri DS3231 RTC olduğu sürece harici bir çekme gerektirmez.
SDsolar

3
@SDsolar, muhtemelen DS3231'in dahili çekmeceleri olduğu anlamına gelir, bu yüzden bu cihazı kullanarak veri yolu için çekmeceler sağlıyorsunuz. Bu mutlaka iyi bir şey değil, çünkü veri yolu üzerindeki cihaz sayısına bağlı olarak çekme direncini ayarlama özgürlüğünüzü sınırlıyor.
Photon

Benim düşüncelerim tam. Dış çekmeler eklemek, DS3231'deki ile paralel olacaktır ve bu nedenle I2C'nin mutlu olması için yeterli olmayabilir.
SDsolar

@SDsolar, Bunun OP'nin sorusu ya da cevabımla ne ilgisi var? Bu genel bir tartışma sitesi değil. Sadece konu hakkında konuşmak istersen sohbet odamıza katılabilirsin .
Photon

3

İki A4-sda pinini A5-scl'ye (her iki kartta uno-uno'da) bağlayın ve her bir sda-scl hattından gelen direnci 5v'den bağlayın.

görüntü tanımını buraya girin


Yanıt, asıl soruya cevap vermediği için "iki i2c-arayüz cihazını fiziksel olarak tek bir A4 ve A5'e bağla" şeklinde oy kullandı.
Oleg Mazurov


Gerilim paylaşımı doğru değil mi?
clankill3r

0

I2C, Philips tarafından geliştirilen bir veri aktarım protokolüdür. İki telli arabirim olarak da bilinir, çünkü iletişim için iki tel kullanır. SCL-Seri Saat Hattı. SDL-Seri Veri Hattı. Bu nedenle, i2c cihazlarının karşılık gelen pimlerini, bir VDD çekme direnciyle birlikte kullandığınız SCL'ye ve mikro kontrolörün SDL pinlerine bir eeprom veya lcd bağlamanız gerekir. Bağlanan her cihaz için 7 bit adresli bir adres protokolü olduğundan, 2 ^ 7 farklı cihaza kadar adres verebilirsiniz. Ancak normalde bir ikincil cihazın I2C adresi, geliştirici tarafından kablo bağlantısı yapılacak bazı bitlerle önceden tanımlanmıştır. Bu, aynı veri yolu üzerinde aynı tür aygıtları farklı kablolu adres bölümü ile bağlamaya yardımcı olur.


1
Hepsi doğru, ancak BH1750 ışık şiddeti birimi gibi, birden fazla istiyorsanız, emmek. 4 tanesini istiyorum ve I2C dual-bus anahtarlama ile uğraşmak istemiyorum. Ayrıca, DS3231 gibi bazı cihazların dahili çekimleri var, böylece harici çekmeler bunlarla paralel olacak.
SDsolar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.