BMA180 एक्सेलेरोमीटर या तो SPI दास या I 2 C दास हो सकता है। दोनों बसों के लिए पिन साझा किए गए हैं।
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
डेटाशीट के अनुसार (अध्याय 8 देखें) , बसों के बीच चयन सीएसबी पिन के माध्यम से किया जाता है। जब CSB कम होता है, तो उपकरण एक SPI दास होता है। जब CSB अधिक होता है, तो डिवाइस I 2 C गुलाम होता है।
यहां एक विफलता मोड है , जिसके बारे में मैं चिंतित हूं। मान लीजिए, BMA180 SPI बस में है। उसी बस में एक अन्य उपकरण भी है, जिसमें स्वयं का चिप चयन है। मान लीजिए, एसपीआई बस मास्टर उस अन्य डिवाइस को संचार कर रहा है। BMA180 के लिए CSB अधिक है, इसलिए यह I 2 C सक्षम होना चाहिए। BMA180 एससीएल (एसपीआई की एससीएलके) और एसडीए (एसपीआई के एमओएसआई) पर बिट्स द्वारा घड़ी के किनारों को देखता है। क्या होगा अगर इनमें से कुछ बिट्स BMA180 को एक मान्य I 2 C रीडिंग लेनदेन की शुरुआत की तरह देखते हैं , और BMA180 डेटा और मौजूदा SPI लेनदेन को क्लोब करने के लिए शुरू होता है? BMA180 के डिजाइन को कैसे रोका जाएगा?
यह कौतूहल का विषय है। मैंने अभी तक इन मुद्दों के साथ प्रयोग नहीं किया है। मैं SPI पर BMA180 का उपयोग करूंगा।
किसी भी सुझाव, अंतर्दृष्टि या संदर्भ वास्तव में सराहना की है!
अपडेट करें। डेटाशीट में कुछ मिला (देखें 7.7.11) । यह बिट 2 सेट करके I 2 C को अक्षम करने की सलाह देता है dis_i2c
, यदि SPI के माध्यम से BMA180 के साथ संचार कर रहा है।
जब SPI इंटरफ़ेस का उपयोग किया जाता है, तो खराबी से बचने के लिए dis_i2c को 1 पर सेट करना अत्यधिक अनुशंसित होता है।
BMA180 ने EEPROM में बिल्ट-इन किया है। रजिस्टर सामग्री को EEPROM में संग्रहीत किया जा सकता है और स्वचालित रूप से पावर-अप अनुक्रम पर लोड किया जा सकता है। इसलिए, BMA180 को I 2 C को पूरी तरह से और हमेशा अनदेखा करना संभव है ।
अपडेट करें। L3GD20 gyro एक और आईसी है, जो समान तरीके से I 2 C और SPI के बीच पिन साझा करता है । ऐसा लगता नहीं है कि I 2 C मोड को अक्षम करने के लिए थोड़ी सेटिंग है। इसलिए, इसे ADXL345 जैसे OR गेट की आवश्यकता होगी, जिसे @markrages ने लाया है।
सचेत! बॉश ने BMA180 ( यहां आधिकारिक पत्र ) की शिपिंग रोक दी ।