Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2018-ноя-15 11:37

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Реализация slave I2C
СообщениеДобавлено: 2018-май-25 11:04 
Не в сети

Зарегистрирован: 2017-авг-09 12:38
Сообщения: 56
Уважаемые форумчане прошу помощи. Дело в том, что сейчас занят разработкой демонстрационного стенда. В связи управление которым должно осуществляться миландровским контроллером. Поскольку приходится собирать данные с множества датчиков как логических так и аналоговых пришлось задействовать два МК 1986ВЕ92. Я решил, что пусть эти МК общаются друг с другом через интерфейс I2C. Т.е. один из МК будет играть роль Мастера, а другой ведомого. И вот теперь, когда программная очередь дошла до разработки программ общения между ними я столкнулся с проблемой. Я взял примеры из предлагаемых Миландром. Это "Transmit" и "Recive". Записал эти примеры в МК на двух отладочных стендах и соединил их. Запустил и увидел, что идет какая то попытка общения, которая довольно скоро прекращается. Согласно стандарта этого интерфейса источником тактового сигнала должен быть абонент Мастер, а в моем случае они оба его генерируют! Я полазил по форуму и обнаружил, что аппаратного решения этой проблемы нет. Все рекомендуют программное решение. Поэтому прошу либо Вас либо выложить свое решение этого вопроса (если Вы это делали) либо ткнуть носом как проще найти решение этого вопроса.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация slave I2C
СообщениеДобавлено: 2018-май-25 12:28 
В сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1176
Откуда: Тула
vladh писал(а):
... Согласно стандарта этого интерфейса источником тактового сигнала должен быть абонент Мастер, а в моем случае они оба его генерируют! ...

для справки: слейв при необходимости может затягивать сигнал синхронизации как для битов, так и для слов.

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация slave I2C
СообщениеДобавлено: 2018-май-25 12:41 
Не в сети

Зарегистрирован: 2017-авг-09 12:38
Сообщения: 56
prostoRoman писал(а):
для справки: слейв при необходимости может затягивать сигнал синхронизации как для битов, так и для слов.

А что Вы подразумеваете под фразой затягивать сигнал синхронизации?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация slave I2C
СообщениеДобавлено: 2018-май-25 12:52 
В сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1176
Откуда: Тула
vladh писал(а):
prostoRoman писал(а):
для справки: слейв при необходимости может затягивать сигнал синхронизации как для битов, так и для слов.

А что Вы подразумеваете под фразой затягивать сигнал синхронизации?


http://www.avislab.com/blog/i2c-slave_ru/

Синхронизация выполняется с использованием подключения к линии SCL по правилу монтажного И. Это означает, что ведущий не имеет монопольного права на управление переходом линии SCL из НИЗКОГО состояния в ВЫСОКОЕ. В том случае, когда ведомому необходимо дополнительное время на обработку принятого бита, он имеет возможность удерживать линию SCL в низком состоянии до момента готовности к приему следующего бита. Таким образом, линия SCL будет находиться в НИЗКОМ состоянии на протяжении самого длинного НИЗКОГО периода синхросигналов. Устройства с более коротким НИЗКИМ периодом будут входить в состояние ожидания на время, пока не кончится длинный период. Когда у всех задействованных устройств кончится НИЗКИЙ период синхросигнала, линия SCL перейдет в ВЫСОКОЕ состояние. Все устройства начнут проходить ВЫСОКИЙ период своих синхросигналов. Первое устройство, у которого кончится этот период, снова установит линию SCL в НИЗКОЕ состояние. Таким образом, НИЗКИЙ период синхролинии SCL определяется наидлиннейшим периодом синхронизации из всех задействованных устройств, а ВЫСОКИЙ период определяется самым коротким периодом синхронизации устройств. Механизм синхронизации может быть использован приемниками как средство управления пересылкой данных на байтовом и битовом уровнях. На уровне байта, если устройство может принимать байты данных с большой скоростью, но требует определенное время для сохранения принятого байта или подготовки к приему следующего, то оно может удерживать линию SCL в НИЗКОМ состоянии после приема и подтверждения байта, переводя таким образом передатчик в состояние ожидания. На уровне битов, устройство, такое как микроконтроллер без встроенных аппаратных цепей I2C или с ограниченными цепями, может замедлить частоту синхроимпульсов путем продления их НИЗКОГО периода. Таким образом скорость передачи любого ведущего адаптируется к скорости медленного устройства.

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация slave I2C
СообщениеДобавлено: 2018-май-25 13:06 
Не в сети

Зарегистрирован: 2017-авг-09 12:38
Сообщения: 56
Понятно, спасибо. Но этот способ понижения тактовой частоты общения двух МК мне как бы сейчас не нужен. А вот я сейчас увидел, что если правильно работать с регистром STA , то можно сделать и слейв-приемник.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация slave I2C
СообщениеДобавлено: 2018-май-25 13:21 
Не в сети

Зарегистрирован: 2017-авг-09 12:38
Сообщения: 56
Я так понимаю, что для того, чтобы перевести контроллер в режим слейв надо сделать так чтобы бит LOST ARB стал равным 1. А его можно получить если при попытке контроллера выставить SDA в высокий уровень, ведущий контроллер будет удерживать эту линию в низком.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация slave I2C
СообщениеДобавлено: 2018-май-25 13:32 
Не в сети

Зарегистрирован: 2017-авг-09 12:38
Сообщения: 56
Вот сейчас мне важно узнать что вызывает появление бита прерывания? И работает ли прерывание если отключать бит EN_I2C в регистре CTR?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация slave I2C
СообщениеДобавлено: 2018-май-25 14:35 
Не в сети

Зарегистрирован: 2017-авг-09 12:38
Сообщения: 56
Проверил, и выявил что прерывание не функционирует, когда модуль отключен. :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация slave I2C
СообщениеДобавлено: 2018-май-25 15:34 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 175
Откуда: ПКК "Миландр"
Модуль I2C может работать только в режиме мастер. Аппаратной поддержки ведомого режима нет.

Обсуждение - viewtopic.php?f=33&t=657&hilit=I2C+Slave

Требуется программная реализация, примера к сожалению нет.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация slave I2C
СообщениеДобавлено: 2018-май-28 09:48 
Не в сети

Зарегистрирован: 2017-авг-09 12:38
Сообщения: 56
Vasiliy писал(а):
Модуль I2C может работать только в режиме мастер. Аппаратной поддержки ведомого режима нет.

Обсуждение - viewtopic.php?f=33&t=657&hilit=I2C+Slave

Требуется программная реализация, примера к сожалению нет.

Спасибо за информацию. Следовательно бессмысленно конфигурировать эти выводы ведомого контроллера для работы в режиме I2C. Но тогда может кто подскажет как мне заставить обрабатывать прерывания по изменению состояния на выводе на который будут поступать синхроимпульсы от Мастера?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация slave I2C
СообщениеДобавлено: 2018-май-28 11:08 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 670
Откуда: г. Санкт-Петербург
vladh писал(а):
... Я решил, что пусть эти МК общаются друг с другом через интерфейс I2C.

Чем Вас не устраивают другие интерфейсы для связи двух МК (SPI, UART, CAN)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация slave I2C
СообщениеДобавлено: 2018-май-28 11:13 
В сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1176
Откуда: Тула
vladh писал(а):
как мне заставить обрабатывать прерывания по изменению состояния на выводе на который будут поступать синхроимпульсы от Мастера?

Вероятно наиболее удобно будет настроить пины как входы захвата одного из таймеров (только не инверсные каналы). Далее сугубо творчество, креатив.
1. По прерыванию события захвата "зажимать" SCL "в ноль" и делать свои медленные делишки программно, всё программно...
2. Каким-то чудесным образом как-то так настроить DMA, чтобы по захвату происходило копирование состояние ног порта в память, а уже потом это всё анализировать.
3. Можно как-то комбинировать это всё.
4. Можно же просто на время работы i2c сидеть и ждать (если задача и трафик позволяют)

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация slave I2C
СообщениеДобавлено: 2018-май-28 13:54 
Не в сети

Зарегистрирован: 2017-авг-09 12:38
Сообщения: 56
vasili писал(а):
vladh писал(а):
... Я решил, что пусть эти МК общаются друг с другом через интерфейс I2C.

Чем Вас не устраивают другие интерфейсы для связи двух МК (SPI, UART, CAN)?

Почему не устраивают - устраивают. Просто под UART у меня один уже занят. Он работает по Модбас интерфейсу, под руководством ноутбука. SPI вроде как три вывода необходимо задействовать, а у меня с этим большая напряженка, почти все выводы обоих МК задействованы. Я бегло просмотрел форум и вроде не увидел у людей жалобы на работу с I2C. Поэтому и остановил на нем выбор. А сейчас уже плата разведена и на днях прибудет. И вот теперь приходится выкручиваться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация slave I2C
СообщениеДобавлено: 2018-май-28 14:32 
Не в сети

Зарегистрирован: 2017-авг-09 12:38
Сообщения: 56
Вот сейчас увидел, что выводы, PF2 и PF3 у меня в обоих контроллерах не задействованы, а это в Переопределенном режиме приемная и передающая часть CAN2 интерфейса. И тогда у меня еще один вопрос можно ли напрямую подключить эти два моих МК между собой?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация slave I2C
СообщениеДобавлено: 2018-май-28 16:11 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 670
Откуда: г. Санкт-Петербург
https://www.mikrocontroller.net/attachm ... AP2921.pdf


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB