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

 
 
> stm32 i2c
Dron_Gus
сообщение Nov 6 2009, 08:26
Сообщение #1


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

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Что-то не совсем адекватно работает модуль I2C2. Или я что-то не учел.
Кто-нить с ним работал. Есть какие-нить дополнительные грабли, кроме описанных в errat'е?
Симптомы: идет постоянный обмен с 8 устройствами. STM32 мастер. В какой-то момент общение со всеми устройствами выпадает на Ack Failed в момент передачи адреса. Отваливаются сразу все. Через некоторое время обмен восстанавливается.

З.Ы. на первом i2c висят часы и с ними никаких проблем не обнаружено.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
drcepera
сообщение Jul 10 2013, 09:00
Сообщение #2





Группа: Новичок
Сообщений: 4
Регистрация: 9-07-13
Из: СПб
Пользователь №: 77 447



Доброго времени суток. Юзаю i2c на STM32F4DISCOVERY для опроса датчика. Использую библиотеку CPAL. Появилась проблема, которая вот уже много времени гложет мозг. Суть в следующем.

CPAL проверяет таймауты, для чего на CPAL у меня выделен TIM3, по прерыванию раз в мс вызывается библиотечная функция CPAL_I2C_TIMEOUT_Manager(). И все вроде хорошо. НО! Возникают моменты, когда программа затыкается на __CPAL_I2C_TIMEOUT(). Это дефайн, который представляет из себя цикл, выход из которого возможен по одному из двух условий: 1) наступило ожидаемое событие (например, скинулся бит BUSY статусного регистра); 2) превышен лимит ожидания. То есть, если щелкает таймер, то рано или поздно цикл будет покинут. НО! При зависании в __CPAL_I2C_TIMEOUT() таймер хоть и работает, и выставлены нужные флаги, но прерывание, и соответственно, подсчет таймингов, не вызываются.

Привожу рисунок, на нем - собственно место затыка во время отладки, а также регистры 3-го таймера. Ниже по коду в комментах - определение самой __CPAL_I2C_TIMEOUT()

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Lotor
сообщение Jul 10 2013, 09:43
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Цитата(drcepera @ Jul 10 2013, 13:00) *
таймер хоть и работает, и выставлены нужные флаги, но прерывание, и соответственно, подсчет таймингов, не вызываются.

Так определите, кто (где, почему) запретил прерывание, если оно не вызывается.


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Dron_Gus   stm32 i2c   Nov 6 2009, 08:26
- - Dron_Gus   Покопался на форуме ST. Вообщем, хотели как лучше,...   Nov 6 2009, 12:37
- - IgorKossak   Посмотрите здесь свежак: STM32F10xxx devices: adva...   Nov 6 2009, 18:01
- - Dron_Gus   Цитата(IgorKossak @ Nov 6 2009, 21:01) По...   Nov 8 2009, 18:57
|- - KnightIgor   Цитата(Dron_Gus @ Nov 8 2009, 20:57) Тепе...   Jul 11 2012, 08:32
|- - DmitryM   Цитата(KnightIgor @ Jul 11 2012, 12:32) Е...   Jul 11 2012, 10:00
|- - esaulenka   Цитата(KnightIgor @ Jul 11 2012, 12:32) М...   Jul 10 2013, 19:23
- - brag   У меня тоже он че-то не идет. Работает некоторое в...   Aug 12 2011, 22:29
- - rexton   Еще вопрос Пытаюсь запустить обмен по шине на пре...   Jul 10 2012, 07:29
|- - adnega   Цитата(rexton @ Jul 10 2012, 11:29) Еще в...   Jul 10 2012, 09:11
- - kan35   Рекомендации ST по поводу I2C: Это периферийное у...   Jul 10 2012, 10:23
- - sls_   Прошу прощения, разобрался, напутал в чтении.   Jul 18 2012, 09:26
|- - LeonVS   Всем доброго времени суток! Помогите разобрать...   Mar 8 2013, 18:50
|- - KnightIgor   Цитата(LeonVS @ Mar 8 2013, 19:50) Всем д...   Mar 11 2013, 08:49
- - drcepera   Тээк.. Если прерывание разрешено в таймере (бит Up...   Jul 10 2013, 12:22
|- - _Артём_   Цитата(drcepera @ Jul 10 2013, 15:22) Есл...   Jul 10 2013, 12:45
|- - drcepera   Цитата(_Артём_ @ Jul 10 2013, 16:45) Нужн...   Jul 10 2013, 13:08
|- - Lotor   Цитата(drcepera @ Jul 10 2013, 17:08) то ...   Jul 10 2013, 16:38
- - drcepera   OMG.. Извиняюсь, товарищи. Нашел таки косяк ) Датч...   Jul 19 2013, 09:38
- - Ruslan-maniak   Хочу поднять эту тему. Пытаюсь завести I2C через C...   Feb 25 2014, 11:16
- - kan35   Я убрал всю инициализацию таймеров в CPAL (закомме...   Feb 26 2014, 16:57
- - Ruslan-maniak   Понятно. Спасибо.   Feb 27 2014, 02:06
- - Ruslan-maniak   А ещё такой вопрос, не касающийся CPAL: может ли б...   Feb 27 2014, 10:16


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

 


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


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