Интерфейс I2C и датчики на нем

Содержание

Слайд 2

I2C

I2C - это достаточно широко распространённый сетевой последовательный интерфейс, придуманный фирмой Philips

I2C I2C - это достаточно широко распространённый сетевой последовательный интерфейс, придуманный фирмой
и завоевавший популярность относительно высокой скоростью передачи данных (обычно до 100 кбит/с, в современных микросхемах до 400 кбит/с), дешевизной и простотой реализации.
Одновременно можно подключить 127 устройств.

Слайд 3

I2C - ФИЗИКА

Устройства имеют выход с "открытым коллектором" - когда выходной ранзистор

I2C - ФИЗИКА Устройства имеют выход с "открытым коллектором" - когда выходной
закрыт на линии через подтягивающий резистор устанавливается высокий уровень, а когда открыт - низкий. Номинал резисторов влияет на скорость передачи данных(чем выше номинал, тем ниже скорость)

Слайд 4

I2C - ЛОГИКА

Любое устройство на шине I2C может быть одного из двух

I2C - ЛОГИКА Любое устройство на шине I2C может быть одного из
типов:
Master(ведущий) – управляет сеансом
Slave(ведомый) – «поддакивает» при приеме байта

Master и Slave могут работать в двух режимах:
Приемник
Передатчик

Слайд 5

I2C - ЛОГИКА

Каждый сеанс начинается и заканчивается с подачи «Мастером» так называемых

I2C - ЛОГИКА Каждый сеанс начинается и заканчивается с подачи «Мастером» так
START и STOP условий.

«Start-условие» — это изменение уровня на линии Data с высокого на низкий при наличии высокого уровня на линии Clock.

«Stop-условие» - это изменение уровня на линии Data с низкого на высокий при наличии высокого уровня на линии Clock.

Внутри сеанса любые изменения на линии Data при наличии высокого уровня на линии Clock запрещены!!!

Слайд 6

I2C - ЛОГИКА

Внутри сеанса передача состоит из пакетов по девять бит, передаваемых

I2C - ЛОГИКА Внутри сеанса передача состоит из пакетов по девять бит,
в обычной положительной логике (то есть высокий уровень — это 1, а низкий уровень — это 0). Из них 8 бит передаёт "Передатчик" "Приёмнику", а последний девятый бит передаёт "Приёмник" "Передатчику". Биты в пакете передаются старшим битом вперёд. Последний, девятый бит называется битом подтверждения ACK (от английского слова acknowledge — подтверждение). Он передаётся в инвертированном виде, то есть 0 на линии соответствует наличию бита подтверждения, а 1 — его отсутствию.

Слайд 7

I2C - ЛОГИКА

Если Slave торомоз и не успевает, то он может насильно положить линию SCL

I2C - ЛОГИКА Если Slave торомоз и не успевает, то он может
в землю и не давать ведущему генерировать новые такты. 

Слайд 8

I2C - ЛОГИКА

Как передаются отдельные биты понятно, теперь о том что эти

I2C - ЛОГИКА Как передаются отдельные биты понятно, теперь о том что
биты значат. В отличии от SPI тут умная адресная структура. Данные шлются пакетами, каждый пакет состоит из девяти бит. 8 данных и 1 бит подтверждения/не подтверждения приема.

Первый пакет шлется от ведущего к ведомому это физический адрес устройства и бит направления.

Слайд 9

I2C - ЛОГИКА

После адресного пакета идут пакеты с данными в ту или другую сторону,

I2C - ЛОГИКА После адресного пакета идут пакеты с данными в ту
в зависимости от бита RW в заголовочном пакете.

Слайд 10

I2C - ЛОГИКА

Чтение практически также, но тут есть одна тонкость. При приеме

I2C - ЛОГИКА Чтение практически также, но тут есть одна тонкость. При
последнего байта надо дать ведомому понять, что в его услугах больше не нуждаемся и отослать NACK на последнем байте. Если отослать ACK то после стопа Master не отпустит линию. 

Слайд 11

I2C - ЛОГИКА

Как видно из протокола, в первом байте мы адресовываем само устройство,

I2C - ЛОГИКА Как видно из протокола, в первом байте мы адресовываем
а их может быть до 127 штук. Но в самом устройстве вполне может быть очень сложная структура, с кучей ячеек. Как обращаться с этими данными? Не считывать же все по очереди от нуля до конца — это долго. Поэтому приняли хитрый формат. Это не стандарт, но юзается повсеместно.

Слайд 12

I2C - ЛОГИКА

Надо мне записать две ячейки памяти с адресами 0х05 и 0x06.

I2C - ЛОГИКА Надо мне записать две ячейки памяти с адресами 0х05
Как это сделать? Из даташита я узнаю, что первый байт данных это адрес куда мы будем обращаться, а потом уже идут данные и со следующим байтом счетчик адреса увеличивается на 1.

Слайд 13

I2C - ЛОГИКА

Надо нам считать те же данные, а вдруг изменились? С записью все понятно.

I2C - ЛОГИКА Надо нам считать те же данные, а вдруг изменились?
А с чтением как? А с чтением все через запись.
То есть, мы, вначале, записываем один байт — адрес. Потом делаем повторный старт, затем снова обращаемся к часам по ее Slave-адресу, но уже с битом R, на чтение. И умная микруха выдает нам байты с адреса который мы в нее вот только что записали. Выглядит это так:

Слайд 14

ВОТ И ВСЕ

ВОТ И ВСЕ

Слайд 15

Датчики

Датчик — собирательный термин, который может означать: измерительный преобразователь; первичный измерительный преобразователь; чувствительный

Датчики Датчик — собирательный термин, который может означать: измерительный преобразователь; первичный измерительный
элемент.
В российских рамках стандартизации датчик является средством измерений

Они бывают:
Газа
Пространства (Акселерометр, гироскоп, магнитометр, датчик линии, датчик наклона и тд)
Климатические (Барометр, датчик влажности, датчик температуры)
Датчики света (Освещенности, пламени, жестов, отражения и тд)
Датчики шума

Слайд 16

Модуль 3-х осевого гироскопа + 3-х осевого акселерометра GY-521 на чипе MPU-6050. Позволяет

Модуль 3-х осевого гироскопа + 3-х осевого акселерометра GY-521 на чипе MPU-6050.
определить положение и перемещение объекта в пространстве, угловую скорость при вращении. Так же имеет встроенный датчик температуры. Используется в различных коптерах и авиамоделях, так же на основе этих датчиков можно собрать систему захвата движений.

Характеристики:
Микросхема: MPU-6050
Напряжение питания: от 3,5V до 6V (DC);
Диапазон гироскопа: ± 250 500 1000 2000 ° / с
Диапазон акселерометра: ± 2 ± 4 ± 8 ± 16g
Интерфейс связи: I2C
Размер: 15х20 мм.
Вес: 5 г

GY-521

Слайд 17

Подключение

Подключение

Слайд 18

Подключение

Подключение

Слайд 19

Написание кода

Написание кода

Слайд 20

Барометр GY-68 (датчик атмосферного давления и температуры на чипе BMP180). Отлично подходит

Барометр GY-68 (датчик атмосферного давления и температуры на чипе BMP180). Отлично подходит
для создания погодных станций и систем "умный дом"

Характеристики:
Чип: Bosh BMP180
Питание: 1.8-3.6V
Потребляемый ток:0.5uA на 1Hz
Интерфейс: I2C
Максимальная частота I2C: 3.5Mhz
Точность давления до 0.02hPa (17см)
Диапазон измерения давления: от 300hPa до 1100hPa (от +9000м до -500м)
Диапазон измерения температуры: от -40 до 85 градусов по Цельсию
Вес: 1.18г

GY-68

Слайд 21

Подключение

Подключение