Два датчика с использованием I2C

У нас есть два датчика, один из них (MPU6050-gyro) взаимодействует с помощью I2C, другой через SPI (устройство чтения SD-карт). Теперь нам нужен дополнительный компонент в виде датчика, который барометра обменивается данными через I2C.

Можем ли мы без проблем использовать все три модуля? Интересно, можно ли без проблем использовать два модуля I2C? Иначе что можно сделать?

, 👍1


2 ответа


1

I2C — это шина. К этой шине может быть подключено много устройств, каждое из которых имеет свой адрес. Каждый раз, когда вы хотите связаться с одним из них, вы должны отправить адрес устройства. Когда вы используете библиотеку Wire, это делается вызовом Wire.beginTransmission() или Wire.requestFrom(). Большинство ведомых устройств имеют адрес, который частично настраивается, часто путем подключения специальных контактов к Vcc или земле. Убедитесь, что каждое устройство на шине имеет уникальный адрес, иначе вы столкнетесь с проблемами из-за поврежденных данных или зависания шины.

,

4

Да, это идея шинных протоколов, таких как i2c. Вам нужно только, чтобы датчики на i2c имели разные адреса шины. Адрес датчика обычно можно выбрать, припаяв перемычку (в mpu6050 эта функция предусмотрена на контакте AD0). Если вы не можете избежать конфликта адресов, вы можете использовать мультиплексор i2c или микроконтроллер между датчиком и фактическим микроконтроллером (но, вероятно, это не обязательно при использовании только двух датчиков).

Одновременное использование SPI и I2C абсолютно не проблема для atmega!

,