Почему не определяются устройства на шине i2c
Перейти к содержимому

Почему не определяются устройства на шине i2c

  • автор:

Почему не определяются устройства на шине i2c

Текущее время: Вт янв 09, 2024 17:55:30

Часовой пояс: UTC + 3 часа

Запрошенной темы не существует.

Часовой пояс: UTC + 3 часа

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y

Работоспособность сайта проверена в браузерах:
IE8.0, Opera 9.0, Netscape Navigator 7.0, Mozilla Firefox 5.0
Адаптирован для работы при разрешениях экрана от 1280х1024 и выше.
При меньших разрешениях возможно появление горизонтальной прокрутки.
По всем вопросам обращайтесь к Коту: kot@radiokot.ru
©2005-2024

Arduino: как узнать I2C адрес устройства?

I2C — это такая шина данных, широко используемая в микроэлектронике. С помощью I2C можно подключить к Ардуино много разных полезных модулей, включая датчики, дисплеи, АЦП и даже другие платы Ардуино.

Шина является адресной, так что каждое подключаемое устройство имеет свой адрес в диапазоне от 8 до 127. На одной шине не может быть два устройства с одинаковыми адресами.

В этой короткой статье мы победим одну из частых проблем, которые испытывают самодельщики про покупке неведомого модуля с этим самым I2C интерфейсом. Проблема состоит в том, что производитель может изменить адрес устройства, и стандартные библиотеки перестают работать. Часто с подобной неприятностью можно столкнуться, например, при подключении ЖК дисплея с интерфейсом I2C.

Программа для сканирования I2C шины

Чтобы понять, какой всё-таки адрес у модуля, подключаемого к плате Ардуино, нужно просто «постучаться» по каждому из 119 возможных адресов. Если кто-то ответит, значит адрес рабочий!

#include void setup() < Wire.begin(); Serial.begin(9600); while (!Serial); Serial.println("\nI2C Scanner"); >void loop() < byte error, address; int nDevices; Serial.println("Scanning. "); nDevices = 0; for(address = 8; address < 127; address++ )< Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0)< Serial.print("I2C device found at address 0x"); if (address<16) Serial.print("0"); Serial.print(address,HEX); Serial.println(" !"); nDevices++; >else if (error==4) < Serial.print("Unknow error at address 0x"); if (address<16) Serial.print("0"); Serial.println(address,HEX); >> if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n"); delay(5000); >

Загружаем программу на Ардуино Уно, подключаем тестируемое устройство к I2C шине и открываем монитор последовательного порта. Если все подключено правильно, то появится примерно такой отчет:

Сканер I2C шины на Ардуино

Это значит, что мой дисплей имеет адрес 0x27 в шестнадцатеричной системе счисления. Теперь можно смело подключить библиотеку для работы с такими дисплеями и указать в ней данный адрес.

Изменено: 14 Ноя, 2016 02:25

Arduino: как узнать I2C адрес устройства? : Один комментарий

Роман говорит 14.11.2016 в 15:39 :

Очень интересно, но думаю не помешала бы принципиальная схемка подключения I2C устройства к Ардуино. Ну или ссылка на такую процедуру.

Почему не определяются устройства на шине i2c

При подключении нескольких устройств или датчиков бывает необходимо определить адрес каждого устройства. Обычно производитель пишет информацию об адресе, но иногда нет времени искать. Ниже приведу Скетч-пример как на Arduino просканировать все подключенние устройства и вывести их адреса.

Подключение

Подключается через контакты SDA и SCL (на ардуино УНО и НАНО они на контактах A4 и A5).

Скетч

#include Wire.h> byte error, address; int nDevices; //Кол-во найденных устройств void setup()  Wire.begin(); Serial.begin(9600); Serial.println("\nI2C Scanner"); > void loop()  Serial.println("Scanning. "); nDevices = 0; for (address = 1; address  127; address++ )  Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0)  Serial.print("I2C device found at address 0x"); if (address  16) Serial.print("0"); Serial.print(address, HEX); Serial.println(" !"); nDevices++; > else if (error == 4)  Serial.print("Unknow error at address 0x"); if (address  16) Serial.print("0"); Serial.println(address, HEX); > > if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n"); delay(5000); // Ждем 5 сек. до следующего сканирования > 

Комментарии

+2 # Глеб 17.06.2016 23:45

спасибо работает
очень полезная программа

Устройство HID на шине I2C что это такое?

Устройство HID на шине I2C что это такое

Просматривая устройства в диспетчере, некоторые пользователи могут отметить в нем некое устройство HID на шине I2C, помеченное восклицательным знаком. А это может говорить лишь об одном: с этим устройством есть проблемы. Причем они могут быть как программного характера, так и аппаратного.

В данной статье мы расскажем какое устройство обычно скрывается под данным названием и что можно попробовать сделать самостоятельно для устранения этой проблемы.

Запуск устройства HID на шине I2C невозможен (Код 10)

Для начала разберемся что это за устройство. В 80% случаев им является тачпад. В оставшихся 20% – клавиатура, подключенная по USB мышка или тачскрин (Сенсор экрана, если экран в вашем ноутбуке сенсорный).

что такое Устройство HID на шине I2C

Ошибка запуска устройства с кодом 10

Первым делом нужно проверить работоспособность всех этих устройств: ввести что-либо с клавиатуры, поводить пальцем по тачпаду и т.д.

То, что окажется нерабочим, и будет являться тем самым устройством HID на шине I2C.

Что делать, чтобы устройство заработало?

Самый верный путь – определить модель ноутбука, перейти на официальный сайт, скачать драйвера на все устройства ввода (тачпад, тачскрин, клавиатура) и установить их.

Второй вариант заключается в поиске драйвера для устройства по его идентификатору. Для этого в диспетчере устройств нужно дважды кликнуть мышкой по устройству HID на шине I2C.

что такое Устройство HID на шине I2C

Определение ИД оборудования

В открывшемся окне перейти на вкладку “Сведения” и выбрать свойство “ИД оборудования”.

Далее скопировать самое верхнее значение и вставить его в поиск гугла или яндекса.

Устройство HID на шине I2C что это такое

Поиск драйвера к устройству по его ИД

В полученных результатах выдачи останется отыскать драйвер под ваше устройство.

Если ничего из вышеописанного не помогло и устройство HID на шине I2C все равно отображается в диспетчере устройств с восклицательным знаком и статусом “Запуск этого устройства невозможен. Код 10”, то это означает, что с этим устройством имеются проблемы на аппаратном уровне.

Например, поврежден или отсоединился шлейф или само устройство повреждено, например падением ноутбука или его залитием жидкостью. В этом случае лучше обратиться в сервис. А если все нормально работает, то и вовсе не обращать на него внимание.

Лучшая благодарность автору — репост к себе на страничку:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *