BMA180 가속도계. I2C와 SPI간에 핀을 공유하는 방법은 무엇입니까?


11

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 핀을 통해 수행됩니다. CSB가 낮 으면 장치는 SPI 슬레이브입니다. CSB가 높으면 장치는 I 2 C 슬레이브입니다.

여기 내가 걱정 하는 실패 모드 가 있습니다. BMA180이 SPI 버스에 있다고 가정하십시오. 동일한 버스에는 자체 칩 선택 기능이있는 다른 장치도 있습니다. SPI 버스 마스터가 다른 장치와 통신하고 있다고 가정하십시오. BMA180의 CSB가 높으므로 I 2 C가 가능해야합니다. BMA180은 SCL (SPI의 SCLK)의 클럭 에지와 SDA (SPI의 MOSI)의 비트가 날고 있음을 확인합니다. 이러한 비트 중 일부가 유효한 I 2 C 읽기 트랜잭션 의 시작처럼 BMA180 에 표시되고 BMA180이 데이터를 출력하기 시작하고 기존 SPI 트랜잭션을 클로버하는 경우 어떻게됩니까? BMA180의 디자인이이를 방지하는 방법은 무엇입니까?

이것은 호기심의 문제입니다. 아직 이러한 문제를 실험하지 않았습니다. SPI에서 BMA180을 사용할 것입니다.

모든 제안, 통찰력 또는 참조는 정말 감사합니다!

최신 정보. 데이터 시트 에서 무언가를 발견했습니다 (7.7.11 참조) . SPI를 통해 BMA180과 통신하는 경우 비트 를 설정하여 I 2 C를 비활성화하는 것이 좋습니다 dis_i2c.

SPI 인터페이스를 사용하는 경우 오작동을 피하기 위해 dis_i2c를 1로 설정하는 것이 좋습니다.

BMA180에는 내장 EEPROM이 있습니다. 레지스터 내용은 EEPROM에 저장 될 수 있으며 전원 켜기 순서에 따라 자동으로로드됩니다. 따라서 BMA180이 I 2 C를 완전히 그리고 항상 무시하도록 할 수 있습니다.

최신 정보. L3GD20 자이로 는 유사한 방식으로 I 2 C와 SPI 간에 핀을 공유하는 또 다른 IC 입니다. I 2 C 모드 를 비활성화하기위한 비트 설정이없는 것 같습니다 . 따라서 @markrages가 제기 한 ADXL345와 같은 OR 게이트가 필요합니다.

헤즈 업! 보쉬는 BMA180 ( 공식 서한 ) 발송을 중단했습니다 .

답변:


14

동일한 I2C / SPI 선택 구성표를 사용하는 ADXL345에서 정확히 두려워하는 동작을 보았습니다. 나는 다른 클럭 극성을 사용하는 또 다른 SPI 장치를 가지고 있었고 I2C 시작 코드를 에뮬레이트하여 ADXL345는 I2C와는 달리 이야기하려고했습니다. 나쁜 소식.

주변 장치를 사용하는 대신 SPI를 비트 뱅으로 조심스럽게 다시 작성하여 클럭이 높을 때 MOSI 라인을 변경하지 않도록했습니다. (이것은 I2C 시작 조건입니다.) 문제가 해결 된 것 같습니다.

처음부터 시작했다면 대신 I2C 버스를 사용하거나 ADXL345 전용 SPI 포트를 사용하려고합니다.

분명히 나는 ​​이것을 만날 유일한 사람이 아닙니다. 이 단락은 ADXL345 데이터 시트의 이후 개정판에 나타납니다.

여기에 이미지 설명을 입력하십시오


+1 감사합니다! 데이터 시트에서 BMA180에 I2C 디스 에이블 비트가 있음을 발견했습니다 (7.7.11 참조). BMA180에는 OR 게이트가 내장되어 있으며 데이터 시트에는 명시 적으로 언급되어 있지 않습니다.
Nick Alexeev

1
OR 게이트는 I2C 모드를 효과적으로 비활성화하므로 칩에 내장되어 있지 않습니다. (칩 설계자가 여분의 핀을 절약 할 수 있다면 상황을 완전히 피할 수있다.)
51 초

이전 글에 "너무"쓰여서는 안됩니다. "너무"는 "I2C 디스 에이블 비트 외에"를 의미합니다. 이 체계에서 OR 게이트가 가속도계 IC에 영구적으로 구축 될 수 있다는 것도 잘못된 생각이었습니다. 그러면 I2C가 모두 비활성화됩니다. 나는 그 이전 의견을 다시 쓸 것이다.
Nick Alexeev

BMA180에는 3 개의 DNC / 예약 핀이 있습니다. 이미 공장 용으로 사용되었을 수 있습니다.
Nick Alexeev

1
디지털 가속도계는 서로 핀 호환되는 경향이 있음을 알았습니다. 사용하지 않는 핀을 설명 할 수 있습니다. 또는 당신이 말한 것처럼 공장 테스트.
1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.