Подключение по IIC
- Войдите на сайт для отправки комментариев
Вс, 11/04/2021 - 18:47
Приветствую всех!
Пытаюсь общаться по IIC с м/с MP2949A. Подключил питание, SDA/SCL и PE (Programming Enable).
Залил в DUE скетч для поиска адрес (в datasheet вроде как 20h указан).
Но адрес не находит:
15:13:53.312 -> Scanning...
15:13:53.312 -> No I2C devices found
15:13:53.312 ->
15:13:58.320 -> Scanning...
15:13:58.320 -> No I2C devices found
15:13:58.320 ->
15:14:03.318 -> Scanning...
15:14:03.318 -> Unknow error at address 0x20
15:14:03.351 -> No I2C devices found
15:14:03.351 ->
15:14:08.349 -> Scanning...
15:14:08.349 -> Unknow error at address 0x20
15:14:08.349 -> No I2C devices found
Может какие определённые условия нужны для работы этой м/с?
Спасибо.
Схемку давайте, к каким пинам на дуе и на какие пины на мс
И скетч нелишне
Для sda, scl подтяжка есть?
На DUE пины 20/21 (SDA/SCL)
На MP2949A 32/33 (SDA_P/SCL_P).
Подтяжка у этой шины есть, как сказано в описании на плату DUE.
Скетч:
#include <Wire.h> void setup(){ pinMode(14, OUTPUT); digitalWrite(14, HIGH); // Включение Program enable (Pin 36) Wire.begin(); Serial.begin(115200); while (!Serial); delay(500); 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); }Вы сами резисторы подтяжки видели? Показать на плате можете?
Другими словами - поставьте подтяжку для начала (в виде резисторов килоом по 5..10), а потом повторите сканирование.
Вы сами резисторы подтяжки видели? Показать на плате можете?
Да, резисторы вижу и прозвонил даже.
Вот они:
PeterS, поиск в гугле показывает много тем с проблемами I2C на Дуе. Поэтому я бы советовал вам разделить задачу на две. Для начала подключите ваш сенсор с обычной ардуине - Уно или Нано, запустите сканер и убедитесь, что микросхема отвечает. Когда получите ответ на обычной ардуине - переходите на Дуе.
b707, да, возможно и железо глючное. Пока под руками только DUE, а какие там ещё платки на 3.3В?
У DUE есть второй IIC сегодня попробую к нему подключить.
Пока под руками только DUE, а какие там ещё платки на 3.3В?
3.3в - про мини и СТМ32 блюпилл
А зачем обязательно 3.3? Разве ваша микросхема не работает от 5в?
А зачем обязательно 3.3? Разве ваша микросхема не работает от 5в?
Нет, макс. 3.6В
Существовала/существует Mega 2560 ProMini 3.3v от RobotDyn.
А как переназначить канал I2C (на пины D70/D71 вместо D20/D21) на плате DUE?