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

 
 
 
Reply to this topicStart new topic
> i2c фильтрация
Слесарь
сообщение Sep 29 2010, 16:01
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Здравствуйте!
Мне необходимо фильтровать двунаправленный трафик меж микросхемой контроллером и микросхемой драйвером по линии i2c.
Буду использовать для этой цели контроллер PIC18 серии.
Мой контроллер выполняет основную работу и должен лишь по мере необходимости(на время активности i2c) прерываться для фильтрации трафика. Если обнаружаться на линии i2c определенные команды данные, коорденировать свою работу. Некоторые определенные команды данные на линии должен уметь подменять.
Мой PIC18 уже использует блок MSSP для собственных нужд и по этому необходимо задействовать свободные порты и эмулировать работу i2c. Необходимо задействовать входы INT1 INT2 для прерывания основной программы на период активности линии i2c.

На правильном ли я пути? Возможна ли подобная реализация? Подкинте исходник C, если кто сталкивался с эмуляцией i2c ?
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Sep 29 2010, 18:03
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Когда-то делал софтовую реализацию SLAVE i2c на AVR. На ассемблере, 11МГц, одно прерывание. Максимум 100кГц. При незначительной дополнительной загрузке. Оно и понятно, вам надо отловить 5мкс при этом. Для 400кГц вам потребуется вычислительная мощность ещё более значительная. Речт идёт об устойчивой, безглючной работе.
Поэтому - примените лучше МК, с необходимым количеством аппаратных i2c устройств. Тем более, что их вагон.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Sep 29 2010, 18:46
Сообщение #3


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Слесарь @ Sep 29 2010, 20:01) *
Некоторые определенные команды данные на линии должен уметь подменять.

Каким образом сторонний контроллер сможет подменять данные, передаваемые другим контроллером?
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Sep 29 2010, 19:06
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Цитата(SasaVitebsk @ Sep 29 2010, 22:03) *
Поэтому - примените лучше МК, с необходимым количеством аппаратных i2c устройств. Тем более, что их вагон.
Нет. В том контроллере который могу использовать всего один модуль поддерживающий i2c. Или я плохо читал документацию. Это pic18f67j60. 25 мГц x PLL
Я слушал сигналы в линии, они не такие уж высокочастотные. По спецификации к микросхеме максимум 400 kbit/s. Но на слух значительно меньше.
Прерывание, как понимаю, мне необходимо чтоб засечь начало посылки и переориентировать работу контроллера на обработку входящей последовательности бит. Далее контроллер отсылает по другому каналу эту последовательность по назначению и возращается к прежней работе.
Я ранее эмулировал на меньших тактовых частотах SPI протокол, проблем небыло. В основном для микросхем AD7730

Цитата(sonycman @ Sep 29 2010, 22:46) *
Каким образом сторонний контроллер сможет подменять данные, передаваемые другим контроллером?

По одному входу принял, подменил, и по другому выходу отдал по назначению.
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 29 2010, 20:08
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Слесарь @ Sep 30 2010, 01:06) *
По одному входу принял, подменил, и по другому выходу отдал по назначению.
А синхронность работы вас не волнует? Что за устройство логгируете? Если обмен с EEPROM какой-нибудь, то реализуют это не так. Не нужно подменять какие-то отдельные данные в потоке, а следует полностью эмулировать работу EEPROM, делая изменения в буфере, выделенном для этой эмуляции.
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Sep 29 2010, 20:34
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Цитата(rezident @ Sep 30 2010, 00:08) *
А синхронность работы вас не волнует?

Какая еще синхронность? Синхронность только импульсами SCL согласно протокола i2c.
Вижу сложность только с вынужденным откликом INT на запросы или данные всех устройств на шине. Для разбора кому запрос или данные предназначены. Отнимает ресурс процессора.
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 29 2010, 21:01
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Ага. В корневом топике указаны какие-то "микросхема контроллер" и "микросхема драйвер", они такие суперсекретные что не имеют названия? И почему двунаправленный "трафик"-то? Драйвер умеет в режиме мастера работать? А контроллер соответственно режим мультимастера поддерживает?
Go to the top of the page
 
+Quote Post
Слесарь
сообщение Sep 29 2010, 22:09
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Всем спасибо! вопрос решен.
Пробно удалось принять и передать по i2c с помощью эмулятора

Цитата(rezident @ Sep 30 2010, 01:01) *
Ага. В корневом топике указаны какие-то "микросхема контроллер" и "микросхема драйвер", они такие суперсекретные что не имеют названия?
Контроллер не смотрел какой. Не важно. А драйвер, если его можно так называть, это TEF6901. Но какое собственно это имеет значение по существу вопроса.
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 29 2010, 23:40
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Слесарь @ Sep 30 2010, 04:09) *
Контроллер не смотрел какой. Не важно. А драйвер, если его можно так называть, это TEF6901. Но какое собственно это имеет значение по существу вопроса.
А что такого секретного по шине предается, что не описано в datasheet TEF6901A? Или все-таки не сам драйвер, а залоченную автомагнитолу курочите?
Go to the top of the page
 
+Quote Post

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

 


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


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