Щойно я зрозумів, що дані та тактові лінії I 2 C (SDA та SCL) повинні мати резистори підтягування.
Ну, я побудував пару годин, використовуючи RTC DS1307 (див. Таблицю ) за схемою нижче. Зверніть увагу, що я опустив обидва резистори.
Обидва годинники чудово працюють, один з них працює вже понад 3 місяці. Як це можливо? У будь-якому випадку, я хотів знати:
Що станеться, коли витягування I 2 C пропущено?
Чи може відсутність підключень пошкодити будь-який із цих двох ІМС у моїй раді?
Я після відповідей, які стосуються мого конкретного випадку підключення ATmega328P до DS1307 RTC, як у наведених нами схемах, але якщо питання не стане занадто широким, було б корисно дізнатися, що відбувається, коли підкачки пропущені взагалі , тобто в інших сценаріях роботи I 2 C.
PS. Я шукав в Мережі, щоб знайти відповідь, але міг просто знайти статті про розмірність підключень.
Оновлення: я використовую Arduino IDE 1,03, і моя прошивка обробляє RTC за допомогою вкладки DS1307RTC Arduino (через її функції RTC.read()
та RTC.write()
). Цей власник, в свою чергу, використовує Wire.h
для розмови з RTC.
Оновлення 2: Нижче наводиться серія знімків, які я взяв, щоб допомогти пояснити, як працює I 2 C без зовнішніх підкачок.
Update 3 (after I2C pullups added): Below is another series of scope shots I took after adding proper (4K7) pullup resistors to the I2C lines (on the same board). Rise times dropped from about 5 µs to 290 ns. I2C is much happier now.