• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

i2c + esp32 = лишние адреса!

DrJarold

Member
Имеется ESP32-S на которой заведена i2c шина на нестандартных пинах (4, 13) Подтянута на 3.3v через резисторы (забегая вперед перепробовал различные номиналы от 1к до 10к, ). На шину вешается DS3231 + pca9635 + ADS1015 (ее даже не распаивал)... Так вот суть проблемы на шине с одной DS3231 появляются левые адреса на i2c сканере, если докинуть еще pca9635 то может не правильно определяться адрес pca9635. Худо-бедно работает только при 2.4к если ставить другие номиналы то сыпятся ошибки в UART. Может подскажете куда копать?
 

Вложения

  • 131.9 KB Просмотры: 17
  • 849 KB Просмотры: 17

pvvx

Активный участник сообщества
Смотрите работу по i2c, как выставляются ACK.
 

DrJarold

Member
Смотрите работу по i2c, как выставляются ACK.
Не понимаю что именно мне нужно смотреть? Как формируются биты? Проблема явно "железная", потому как если накинуть pca9635 в виде готового модуля то на шине он отображается с правильным адресом!
 

pvvx

Активный участник сообщества
Просто некоторые микросхемы при неправильно выставленном ACK при чтении или записи не освобождают шину и после этого получите что угодно.
А т.к. у от вас нет никакой информации (чем и каким ПО читаете) - это просто гадание - что первое вспомнилось.
 

andrik_zp

Member
Со схемой все в порядке, с платой беда. 1 нет земляного полигона. 2 нет блокировочных конденсаторов 0.1мк, расположенных максимально близко к микросхеме. 3 не делайте повороты дорожек с углом 90 градусов. 4 при такой плотности монтажа лучше сделать плату 4 слойной на которой внутренние слои будут gnd и 3v
 

DrJarold

Member
Со схемой все в порядке, с платой беда. 1 нет земляного полигона. 2 нет блокировочных конденсаторов 0.1мк, расположенных максимально близко к микросхеме. 3 не делайте повороты дорожек с углом 90 градусов. 4 при такой плотности монтажа лучше сделать плату 4 слойной на которой внутренние слои будут gnd и 3v
Скорее всего вы правы. 1 Полигон есть на обоих слоях. Я убрал его перед тем как сделать скриншот. С кондерами тут ваша правда надо максимально близко их расположить. 3. Принял. Не знал. 4. Тут сложнее, такие платы я не разводил, тут с двумя слоями косяков полно((( Но если это действительно решит проблему почему бы и не попробовать. Спасибо за советы...
 

andrik_zp

Member
На самом деле 4 слойная даже проще, вы просто разводите сигнальные дорожки, а для подключения питания просто делаете переходное отверстие, внутри он подключится к слою питания. Ну и так гораздо проще расположить конденсаторы по ближе к микросхеме и вы автоматом получаете "правильную" разводку питания.
 

pvvx

Активный участник сообщества
Со схемой все в порядке, с платой беда. 1 нет земляного полигона. 2 нет блокировочных конденсаторов 0.1мк, расположенных максимально близко к микросхеме. 3 не делайте повороты дорожек с углом 90 градусов. 4 при такой плотности монтажа лучше сделать плату 4 слойной на которой внутренние слои будут gnd и 3v
Для 100 кГц сигналов это всё безразлично. :)
Явная проблема в ПО.
 

pvvx

Активный участник сообщества
DrJarold вы уж там подумайте, кого вы пытаетесь пересилить на шине i2c током к 1.5 мА при 2.4 кОм?
Емкость проводков без полигона GND под ними?
Должно работать и на сотне кОм, т.е. только на внутренних подтяжках GPIO в CPU. А добавка резистора служит только для улучшения защиты от внешних помех и если у вас десяток чипов на I2C с ужасными емкостями по входам...
А при такой "плотности" монсторо-корпусов плата могла быть и односторонней (второй слой весь GND). Просто надо правильнее расставлять чипы - и для монтажника и для разводки..
 

pvvx

Активный участник сообщества
Какие могут быть ещё проблемы – это завышенная скорость нарастания/спада сигнала. ESP дает фронты менее 3 нс на десяток пФ нагрузки с достаточным током, а некоторые чипы I2C не любят такое – таким сигналом колбасит их внутренности. Это маловероятно на вашей разводке, но возможно. В даташите DS указано 20+ нс ...

Нагрузив шину I2C несколькими чипами у вас возрастает емкость шины и скорость нарастания сигналов падает. Но для нормального контроллера I2C это бир-бар, т.к. включаете бит “enable clock stretching” и думать не требуется - он сам определит максимальную скорость шины.

Но вы используете какой-то кривой чип ESP – тут вам придется всё это делать ручками с ослом, а если он ещё и дешевый, то у его щупов емкость от 16 пФ…
 

DrJarold

Member
Какие могут быть ещё проблемы – это завышенная скорость нарастания/спада сигнала. ESP дает фронты менее 3 нс на десяток пФ нагрузки с достаточным током, а некоторые чипы I2C не любят такое – таким сигналом колбасит их внутренности. Это маловероятно на вашей разводке, но возможно. В даташите DS указано 20+ нс ...

Нагрузив шину I2C несколькими чипами у вас возрастает емкость шины и скорость нарастания сигналов падает. Но для нормального контроллера I2C это бир-бар, т.к. включаете бит “enable clock stretching” и думать не требуется - он сам определит максимальную скорость шины.

Но вы используете какой-то кривой чип ESP – тут вам придется всё это делать ручками с ослом, а если он ещё и дешевый, то у его щупов емкость от 16 пФ…
В принципе возможен вариант когда проблемы из-за дешевого CPU, уже заказаны другие, буду пробовать. При этом попробую переразвести плату с рекомендациями выше, если все это не поможет, буду снова просить совета у коллективного разума... Пока своего не хватает понять причину...
 

DrJarold

Member
Снимок экрана 2021-01-11 163133.png
Переразвел плату, сделал 4 слоя. Два сигнальных один земля и еще один 3.3v. Сигнальные залил еще полигоном земли. Постарался максимально близко положить кондеры.
 

pvvx

Активный участник сообщества
Посмотреть вложение 10425
Переразвел плату, сделал 4 слоя.
Походу будет беда с антенной. 'Дыркой' под ней это не решается. Обратитесь на специализированный форум, как там надо... Я не специалист в этом, но про "дырку" уже предупреждали... Для макетной платы используемой на столе и рядом роутером - сгодится и вообще с оторванной антенной, дорожками на модуле :)
 

DrJarold

Member
Да. Будет использоваться внешняя антенна. Но там достаточно прямой видимости Wi-Fi используется только для настройки устройства и километровые расстояния для этого не нужно.
 
Сверху Снизу