|
Глюки с 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, 12:22
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Allregia @ May 1 2018, 14:26)  "обычно" - это в стандартах I2C. Не знаю какие там стандарты в калокубе - не разбираюсь в нём. Но если открыть даташит на первый попавшийся LPC17xx, то можно прочитать: 15:0 SCLH Count for SCL HIGH time period selection.15:0 SCLL Count for SCL low time period selection.Именно период, а не частота. Цитата(Allregia @ May 1 2018, 14:26)  Или что частота SCL меняется вдвое при изменении делителя выхода MCO? Это тоже "нормально"? Что и как там у вас нормально и ненормально - это только вам виднее. И если вы сами не можете отладить свои исходники, то удалённо тут уж точно никто не сможет. Если Вам пишут, что у других на том же МК получается нормальная частота то искать баги стоит у себя, а не искать виноватых вокруг.
|
|
|
|
|
May 1 2018, 12:52
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Цитата(jcxz @ May 1 2018, 13:22)  Если Вам пишут, что у других на том же МК получается нормальная частота то искать баги стоит у себя, а не искать виноватых вокруг. Вас не затруднит привести точную ссылку, где "у других на том же МК получается нормальная частота" ? Цитата(jcxz @ May 1 2018, 13:22)  Не знаю какие там стандарты в калокубе - не разбираюсь в нём. Но если открыть даташит на первый попавшийся LPC17xx, то можно прочитать: А я тоже не знаю что там в калокубе, и описание шины I2C я предопчитаю смотреть в стандартах на нее, а не в описаниях процессоров, даже если это филипсовские процессоры. Можно даже просто в википедию заглянуть: Цитата The history of I²C specification releases: - In 1982, the original 100 kHz I²C system was created as a simple internal bus system for building control electronics with various Philips chips.
- In 1992, Version 1 added 400 kHz Fast-mode (Fm) and a 10-bit addressing mode to increase capacity to 1008 nodes. This was the first standardized version.
- In 1998, Version 2 added 3.4 MHz High-speed mode (Hs) with power-saving requirements for electric voltage and current.
- In 2000, Version 2.1 clarified version 2, without significant functional changes.
- In 2007, Version 3 added 1 MHz Fast-mode plus (Fm+) (using 20 mA drivers), and a device ID mechanism.
- In 2012, Version 4 added 5 MHz Ultra Fast-mode (UFm) for new USDA (data) and USCL (clock) lines using push-pull logic without pull-up resistors, and added an assigned manufacturer ID table. It is only a unidirectional bus.
|
|
|
|
Сообщений в этой теме
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    k155la3 Цитата(Allregia @ May 1 2018, 14:26) . . ... May 1 2018, 11:29     Allregia Цитата(k155la3 @ May 1 2018, 12:29) Захва... May 1 2018, 11:33      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
|
|
|