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

 
 
> Вопрос по I2C
dimon_rub
сообщение Dec 15 2016, 12:21
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 10-09-16
Пользователь №: 93 282



Здравствуйте. Вопрос наверно стар но конкретного ответа так я и не нашел. КАКОЙ метод (прерывание или DMA)нужно использовать при работе с STM32F103 по шине I2C с несколькими устройствами. Примеры попадающиеся на просторах в основном проверка в цикле с тайм-аутом (как по мне не очень красиво). Устройства всегда слейв. При этом: одно память чтение/запись не постоянная, второе датчик опрос постоянный. Кроме этого используется АЦП(где тоже соответственно опрос постоянный, сдесь DMA), USART(DMA) и SPI Ethernet(планируется DMA).

СПАСИБО ЗА СОВЕТ!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Aleksandr Barano...
сообщение Dec 22 2016, 15:37
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



В "AN10216-01 I2C Manual" не сказано: "безудержно дергать......". Там довольно определенная последовательность действий.


--------------------
ASB
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Dec 22 2016, 16:32
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(Aleksandr Baranov @ Dec 22 2016, 17:37) *
В "AN10216-01 I2C Manual" не сказано: "безудержно дергать......". Там довольно определенная последовательность действий.

Вот же к фразе прицепились... Я так ОБРАЗНО обозвал цитату из рекомендации "I2C bus recovery" по ссылочке, подчеркивая, что уже не сама I2C периферия процессора формирует сигналы, а это надо делать "вручную".

Цитата(zltigo @ Dec 22 2016, 16:51) *
Это только для тех, кто не понимает, как работает автомат I2C в этом самом EEPROM и соответственно не понимают, как его вывести в исходное состояние.
А автомат там простой и тупой. Завесить его намертво нереально.

Если автоматы EEPROM разных производителей есть плод Вашей разработки, то нам несказанно повезло иметь возможность наконец распросить Вас, как же там все на самом деле работает! До сих пор понимание глубинных процессов автомата было недоступно, приходилось судить лишь по поведению этого черного ящика по внешним проявлениям и набивать шишки. Я приготовился внимать!
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 22 2016, 17:22
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(KnightIgor @ Dec 22 2016, 18:32) *
Если автоматы EEPROM разных производителей есть плод Вашей разработки....

Такое простое дело сложно сделать зачем то по разному. Так что можете верить, или не верить, но они у всех одинаковы и одинаково отрабатывают процесс recovery.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 22 2016, 22:44
Сообщение #5


Гуру
******

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



Цитата(zltigo @ Dec 22 2016, 20:22) *
Такое простое дело сложно сделать зачем то по разному. Так что можете верить, или не верить, но они у всех одинаковы и одинаково отрабатывают процесс recovery.

Да, должны вроде. Но вот тут у меня FM31T378 почему-то никак не хочет прислушаться к доводам zltigo разума sad.gif
В процессе отладки, после обрыва одной из сессий на полдороге, вдруг перестал отвечать ACK на свой адрес и больше никак не приходит в себя.
И пока даже не понятно, что и делать - даже сброс отключением питания не помогает... sad.gif((
Хотя вроде и не должны микросхемы дохнуть просто от обрыва I2C-транзакции на полдороги. Но уже кажется, что бывают исключения.... wacko.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 23 2016, 06:35
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(jcxz @ Dec 23 2016, 00:44) *
Да, должны вроде. Но вот тут у меня FM31T378 почему-то никак не хочет прислушаться к доводам zltigo разума sad.gif
В процессе отладки, после обрыва одной из сессий на полдороге, вдруг перестал отвечать ACK на свой адрес и больше никак не приходит в себя.
И пока даже не понятно, что и делать - даже сброс отключением питания не помогает... sad.gif((
Хотя вроде и не должны микросхемы дохнуть просто от обрыва I2C-транзакции на полдороги. Но уже кажется, что бывают исключения.... wacko.gif

Я писал про логику автомата и выводе его в начальное состояние. То, что что то уже за автоматом I2C сдохло намертво, и совсем не обязательно, что от обмена (если однократный случай)это уже другое дело.
Я использую их-же FM24V10 в тяжелых условиях, посему мучал не только прерыванием транзакций и закорачиванием всего и вся в процессе, но и статикой. Завешивал таким образом многократно. И развешивал.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 23 2016, 16:20
Сообщение #7


Гуру
******

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



Цитата(zltigo @ Dec 23 2016, 09:35) *
Я писал про логику автомата и выводе его в начальное состояние. То, что что то уже за автоматом I2C сдохло намертво, и совсем не обязательно, что от обмена (если однократный случай)это уже другое дело.
Я использую их-же FM24V10 в тяжелых условиях, посему мучал не только прерыванием транзакций и закорачиванием всего и вся в процессе, но и статикой. Завешивал таким образом многократно. И развешивал.

Это у Вас несколько иное, просто FRAM. А FM31T37x - это Companion-чип - там внутре два слэйва FRAM + RTC с разными адресами на одной шине. Перестали отвечать оба сразу.
Есть кое-какое подозрение что что-то защёлкнулось и запомнилось в каких-то внутренних регистрах возможно внутри есть какой-то кондёр раз это RTC. Пусть полежит неск. дней без питания - может разрядится и оживёт.
С просто FRAM мы тоже много лет работает (только по SPI - FM25) - не было проблем.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- dimon_rub   Вопрос по I2C   Dec 15 2016, 12:21
- - haker_fox   QUOTE (dimon_rub @ Dec 15 2016, 20:21) Зд...   Dec 15 2016, 13:01
- - Obam   По бубну   Dec 15 2016, 13:11
- - pitt   Цитата(dimon_rub @ Dec 15 2016, 07:21) Зд...   Dec 15 2016, 13:25
- - dimon_rub   Спасибо. Хотелось услышать людей непосредственно р...   Dec 15 2016, 14:04
|- - KnightIgor   Цитата(dimon_rub @ Dec 15 2016, 16:04) Сп...   Dec 15 2016, 20:11
|- - dimon_rub   Цитата(KnightIgor @ Dec 15 2016, 20:11) М...   Dec 16 2016, 07:36
|- - Pridnya   Цитата(KnightIgor @ Dec 15 2016, 23:11) М...   Dec 16 2016, 09:35
|- - Сергей Борщ   QUOTE (Pridnya @ Dec 16 2016, 11:35) А во...   Dec 16 2016, 11:15
||- - Kabdim   Цитата(Сергей Борщ @ Dec 16 2016, 14:15) ...   Dec 16 2016, 12:05
||- - Сергей Борщ   QUOTE (Kabdim @ Dec 16 2016, 14:05) Если ...   Dec 16 2016, 12:11
|- - zltigo   Цитата(Pridnya @ Dec 16 2016, 11:35) Но в...   Dec 16 2016, 11:18
||- - Pridnya   Цитата(Сергей Борщ @ Dec 16 2016, 14:15) ...   Dec 16 2016, 12:05
|- - jcxz   Цитата(Pridnya @ Dec 16 2016, 12:35) Но в...   Dec 17 2016, 11:42
|- - zltigo   Цитата(jcxz @ Dec 17 2016, 13:42) Бывают ...   Dec 17 2016, 11:49
- - arhiv6   KnightIgor, а почему катастрофа?   Dec 16 2016, 06:07
|- - Сергей Борщ   QUOTE (arhiv6 @ Dec 16 2016, 08:07) Knigh...   Dec 16 2016, 06:48
|- - KnightIgor   Цитата(Сергей Борщ @ Dec 16 2016, 08:48) ...   Dec 17 2016, 16:47
|- - alexf   Бывают ситуации когда CPU нечего делать пока идет ...   Dec 17 2016, 20:48
||- - zltigo   Цитата(alexf @ Dec 17 2016, 22:48) Бывают...   Dec 18 2016, 08:09
|- - dimon_rub   Цитата(KnightIgor @ Dec 17 2016, 16:47) В...   Dec 20 2016, 06:52
|- - KnightIgor   Цитата(dimon_rub @ Dec 20 2016, 08:52) А ...   Dec 20 2016, 20:52
|- - dimon_rub   Цитата(KnightIgor @ Dec 20 2016, 20:52) Я...   Dec 21 2016, 08:26
- - Aleksandr Baranov   Я бы еще вспомнил процедуру "I2C bus recovery...   Dec 20 2016, 22:22
|- - alexf   Если я раз в секунду читаю пару датчиков за 1 мсек...   Dec 21 2016, 00:37
|- - KnightIgor   Цитата(Aleksandr Baranov @ Dec 21 2016, 00...   Dec 22 2016, 12:14
|- - jcxz   Просто "безудержное дёргание" и не должн...   Dec 22 2016, 12:53
||- - KnightIgor   Цитата(jcxz @ Dec 22 2016, 14:53) Просто ...   Dec 22 2016, 12:59
||- - jcxz   Цитата(KnightIgor @ Dec 22 2016, 15:59) Э...   Dec 22 2016, 13:05
|- - zltigo   Цитата(KnightIgor @ Dec 22 2016, 14:14) О...   Dec 22 2016, 14:51
|- - zltigo   Цитата(jcxz @ Dec 23 2016, 18:20) Это у В...   Dec 24 2016, 07:09
- - AVR   Мои 5: когда я работал с I2C на AVR то на коротком...   Dec 23 2016, 07:07


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

 


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


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