Перейти к содержанию
    

Подскажите по HAL stm32 и I2C

16 часов назад, Arlleex сказал:

Переведите ноги в режим OUT Open-Drain. И помахайте ногами этими программно. Если работают, то дело явно где-то в коде))

Дело в том, что у меня есть несколько штук одинаковых плат (покупала их у китайцев одним лотом - 5 штук). У двух из них I2C "сгорел", на двух других I2C нормально работает, 5-ю пока никуда не подключала - берегу. Причем прошивка была на всех 4-х платах совершенно одинаковая. Я пишу "сгорел" потому, что на первых невезучих платах I2C сначала тоже работал, но потом перестал работать (пропали испускаемые из платы сигналы). В этой ситуации мне сложно пенять как на свою прошивку, так и на возможную неисправность плат с самого начала. Тем более, что на плате микроконтроллера пины (PB8 и PB9), ответственные за работу I2C, попросту выведены на разъем ("гребенка" по краям платы), и никаких других электронных компонентов по пути не содержит. Slave-устройство использовалось одно и то же, т.к. я его всего в одном экземпляре покупала.

Те две платы, которые до сих пор еще работают с I2C, держатся на плаву благодаря вот такому методу: сперва подаю питание на Master и Slave при разорванной между ними шине I2C, а после тогда как они светодиодиками начали моргать, I2C-шину между ними соединяю. Тогда всё работает каждый раз устойчиво. Тогда как первая плата "сгорела" в момент подачи питания при соединенной шине, а вторая сгорела после того, так я сделала STM32 ресет (кнопочку такую на плате нажала).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 часов назад, Xenia сказал:

А началось всё с того, что силовой ключ себе купила, вот такой: https://wiki.iarduino.ru/page/power-key-4p-i2c-datasheet/ , а управление им только через I2C. Силовым напряжением я него не нагружала, а питала от источника 5 V, причем того же самого, из которого LDO на плате делает напряжение 3.3 V для питания этого STM32. Подтяжку на линиях I2C тоже он создает.

Ну вот этим и убили. Так как в даташите в параграфе "Absolute maximum ratings" указано:

image.thumb.png.5f93a6f72f9a3c7466cc0171b0e65631.png

Если у Вас +3.3V формирует LDO, питаемый от +5V, то очевидно, что +5V появляется раньше +3.3V. Особенно если ёмкость после LDO достаточно большая. А значит: когда на линиях SCL/SDA появляется +5V, на VDD ещё может быть <+1V. В этот момент ноги имеют полное право сдохнуть.

Делайте подтяжку от +3.3V и ваши ножки будут в целости и сохранности.  :smile:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

50 минут назад, jcxz сказал:

Делайте подтяжку от +3.3V и ваши ножки будут в целости и сохранности.

Так у меня подтяжка шины I2C как раз 3-вольтовая. И я про это уже писала:

19 часов назад, Xenia сказал:

Режим линий у STM32 - Open Drain, напряжение на линиях внешнее +3.23 V, а если закоротить на землю, то получаю ток 0.325 mA. Т.е. ток вроде бы совсем небольшой, чтобы повредить контроллеру.

Тем не менее, подтяжку на шине создаю не я (т.к. мой STM32 этого не умеет), а Save-устройство, питаемое от 5V, а его схема мне неизвестна. Но перемычку с 5V на 3V3 на Slave я перепаяла сразу (это фото из его описания еще до перепайки):

747313121_.png.383bac1fa510b277dc74df99515286f4.png

1792673922_I2C.png.0309e8de9d1e9289a054460151ea2602.png

Однако все равно боюсь того, что Slave может на короткое время установить на шине напряжение 5V и лишь позднее снизить его до 3.3V.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 минут назад, Xenia сказал:

Тем не менее, подтяжку на шине создаю не я (т.к. мой STM32 этого не умеет), а Save-устройство, питаемое от 5V, а его схема мне неизвестна.

Так просто выпаяйте резисторы подтяжки с той платы. Подтяните шину на +3.3V на плате МК.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, jcxz сказал:

Так как в даташите в параграфе "Absolute maximum ratings" указано:

Мои I2C-пины (PB8 и PB9), согласно даташита, толерантны к 5V (FT):

781781493_Tolerant-PB8PB9.thumb.png.2f6389031e9a749dec0586b204a57f3a.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 минуты назад, Xenia сказал:

Мои I2C-пины (PB8 и PB9), согласно даташита толерантны к 5V:

Я же выше Вам выдержку из даташита привёл. Где расшифровывается, что понимается под характеристикой "5V tolerant".

Почитайте её внимательнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, jcxz сказал:

Я же выше Вам выдержку из даташита привёл. Где расшифровывается, что понимается под характеристикой "5V tolerant".

А я не поняла из вашей выдержки, какая же это толерантность к 5V, если уже при 4V наступает конец.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

52 минуты назад, Xenia сказал:

А я не поняла из вашей выдержки, какая же это толерантность к 5V, если уже при 4V наступает конец.

Толерантность во включенном состоянии и это нормально. Если подать логический уровень на вход незапитанной КМОП-микросхемы, так и вообще можно получить тиристорный эффект с дымом. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 часов назад, Xenia сказал:

толерантность к 5V, если уже при 4V наступает конец.

Не 4, а VDD + 4. То есть, это более 7 В.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, EdgeAligned сказал:

Не 4, а VDD + 4. То есть, это более 7 В.

А если всё-таки попытаться включить голову?

PS: А для неумеющих включать - выше уже было всё разжёвано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно поможет включение шоттки диодов с выходов I2C на питание 3.3 в на плате процессора. Это спасет и при включении питания.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, rudy_b сказал:

Возможно поможет включение шоттки диодов с выходов I2C на питание 3.3 в на плате процессора. Это спасет и при включении питания.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может научиться циферки складывать, хотяп на калькуляторе ? 3 + 4 = 7. 

И вообще, что за хамская манера общения? Чуть что - сразу поток хамства. У вас тут на форуме все такие высокомерные, иль это отдельные одарённые личности только? Можно же уважительно общаться же! Если кто-то вдруг ошибается, можно же без хамства объяснить же! 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

32 минуты назад, EdgeAligned сказал:

А может научиться циферки складывать, хотяп на калькуляторе ? 3 + 4 = 7. 

Откуда вы взяли 3 в момент включения? И вообще откуда 3, если ТС сказала что питание 3.3 В?

В 15.04.2023 в 23:08, Xenia сказал:

А началось всё с того, что силовой ключ себе купила, вот такой: https://wiki.iarduino.ru/page/power-key-4p-i2c-datasheet/ , а управление им только через I2C. Силовым напряжением я него не нагружала, а питала от источника 5 V, причем того же самого, из которого LDO на плате делает напряжение 3.3 V для питания этого STM32. Подтяжку на линиях I2C тоже он создает.

Задержки подачи питания при использовании LDO быть не должно, поэтому мне версия с прилётом на вход недопустимо высокого напряжения (больше 4 В) при включении питания кажется крайне маловероятной. Но нужно смотреть осциллографом, чтобы окончательно расставить все точки над i. Поэтому вопрос к @Xenia: покажите осциллограммы на линиях I2C (хотя бы одной из них) и на линии питания STM32 при включении питания вашей системы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...