BMA180 ivmeölçer SPI bağımlı veya I 2 C bağımlı olabilir. Her iki otobüs için pinler paylaşılır.
SPI mode I2C mode
---------------------------------------------------
SDI input SDA bidirectional (!)
SDO output ADDR address bit, input
SCLK input SCL input
CSB chip select, input I2C mode select, input
Veri sayfasına göre (bkz. Bölüm 8) , otobüsler arasındaki seçim CSB pimi üzerinden yapılır. CSB düşük olduğunda, cihaz bir SPI bağımlı birimidir. CSB yüksek olduğunda, cihaz bir I 2 C bağımlı birimidir.
İşte endişe duyduğum bir hata modu . Diyelim ki BMA180 SPI veriyolunda. Aynı veriyolunda kendi çip seçimi ile başka bir cihaz da var. Diyelim ki, SPI veri yolu ustası diğer cihazla iletişim kuruyor. BMA180 için CSB yüksektir, bu yüzden I 2 C etkinleştirilmelidir. BMA180, SCL'de (SPI'nin SCLK) saat kenarlarını ve uçarken SDA'da (SPI'nin MOSI) bitlerini görür. Bu bitlerden bazıları BMA180'e geçerli bir I 2 C okuma işleminin başlangıcı gibi görünüyorsa ve BMA180, veriyi çıkarmaya başlar ve mevcut SPI işlemini engeller? BMA180'in tasarımı bunu nasıl önler?
Bu bir merak meselesi. Bu sorunları henüz denemedim. SPI'da BMA180 kullanacağım.
Herhangi bir öneri, içgörü veya referans gerçekten takdir!
Güncelleme. Veri sayfasında bir şey buldunuz (bakınız 7.7.11) . SPI üzerinden BMA180 ile iletişim kurarsa , biti ayarlayarak I 2 C'nin devre dışı bırakılmasını önerir dis_i2c
.
SPI arayüzü kullanıldığında, arızayı önlemek için dis_i2c değerini 1 olarak ayarlamanız önemle tavsiye edilir.
BMA180'de yerleşik EEPROM vardır. Kayıt içeriği EEPROM'da saklanabilir ve açılış sırasında otomatik olarak yüklenebilir. BMA180'in I 2 C'yi tamamen ve her zaman görmezden gelmesini sağlamak mümkündür .
Güncelleme. L3GD20 cayro bir IC, I arasında hisse pimleri olan 2 aa benzer bir şekilde C ve SPI. I 2 C modunu devre dışı bırakmak için biraz ayar yok gibi görünüyor . Bu nedenle, @markrages'ın getirdiği ADXL345 gibi bir OR geçidi gerektirir.
Dikkat et! Bosch, BMA180'i göndermeyi durdurdu ( resmi mektup burada ).