|
Глюки с I2C |
|
|
|
Apr 29 2018, 14:12
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Глюк 1:
Мне тут нужно было в одном относительно старом проекте, который делался на 4-м Кейле, поменять некоторые дефолтные настройки. К I2C оно не относится, но глюк я поймал именно с I2C! Сейчас на компе только 5-й, 4-го нет. Проц - тот-же F103, к нему по I2C подключена 24LC16.
Запускаю под дебаггером (JLink-Lite подключен, причем настоящий) - ничего не работает, бне входя в деббагер (но с подключенный JLinkом) - все прекрасно работает.
Отставил старую программу, набросал в калокубе с халом только работу с I2C и епромкой - абсолютно тоже самое! Под дебаггаром все функции I2C выходят по таймауту, с еепромки читабтся нули и в нее ничего не пишется. Без входа в дебаггер - все ОК.
WTF?!
Глюк 2: это коллега тут возится с девайсом на STM32L452 и жалуется. Просил спросить: Для тактирования используется MSI + PLL. I2C настроен на 400кгц, тактируется от системного клока.
На одной плате, запускаешь под дебаггером - есть 400кгц. Включаешь ее без дебаггера - там около 40кгц. Из 5-ти плат, так ведет себя одна, 4 другие в - вообще кто в лес, кто по дрова. ТЕперь самое интересное - для проверки "на какой- частоте проц работате," вывели махание ножкой в систике - так там четко, 1мс.
Есть идеи?
|
|
|
|
|
 |
Ответов
|
May 1 2018, 11:05
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Цитата(ViKo @ May 1 2018, 11:37)  Допустимый диапазон частот на входе PLL описан в документации. И что? Там от 4 до 16, 4Мгц в него не попадает? К тому-же куб бы красным отметил если бы что-то "не то" было. Цитата(k155la3 @ May 1 2018, 11:52)  Насчет "балагана" непонятно. И частоты тоже. SCL характеризуется не частотой, а периодом, А меня 40 лет назал еще в школе учили, что частота это 1/период И задается в I2C обычно именно часто клока (100,400, 1000). Цитата тк между фреймами могут быть паузы. Поэтому смотрите период SCL в ждущем режиме. Оптимально - синхровать осц. (в начале приема или передачи блока) от внешнего сигнала, можно ногодрыгом. Я даже не в "ждущем" а в стопе смотрю, и не то что скоп померял, а меряю сам курсорами. Цитата Намного более удобно пользоваться лог. анализаторм, где есть разборщик протокола I2C, а не рыться в осцилограмме. Смотрел конечно. Он вообщето и в самом осциллографе есть, с таким-же точно "разборщиком протоколов", холтя в данном случае мне было удобнее китайским прибамбасом с Saleae смотреть. Все там в порядке. Да и с передачей данных нет пробем, все корректно читается и пишется (я про глюк №2, 1-й меня сейчас не интересует, им я потом займусь). А дальше все еще чудесатее. Я тут уже как фокусник  Следите за руками: - я в коде, без всяких калокубов меня ДЕЛИТЕЛЬ МСО. который, согласно всем даташитам НЕ ВЛИЯЕТ НИ НА ЧТО, происходящее внутри процессора,. И частота SCL меняется в 2 раза, причем в обратную сторону!. Т.е. при делителе на 8 имеем: MSI_8, DIV=8: MCO=0.98 MHz, SCL100 = 38 kHz, SCL400 = 155 kHz. после изменения делителя на 16 имеем такое: MSI_8, DIV=16: MCO=0.49 MHz, SCL100 = 76 kHz, SCL400 = 310 kHz. вот уж точно - WTF?
|
|
|
|
|
May 1 2018, 11:15
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Allregia @ May 1 2018, 14:05)  И задается в I2C обычно именно часто клока (100,400, 1000). "Обычно"? А кроме куба вы что-то ещё знаете? Обычно - в разных МК по-разному. А ещё - почитайте хоть немного, что такое I2C. И что такое "clock stretching" в нём. Из-за него получаемая на SCL частота, может быть ниже, чем выставляемая через регистры I2C - это вполне нормально. А чтобы проверить правильность выставления частоты, нужно отключить все слэйвы и перевести SCL в push-pull-режим.
|
|
|
|
|
May 1 2018, 11:26
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Цитата(jcxz @ May 1 2018, 12:15)  "Обычно"? А кроме куба вы что-то ещё знаете? Обычно - в разных МК по-разному. "обычно" - это в стандартах I2C. Цитата А ещё - почитайте хоть немного, что такое I2C. Году в 96-м, переводил я филипсовскую доку по I2C, до сих пор по Сети ходит..... Цитата И что такое "clock stretching" в нём. Из-за него получаемая на SCL частота, может быть ниже, чем выставляемая через регистры I2C - это вполне нормально. "Нормально что", что частота 38 килогерц вместо 100? При слейве, умеющим по даташиту работать на 400, и реально прекрасно работающем и на 550? (на частоту SCL никто бы и не посмотрел бы, если бы незаметили что килобайт даных читается что-то уж больно долго). Или что частота SCL меняется вдвое при изменении делителя выхода MCO? Это тоже "нормально"? Цитата Может джиттерр "в особо крупных" ? а в не особо крупных - не вижу. Цитата При PLL его наличие и значение будет зависеть от соотношения частот настройки PLL и опорной частоты. Оптимальній вариант - их кратность. Так при изменении делителя МСО, все это не менялось. Да оно и при переключении источников клока не менялось!
|
|
|
|
|
May 1 2018, 11:29
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Цитата(Allregia @ May 1 2018, 14:26)  . . . . Или что частота SCL меняется вдвое при изменении делителя выхода MCO? Это тоже "нормально"? . . . Захват PLL на (за) границе(ей) , и его прогнозируемый слет. См. док - график частот и допустимых значений коэффициентов. Цитата(Allregia @ May 1 2018, 14:26)  "Да оно и при переключении источников клока не менялось!" Я бы отсюда и начал копать. Без I2C. ps проверить наличие флагов ошибок тактирующей системы.
|
|
|
|
Сообщений в этой теме
Allregia Глюки с I2C Apr 29 2018, 14:12 HardEgor Цитата(Allregia @ Apr 29 2018, 21:12) Ест... Apr 29 2018, 15:19 Allregia Цитата(HardEgor @ Apr 29 2018, 16:19) Как... Apr 29 2018, 17:24  aaarrr Цитата(Allregia @ Apr 29 2018, 20:24) Нап... Apr 29 2018, 17:36   Allregia Цитата(aaarrr @ Apr 29 2018, 18:36) Напри... Apr 29 2018, 18:17    aaarrr Цитата(Allregia @ Apr 29 2018, 21:17) Это... Apr 29 2018, 19:21     serglg Цитата(aaarrr @ Apr 30 2018, 01:21) Да дл... Apr 30 2018, 04:23     jcxz Цитата(aaarrr @ Apr 29 2018, 22:21) Тольк... Apr 30 2018, 05:22      aaarrr Цитата(jcxz @ Apr 30 2018, 08:22) А други... Apr 30 2018, 10:47  HardEgor Цитата(Allregia @ Apr 30 2018, 00:24) А ч... Apr 30 2018, 10:33   Allregia Цитата(HardEgor @ Apr 30 2018, 11:33) Так... Apr 30 2018, 11:01    HardEgor Цитата(Allregia @ Apr 30 2018, 18:01) Кол... Apr 30 2018, 11:33 ViKo Сделал работу i2c для некоего мелкого STM32 (конкр... Apr 30 2018, 04:33 Arlleex Да ни при чем тут барьеры... Не надо никаких прогр... Apr 30 2018, 07:40 Allregia Цитата(Arlleex @ Apr 30 2018, 08:40) Каса... Apr 30 2018, 07:44  jcxz Цитата(Allregia @ Apr 30 2018, 10:44) К т... Apr 30 2018, 08:04 KnightIgor Цитата(Allregia @ Apr 29 2018, 15:12) Мне... Apr 30 2018, 15:08 serglg Цитата(KnightIgor @ Apr 30 2018, 21:08) С... May 1 2018, 04:52  Allregia Цитата(serglg @ May 1 2018, 05:52) Когда ... May 1 2018, 10:22   k155la3 Цитата(Allregia @ May 1 2018, 13:22) . . ... May 1 2018, 10:52   HardEgor Цитата(Allregia @ May 1 2018, 17:22) Т.е.... May 1 2018, 16:18     Allregia Цитата(k155la3 @ May 1 2018, 12:29) Захва... May 1 2018, 11:33    jcxz Цитата(Allregia @ May 1 2018, 14:26) ... May 1 2018, 12:22     Allregia Цитата(jcxz @ May 1 2018, 13:22) Если Вам... May 1 2018, 12:52      jcxz Цитата(Allregia @ May 1 2018, 15:52) Вас ... May 1 2018, 17:10       Allregia Цитата(jcxz @ May 1 2018, 18:10) ЦитатаВа... May 1 2018, 17:17  k155la3 Цитата(Allregia @ May 1 2018, 14:05) . . ... May 1 2018, 11:20 Arlleex Во многих микроконтроллерах указывается именно пер... May 1 2018, 13:36 aaarrr Цитата(Arlleex @ May 1 2018, 16:36) GPIO_... May 1 2018, 14:00  Arlleex Цитата(aaarrr @ May 1 2018, 17:00) Зачем?... May 1 2018, 14:16   AVI-crak Кхм...
хотел скорости, а получил звон на линии...... May 1 2018, 14:37 Allregia Цитатаотсюда общая частота, замеряемая осциллограф... May 1 2018, 14:49
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|