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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> I2C анализатор
Woodoo
сообщение Aug 4 2006, 06:06
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 26-05-05
Из: Севастополь
Пользователь №: 5 391



Доброго времени суток.
Есть необходимость собрать анализатор шини I2C.

Анализатор должен собирать всю информацию о шине, т.е. все возможные временные параметры, такие как длительность единиц, длительность нолей, частота следования клока, качество старт и стоп условий, нарастание-спад уровней, время удержания акнолоджеса ведомым, возникновения коллизий на шине (хотя едвали получится, из-за специфики работы мультимастера). Так же вся собранная информация + сами данные должны передаваться в компьютер по рс-232.

Ничего сложного нет, как говорится: бери да пиши... НО
Аппаратный I2C AVR не обладает всеми нужными ф-циями, им можно только данные собирать. Следовательно нужен програмный I2C. Но сильно сомниваюсь, что програмный и2ц сможет отслеживать шину, работающую на полной скорости (до МГц или хотя бы до 400 кГц клока).

Вопрос: что посаветуйте, может стоит воспользоваться более скоростным камнем? Или может собрать часть анализатора на жесткой логике?
Может у кого был подобный проект?
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Aug 4 2006, 07:17
Сообщение #2


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

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Сильно зависит от точности, если хватит 10-20 сэмплов на измеряемый период, то почему нет? На какой-нибудь новой меге, на 16-20 MHz должно хватить. Если надо точнее, брать ПЛИС на 64-128 триггеров и делать на ней захват. А управлять уже все равно чем.

Сообщение отредактировал beer_warrior - Aug 4 2006, 07:18


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
vanner
сообщение Aug 4 2006, 13:58
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 23-10-05
Пользователь №: 10 016



Пробовал сделать более простой анализатор, отлов стартов, стопов, аков, неаков, и самих байт + вывод в ком порт. На меге16 на 16 мегагерц сходу не удалось. Т.к. на 400 кГц иис нужно отловить уровень sda максимум за 20 команд, на си не получилось уложиться, попробую скоро написать на асме. может для 400 и получиться.
Go to the top of the page
 
+Quote Post
Tiro
сообщение Aug 4 2006, 15:19
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768



Уважаемый Woodoo!

Цитата(Woodoo @ Aug 4 2006, 09:06) *
Есть необходимость собрать анализатор шини I2C.

специфики работы мультимастера). Так же вся собранная информация + сами данные должны передаваться в компьютер по рс-232.

и2ц сможет отслеживать шину, работающую на полной скорости (до МГц или хотя бы до 400 кГц клока).

Вопрос: что посаветуйте, может стоит воспользоваться более скоростным камнем? Или может собрать часть анализатора на жесткой логике?
Может у кого был подобный проект?


У Вас скорость И2Ц превышает скорость РС-232! Вам не успеть передать трафик И2Ц в ПЭВМ при интенсивном обмене. Все-таки что Вас больше интересует : трафик на И2Ц или временные характеристики стопов, стартов, тактовых импульсов и прочего?

Можно предложить следующие подходы :

1. Интересует все. Делаем скоростной анализатор (берем готовый), например, на ПЛИС + USB, опрашиваем SDA и SCL с необходимым разрешением по времени. Анализ времянок и трафика в ПЭВМ (программу пишем).

2. Интересует трафик. Пользуемся встроенным в AVR аппаратным TWI, передаем снятый трафик по USB.

3. Интересуют времянки, но можно измерять не все сразу, а например по выбору - сначала старты, потом стопы и т.д. Тогда можно анализировать прямо в MCU, результаты скидывать через RS-232.

Сам я И2Ц не анализировал, но снимал другой протокол по варианту 1. Использовал платку с Altera EPM7064AETC + FTDI FT245ВМ.

Сообщение отредактировал Tiro - Aug 4 2006, 15:20
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Aug 4 2006, 19:17
Сообщение #5


Гуру
******

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



Цитата(Woodoo @ Aug 4 2006, 09:06) *
Доброго времени суток.
Есть необходимость собрать анализатор шини I2C.

Анализатор должен собирать всю информацию о шине, т.е. все возможные временные параметры, такие как длительность единиц, длительность нолей, частота следования клока, качество старт и стоп условий, нарастание-спад уровней, время удержания акнолоджеса ведомым, возникновения коллизий на шине (хотя едвали получится, из-за специфики работы мультимастера). Так же вся собранная информация + сами данные должны передаваться в компьютер по рс-232.

Ничего сложного нет, как говорится: бери да пиши... НО
Аппаратный I2C AVR не обладает всеми нужными ф-циями, им можно только данные собирать. Следовательно нужен програмный I2C. Но сильно сомниваюсь, что програмный и2ц сможет отслеживать шину, работающую на полной скорости (до МГц или хотя бы до 400 кГц клока).

Вопрос: что посаветуйте, может стоит воспользоваться более скоростным камнем? Или может собрать часть анализатора на жесткой логике?
Может у кого был подобный проект?


Аппаратный не подойдёт. Там же надо адрес забивать. А если он не известен?

Посмотри мой проект PULT I2C. В исходниках. Там 2313 работает в качестве SLAVE програмным способом. Вам только прерывание надо разобрать. На 12М по-моему до 100кГц работала. Конечно переделать предётся, но посмотреть можно.
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 4 2006, 21:35
Сообщение #6


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(SasaVitebsk @ Aug 4 2006, 22:17) *
Там же надо адрес забивать. А если он не известен?

Установить бит General Call.
Go to the top of the page
 
+Quote Post
WHALE
сообщение Aug 5 2006, 03:38
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Цитата(defunct @ Aug 5 2006, 01:35) *
Цитата(SasaVitebsk @ Aug 4 2006, 22:17) *

Там же надо адрес забивать. А если он не известен?

Установить бит General Call.

так General Call вроде тоже фиксированный адрес имеет-0?или я ошибаюсь?
Я делал на tiny2313 монитор квадратной на ее usi-там есть прерывание по приходу старта-очень удобно.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
bodja74
сообщение Aug 5 2006, 14:05
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Согласен с Whale
Тоже была мысля сделать монитор И2Ц,кинулся на меги там только фиксированный адресс и общий,
а на тини2313 адресации нет и сам USI попроще чем TWI у мег.
По пинам можно в цикле читать длительность,а по прерыванию паковать байты,жаль только
что нет флажка или прерывания СТОП и протокол шины не привязан к частоте,можно управлять хоть тумблерами ,поэтому расчет длительности может быть только в определенных пределах.
В любом случае ,если что получится пишите мне на личку,мне тоже эта тема интересна.
Go to the top of the page
 
+Quote Post
ValeraK
сообщение Aug 8 2006, 04:35
Сообщение #9


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

Группа: Новичок
Сообщений: 164
Регистрация: 11-01-05
Из: Россия, Снежинск
Пользователь №: 1 900



Цитата(Woodoo @ Aug 4 2006, 12:06) *
Или может собрать часть анализатора на жесткой логике?
Может у кого был подобный проект?


Я делал подобный анализатор потока по I2C аппаратно:
74Ac74 (между стробами инвертор) - детектор start/stop
74Ac299 - преобразователь из последовательного кода в параллельный
далеее уже в параллельном виде на AtMega8515 в ней буфферизация fifo
и передача (через раз'ём програматора) в компьютер.

Направление передачи данных master<=>slave не анализировал,
но думаю это решается врезкой в SDA/SCL резисторов и установкой
быстродействующих компараторов.
Go to the top of the page
 
+Quote Post
yarunt
сообщение Dec 21 2006, 14:30
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 215
Регистрация: 13-12-06
Из: fghgfh
Пользователь №: 23 476



Есть готовый вариант
Прикрепленные файлы
Прикрепленный файл  iiclabium.rar ( 37.85 килобайт ) Кол-во скачиваний: 252
 


--------------------
Нельзя впихнуть,невпихуемое?МОЙ БЛОГ
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Dec 22 2006, 01:30
Сообщение #11


Гуру
******

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



Цитата(SasaVitebsk @ Aug 5 2006, 14:05) *
Аппаратный не подойдёт. Там же надо адрес забивать. А если он не известен?

Посмотри мой проект PULT I2C. В исходниках. Там 2313 работает в качестве SLAVE програмным способом. Вам только прерывание надо разобрать. На 12М по-моему до 100кГц работала. Конечно переделать предётся, но посмотреть можно.


Цитата(bodja74 @ Aug 5 2006, 14:05) *
Согласен с Whale
Тоже была мысля сделать монитор И2Ц,кинулся на меги там только фиксированный адресс и общий,
а на тини2313 адресации нет и сам USI попроще чем TWI у мег.
По пинам можно в цикле читать длительность,а по прерыванию паковать байты,жаль только
что нет флажка или прерывания СТОП и протокол шины не привязан к частоте,можно управлять хоть тумблерами ,поэтому расчет длительности может быть только в определенных пределах.
В любом случае ,если что получится пишите мне на личку,мне тоже эта тема интересна.


Да господа. Но времена меняются.

Обратите внимание на регистр маски (TWAMR) для МК Atmega88. И мой проект красиво ложится на аппаратные возможности данной микрухи. Жаль что на момент написания её ещё не было. smile.gif Таким образом можно (уже можно) отвечать на любой адрес и делать програмный монитор I2C. (Конечно без тайминга зато на достаточно высокой скорости).

Это конечно прекрасно, что разработчики AVR учитывают пожелания разработчиков (уж не знаю как они до них доходят), но это возвращает нас к уже состоявшемуся разговору о серьёзной непродуманности многих решений и внесении заплаток "на ходу". Что плодит множество решений при ощущении отсутствия общего подхода. А с точки зрения программиста, серьёзно усложняет написание и заимствование библиотек.
Надо непрерывно следить за новыми кристаллами. Трудно предугадать что ещё они там подкинут.

Давайте же выпьем за ATMEGA888!
Go to the top of the page
 
+Quote Post
andr_doy
сообщение Dec 22 2006, 15:43
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 12-09-06
Пользователь №: 20 300



Собрал вот такой
работает - очень помог (покруче бы ваще супер было бы)
Тема очь интересна
http://sterr.narod.ru/i2cmon/index.htm
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Dec 22 2006, 22:58
Сообщение #13


Гуру
******

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



Цитата(andr_doy @ Dec 22 2006, 15:43) *
Тема очь интересна


Не думаю что тема очень интересна. По совершенно простой причине. Сам протокол I2C ну очень простой, очень чётко прописанный и совершенно статический. Реализация его не вызывает не малейшей проблемы. Ну если только какой нибудь мультимастер.

Иное дело какой-нибудь RS485 с несколькими соподчинёнными или USB. В таких местах нельзя остановить прогу и посмотреть. Нельзя её пройти по шагам. Протокол эффективен только в движении. Например в одном изделии возникала ошибка на 1.5Мб передаваемых данных. Как её вычислить? Для этих дел я применяю анализатор. Программы от него "выкинул" в раздел "исходники программ и библиотек". Чё то может быть и не доработано. Где-то может и не всё описано, - ну так под себя же делал. Посмотреть любую шину там - раз плюнуть. Возможно после Нового года, если освобожусь, - выложу в комплекте в виде законченного устр-ва. Почти законченного biggrin.gif . Надо понимать, что "нижней" части универсальной не бывает. Часто приходится переписывать под конкретный случай.
Ну и всё таки это оценочное, а не измерительное устр-во.

Сразу не выложил так как мой стенд достаточно "тяжеловесный". Например у меня к процу M8515 подрублено 256K внешней памяти. Память динамическая. Можно поставить 1М. Проц поддерживает до 256 различных способов "съёма". Попробую упростить для народа. Если нужно конечно.
Go to the top of the page
 
+Quote Post
khach
сообщение Dec 23 2006, 15:51
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Проще всего конечно анализировать двухканальным цифровым осциллографом с программной опцией анализатора сериальных интерфейсов. Но жаба душит. Хотелось бы что-то попроще, с интеллектуальной детекцией неисправностей (звоны, одновременность фронтов, подвисания на шине). Изделие на базе PCF8584 хорошо для изучения протокола работающей системы, а вот если это своя собственная разработка, в принципе работающая, но раз в день зависающая намертво....
Для ловли таких глюков надо нечто на основе FPGA небольшой, чтобы быстро работало и могло хранить небольшую предисторию фатального глюка. А вход на быстрых двухпороговых компараторах, чтобы отличало хотя бы 1,0,Z состояние, а лучше и с детектором тока, чтобы понять, какой передатчик тянет линию вверх или вниз. Ну и выход на USB, с возможностью автономной работы (ожидания неисправности). А поскольку система неочень простая, то желательно кроме I2C еще и SPI, и CAN анализировать. Есть у кого-лидо идеи по поводу построения IP core такого анализатора?
Go to the top of the page
 
+Quote Post
bodja74
сообщение Dec 23 2006, 22:06
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Цитата(SasaVitebsk @ Dec 22 2006, 01:30) *
Да господа. Но времена меняются.

Обратите внимание на регистр маски (TWAMR) для МК Atmega88.

Давайте же выпьем за ATMEGA888!


Я уже давно хлопаю глазами на эту линейку,в дополнение скажу есть куча ШИМ и возможность внешнего прерывания практически от каждой ноги,что решает очень много проблем по перехвату внешних событий .Жаль инфы на русском по ним мало,на досуге сделаю себе компьютерный перевод.
Go to the top of the page
 
+Quote Post

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

 


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


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