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

 
 
> STM32 I2C, почему подвисает иногда?
kan35
сообщение Oct 12 2011, 08:32
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY);

Иногда подвисание происходит вот на этой конструкции, заметил, что такое происходит при остановках JTAGом. Никакие ресеты не помогают - спасает только передергивание питание. Если JTAGом не останавливать, то вроде бы не зависает, но как то боязно, потому что не понятно... Что это такое? и как с этим бороться?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Nikitoc
сообщение Oct 22 2011, 14:18
Сообщение #2


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Мда. Просто чертовщина какая-то! STM32F103С8 просто непредсказуем в режиме слейва. Получив свой адрес с требованием передачи он может сразу же после чтения статусных регистров передать какой-то "левый" байт. Не дожидаясь загрузки регистра данных!!! И это происходит не всегда. А только при получении перед этим некоторых данных. К примеру, когда мастер отправляет ему два байта 0х1А 0х80 или 0х1А 0х56 (может быть есть еще какие-то варианты, я не проверял). При этом на комбинации 0х1А 0х53 или 0х1А 0х57 или 0х1А 0х52 он реагирует нормально, т.е. сначала загружает ответный байт в регистр DR, а затем корректно передает его. Все это не зависит от частоты. Я пробовал от 10 до 400 кГц. Результаты идентичны. Кто-нибудь работал с stm32 в режиме слейва? Можете привести пример кода? Неделю мучаюсь с этим!
P.S.: Естественно, присутствие акселерометра на шине никоим образом не влияло на эту ситуацию (он был выпаян, ничего не изменилось).
Go to the top of the page
 
+Quote Post



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

 


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


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