Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

ESP32 i2c wire не работает

Тема в разделе "ESP32 - все о железе", создана пользователем valerivp, 17 июн 2018.

  1. valerivp

    valerivp Читатель

    Сообщения:
    141
    Симпатии:
    10
    Наверное я что-то не так делаю, но все то же самое что и на ESP8266

    Подключаю часы DS3231

    Шина если ничего не подключено:

    upload_2018-6-17_9-27-46.png

    если подключены часы:

    upload_2018-6-17_9-29-11.png

    если часы без питания:
    upload_2018-6-17_9-30-22.png

    пробовал ставить резисторы 4.7к между шиной и питанием - нет эффекта
     
  2. =AK=

    =AK= Авторитетный участник сообщества

    Сообщения:
    1.117
    Симпатии:
    92
    I2C на 2 МГц? Оригинально!

    Кривое подобие старта? Совсем оригинально!

    "пробовал ставить резисторы 4.7к", то есть, изначально I2C без резисторов подтяжки? Еще более оригинально!
     
  3. valerivp

    valerivp Читатель

    Сообщения:
    141
    Симпатии:
    10
    была проблема с питанием RTC

    теперь другая картина:
    upload_2018-6-17_13-51-18.png

    upload_2018-6-17_13-48-45.png

    upload_2018-6-17_13-50-4.png
     
  4. valerivp

    valerivp Читатель

    Сообщения:
    141
    Симпатии:
    10
    2МГц на скрине - это частота дискритезации логического анализатора. Вы считаете это много или мало?

    я, в отличии от некоторых профессионалов, использую библиотеку wire.h, что и как она делает - мне бы не хотелось разбираться

    я так понимаю, что без резисторов подтяжки i2c принципиально работать не может. Но на ESP8266 работает. Я так подозреваю, что эти резисторы есть или в ESP или в RTC.
     
  5. nikolz

    nikolz Гуру

    Сообщения:
    3.105
    Симпатии:
    331
    Так как у Вас питания не было то на пинах был ноль. Поэтому и было замечание про подтяжки.
    теперь 1, т е все нормально.
    1 на шине позволяет создать монтажное ИЛИ на схемах с открытым коллектором - что и реализовано в I2C.
    [​IMG]
     
  6. valerivp

    valerivp Читатель

    Сообщения:
    141
    Симпатии:
    10
    nikolz, не было бы подтяжки - i2c вообще бы не работал - был бы всегда низкий уровень. А на первом скрине я показал - шина работает. Контроллер не может же выставлять на SDA высокий уровень, он формируется исключительно подтяжкой.
     
  7. nikolz

    nikolz Гуру

    Сообщения:
    3.105
    Симпатии:
    331
    Прекрасно.
    Тогда зачем Вы открыли тему, если все знаете ,без чужих советов.
     
  8. valerivp

    valerivp Читатель

    Сообщения:
    141
    Симпатии:
    10
    Я не все знаю, но я учусь
    Из того, что знаю - много благодаря чужим советам. Но только умным советам, а не подобным высказываниям:
     
  9. nikolz

    nikolz Гуру

    Сообщения:
    3.105
    Симпатии:
    331
    Полагаю что данное высказывание сделано именно по вашей 2 и 3 картинке где у вас сигналы притянуты к нулю.
    что не есть нормально для I2C.
    Ну а некоторый сарказм - это у кого как получается.
    Если Вы учитесь то продуктивнее обращать внимание на содержание, а не на форму .
     
  10. valerivp

    valerivp Читатель

    Сообщения:
    141
    Симпатии:
    10
    я называю это "высокомерие". а в данном случае - беспочвенное
     
  11. A_D

    A_D Авторитетный участник сообщества

    Сообщения:
    324
    Симпатии:
    52
    valerivp, не обращайте внимания. ЗЫ. Особенно после первого же предложения с 2 МГц на I2C, можно было понять про прошаренность собеседника..
    Про резисторы подтяжки - если вы брали готовую плату на DS3231, то обычно они там уже стоят, номиналом от 4,7 кОм до 10 кОм.
     
  12. =AK=

    =AK= Авторитетный участник сообщества

    Сообщения:
    1.117
    Симпатии:
    92
    Для тактовой I2C это много, для дискретизации логического анализатора - мало.

    Угу. Пусть другие в ней разбираются, а ваше дело только вопросы "почему не работает" задавать.

    В чипе RTCC резисторов подтяжки нет, в ESP они могут быть. Однако для I2C важно не наличие абы какой подтяжки, но и сопротивление резисторов подтяжки. Рекомендуемая величина - от 3.3к до 4.7к. Даже 10к, хотя используется часто, но уже многовато и может быть причиной глюков. Встроенные в чип подтяжки имеют величины в несколько десятков кОм и не годятся для I2C.

    Лучше сто раз спросить, не особо заморачиваясь на описание чего там у вас сделано, чем проверить монтаж, самому подумать или книжку почитать.
     
    Последнее редактирование: 18 июн 2018
  13. valerivp

    valerivp Читатель

    Сообщения:
    141
    Симпатии:
    10
    странно, а анализатор говорит что хватает. он же смог разобрать протокол - см. первый скрин.

    что ж вы все привязались то к этим резисторам? У меня шина i2c, а не 1wire c паразитным питанием. Ей должно быть пофиг какой номинал у встроенных резисторов при длине шины 10см.

    Я не стесняюсь спрашивать. Не только на форуме, но и лично у знающих людей. После того как сам проверю и подумаю.
    Может подскажите книжку, где описаны ошибки, которые могут приводит к таким сигналам как на последних трех скринах?

    Если не понятно, что сделано, то:

    часы DS3231 подключены на ноги 23 и 19.
    выполняется код:
    Код (C):
    1.     Wire.begin(pins::sda, pins::scl);
    2.     Wire.beginTransmission(DS3231_I2C_ADDRESS); // 104 is DS3231 device address
    3.     Wire.write(0x00); // start at register 0
    4.     Wire.endTransmission();
    5.     Wire.requestFrom(DS3231_I2C_ADDRESS, 7); // request seven bytes
    6.  
    7.     if (Wire.available()) {
    8.       //...      
    9.     }else{
    10. // попадаем сюда
    11.         DEBUG_PRINT(F("Wire error"));
    12.     }
     
  14. nikolz

    nikolz Гуру

    Сообщения:
    3.105
    Симпатии:
    331
    Возможно здесь ответ:
    ESP32 and DS3231 RTC example
     
  15. =AK=

    =AK= Авторитетный участник сообщества

    Сообщения:
    1.117
    Симпатии:
    92
    С такой скоростью анализатор не поймает ошибки во временной диаграмме, если они там есть. Или наоборот, будет показывать ошибки, когда их нет.

    А я не телепат, чтобы знать, что ваша шина 10 см и на ней не висит еще десяток устройств. Вам же влом было нормально описать свою систему. Вы даже не знаете есть у вас нормальные подтяжки или нет. А на встроенных 50-килоомных резисторах может глючить и на 10 см.

    1. Specification - I2C Bus
    2. https://www.maximintegrated.com/en/products/digital/real-time-clocks/DS3231.html
     
  16. nikolz

    nikolz Гуру

    Сообщения:
    3.105
    Симпатии:
    331
    посмотрите это:
    ESP32 and DS3231 RTC example
    ESP32 and I2C LCD example
    I2C not working on ESP32 · Issue #741 · espressif/arduino-esp32
     
  17. nikolz

    nikolz Гуру

    Сообщения:
    3.105
    Симпатии:
    331
    Using the ESP32 with RTC DS3231 module - Hackster.io
    ESP32 Real Time Clock using DS3231 Module and OLED Display
     
  18. kochetovvin

    kochetovvin Новичок

    Сообщения:
    31
    Симпатии:
    0

Поделиться этой страницей