реклама на сайте
подробности

 
 
> Глюки с I2C
Allregia
сообщение Apr 29 2018, 14:12
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 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мс.

Есть идеи?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение May 1 2018, 10:37
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Допустимый диапазон частот на входе PLL описан в документации.
Go to the top of the page
 
+Quote Post
Allregia
сообщение May 1 2018, 11:05
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 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/период sm.gif
И задается в I2C обычно именно часто клока (100,400, 1000).


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


Я даже не в "ждущем" а в стопе смотрю, и не то что скоп померял, а меряю сам курсорами.

Цитата
Намного более удобно пользоваться лог. анализаторм, где есть разборщик протокола I2C, а не рыться в осцилограмме.


Смотрел конечно. Он вообщето и в самом осциллографе есть, с таким-же точно "разборщиком протоколов", холтя в данном случае мне было удобнее китайским прибамбасом с Saleae смотреть.

Все там в порядке. Да и с передачей данных нет пробем, все корректно читается и пишется (я про глюк №2, 1-й меня сейчас не интересует, им я потом займусь).

А дальше все еще чудесатее. Я тут уже как фокусник sm.gif Следите за руками:

- я в коде, без всяких калокубов меня ДЕЛИТЕЛЬ МСО.

который, согласно всем даташитам НЕ ВЛИЯЕТ НИ НА ЧТО, происходящее внутри процессора,.
И частота 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?
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 1 2018, 11:15
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Allregia @ May 1 2018, 14:05) *
И задается в I2C обычно именно часто клока (100,400, 1000).

"Обычно"? А кроме куба вы что-то ещё знаете? biggrin.gif
Обычно - в разных МК по-разному.
А ещё - почитайте хоть немного, что такое I2C. И что такое "clock stretching" в нём.
Из-за него получаемая на SCL частота, может быть ниже, чем выставляемая через регистры I2C - это вполне нормально. А чтобы проверить правильность выставления частоты, нужно отключить все слэйвы и перевести SCL в push-pull-режим.
Go to the top of the page
 
+Quote Post
Allregia
сообщение May 1 2018, 11:26
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(jcxz @ May 1 2018, 12:15) *
"Обычно"? А кроме куба вы что-то ещё знаете? biggrin.gif
Обычно - в разных МК по-разному.


"обычно" - это в стандартах I2C.

Цитата
А ещё - почитайте хоть немного, что такое I2C.



Году в 96-м, переводил я филипсовскую доку по I2C, до сих пор по Сети ходит.....


Цитата
И что такое "clock stretching" в нём.
Из-за него получаемая на SCL частота, может быть ниже, чем выставляемая через регистры I2C - это вполне нормально.



"Нормально что", что частота 38 килогерц вместо 100? При слейве, умеющим по даташиту работать на 400, и реально прекрасно работающем и на 550?
(на частоту SCL никто бы и не посмотрел бы, если бы незаметили что килобайт даных читается что-то уж больно долго).
Или что частота SCL меняется вдвое при изменении делителя выхода MCO? Это тоже "нормально"?

Цитата
Может джиттерр "в особо крупных" ?


а в не особо крупных - не вижу.

Цитата
При PLL его наличие и значение будет зависеть от соотношения частот настройки PLL
и опорной частоты. Оптимальній вариант - их кратность.


Так при изменении делителя МСО, все это не менялось.
Да оно и при переключении источников клока не менялось!
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 1 2018, 12:22
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 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? Это тоже "нормально"?

Что и как там у вас нормально и ненормально - это только вам виднее. И если вы сами не можете отладить свои исходники, то удалённо тут уж точно никто не сможет.
Если Вам пишут, что у других на том же МК получается нормальная частота то искать баги стоит у себя, а не искать виноватых вокруг.
Go to the top of the page
 
+Quote Post
Allregia
сообщение May 1 2018, 12:52
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 04:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01501 секунд с 7
ELECTRONIX ©2004-2016