accelerometer BMA180 มันจะจัดการแบ่งปันพินระหว่าง I2C และ SPI ได้อย่างไร


11

accelerometer BMA180 สามารถเป็น SPI slave หรือ I 2 C slave ก็ได้ พินสำหรับรถโดยสารทั้งสองนั้นใช้ร่วมกัน

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 เมื่อ CSB ต่ำอุปกรณ์จะเป็นทาส SPI เมื่อ CSB สูงอุปกรณ์จะเป็นทาสI 2 C

นี่คือโหมดความล้มเหลวที่ฉันกังวล สมมติว่า BMA180 อยู่บนรถบัส SPI นอกจากนี้ยังมีอุปกรณ์อื่นในรถบัสเดียวกันโดยมีการเลือกชิปของตัวเอง สมมติว่า SPI บัสหลักกำลังสื่อสารกับอุปกรณ์อื่นนั้น CSB สำหรับ BMA180 นั้นสูงดังนั้นฉันควรเปิดใช้งานฉัน2 C BMA180 เห็นขอบนาฬิกาของ SCL (SPI ของ SPI) และบิตบน SDA (SPI ของ MOSI) ที่บินผ่าน จะเกิดอะไรขึ้นถ้าบิตเหล่านี้บางส่วนดูเป็น BMA180 เหมือนกับจุดเริ่มต้นของธุรกรรมการอ่านI 2 C ที่ถูกต้องและ BMA180 เริ่มส่งออกข้อมูลและปิดกั้นธุรกรรม SPI ที่มีอยู่ การออกแบบ BMA180 จะป้องกันได้อย่างไร

นี่เป็นเรื่องของความอยากรู้อยากเห็น ฉันยังไม่ได้ทดลองกับปัญหาเหล่านี้ ฉันจะใช้ BMA180 บน SPI

ข้อเสนอแนะความเข้าใจหรือการอ้างอิงใด ๆ ชื่นชมจริงๆ!

ปรับปรุง พบสิ่งที่อยู่ในแผ่นข้อมูล (ดู 7.7.11) แนะนำให้ปิดใช้งาน I 2 C โดยการตั้งค่าdis_i2cบิตถ้าสื่อสารกับ BMA180 ผ่าน SPI

เมื่อใช้อินเทอร์เฟซ SPI ขอแนะนำอย่างยิ่งให้ตั้งค่า dis_i2c เป็น 1 เพื่อหลีกเลี่ยงความผิดปกติ

BMA180 มี EEPROM ในตัว เนื้อหาการลงทะเบียนสามารถเก็บไว้ใน EEPROM และโหลดโดยอัตโนมัติตามลำดับการเปิดเครื่อง ดังนั้นเป็นไปได้ที่จะทำให้ BMA180 ไม่สนใจ I 2 C อย่างสมบูรณ์และตลอดเวลา

ปรับปรุง L3GD20 gyroเป็น IC อีกตัวหนึ่งซึ่งใช้พินระหว่าง I 2 C และ SPI ในลักษณะเดียวกัน ดูเหมือนว่าจะไม่มีการตั้งค่าเล็กน้อยสำหรับการปิดใช้งานโหมดI 2 C ดังนั้นมันจะต้องมีประตู OR เช่น ADXL345 ซึ่งเครื่องหมาย @ นำขึ้นมา

หัวขึ้น! Bosch หยุดจัดส่ง BMA180 ( จดหมายอย่างเป็นทางการที่นี่ )

คำตอบ:


14

ฉันเคยเห็นพฤติกรรมที่คุณกลัวใน ADXL345 ซึ่งใช้รูปแบบการเลือก I2C / SPI เดียวกัน ฉันมีอุปกรณ์ SPI อื่นที่ใช้ขั้วนาฬิกาที่แตกต่างกันและมันเกิดขึ้นเพื่อเลียนแบบรหัสเริ่มต้น I2C, ADXL345 พยายามที่จะพูดออกมาจากการเปิดเป็น I2C ข่าวร้าย.

ฉันเขียน SPI อย่างระมัดระวังเป็นบิตแทนที่จะใช้อุปกรณ์ต่อพ่วงตรวจสอบให้แน่ใจว่าไม่ได้เปลี่ยนสาย MOSI ในขณะที่นาฬิกาอยู่ในระดับสูง (นี่เป็นเงื่อนไขเริ่มต้นของ I2C) ซึ่งดูเหมือนจะแก้ไขปัญหาได้

ถ้าฉันเริ่มต้นจากศูนย์ฉันจะลองใช้บัส I2C แทนหรือพอร์ต SPI เฉพาะสำหรับ ADXL345

เห็นได้ชัดว่าฉันไม่ได้เป็นคนเดียวที่พบสิ่งนี้ ย่อหน้านี้ปรากฏในการแก้ไขในภายหลังของแผ่นข้อมูล ADXL345:

ป้อนคำอธิบายรูปภาพที่นี่


+1 และขอบคุณ! เพิ่งพบในแผ่นข้อมูลที่ BMA180 มีบิต I2C ปิดการใช้งาน (ดู 7.7.11) เป็นที่น่ายินดีว่า BMA180 มีเกตในตัวหรือเกินไปและก็ไม่ได้กล่าวถึงในแผ่นข้อมูลอย่างชัดเจน
Nick Alexeev

1
ประตู OR ปิดการใช้งานโหมด I2C อย่างมีประสิทธิภาพดังนั้นจึงไม่ได้สร้างไว้ในชิป (หากผู้ออกแบบชิปสามารถสำรองพินพิเศษสถานการณ์สามารถหลีกเลี่ยงได้ทั้งหมด)
markrages

ฉันไม่ควรเขียน "เกินไป" ในโพสต์ก่อนหน้า โดย "เกินไป" หมายถึง "นอกเหนือจาก I2C ปิดใช้งานบิต" ฉันก็ผิดที่ในรูปแบบนี้ประตู OR สามารถสร้างอย่างถาวรใน accelerometer IC ที่จะปิดการใช้งาน I2C สำหรับทุกคนให้ดี ฉันจะเขียนความคิดเห็นก่อนหน้านั้นอีกครั้ง
Nick Alexeev

BMA180 มี 3x DNC / หมุดสำรอง อาจจะใช้เพื่อวัตถุประสงค์ในโรงงานแล้ว
Nick Alexeev

1
ฉันสังเกตเห็นว่าเครื่องวัดความเร่งแบบดิจิทัลมีแนวโน้มที่จะใช้งานร่วมกับอุปกรณ์อื่นได้ นั่นอาจอธิบายพินที่ไม่ได้ใช้ หรือทดสอบโรงงานเหมือนที่คุณพูด
เครื่องหมาย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.