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

 
 
> Проблема с I2C, Проблема обмена ядра I2C на ПЛИС Spartan3E и микросхемы ADV7181C
AlphaMil
сообщение Sep 3 2010, 00:49
Сообщение #1


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

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Уважаемые...
Собрал проект: программный процессор управляет ядром I2C, ПЛИС Spartan3E. Пытаюсь управлять микросхемой захвата видео ADV7181C. При этом на осциллографе при передаче адреса вижу нормальную пачку импульсов от ПЛИС к м/с (стартовая комбинация и 8 бит данных), НО вот бит подтверждения в 0 не опускается, снижается только где-то на 1/3, и распознается как лог 1, т.е. м/с адрес не подтверждает и обмена нет. С другой стороны - снижается же немножко, т.е. адрес верный (адрес задан выводом ALSB).
Может проблема в ядре? Или в выводе ПЛИС (использую обычный IO)???
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
barabek
сообщение Sep 3 2010, 01:06
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(AlphaMil @ Sep 3 2010, 10:49) *
снижается только где-то на 1/3, и распознается как лог 1, т.е. м/с адрес не подтверждает и обмена нет.


Такое ощущение, что м/с пытается подтвердить, но у ПЛИС вывод не в открытом колекторе (стоке), а в пуш-пул. Соответственно у него "сильная" "1" и напряжение питание делится на открытых транзистарах ПЛИС (верхний) и ADV(нижний). Проверте конфигурацию вывода данных.
Go to the top of the page
 
+Quote Post
AlphaMil
сообщение Sep 3 2010, 01:14
Сообщение #3


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

Группа: Участник
Сообщений: 135
Регистрация: 1-01-10
Из: Минск, Беларусь
Пользователь №: 54 588



Я это тоже подозреваю. Но вот как сделать или сымитировать открытый коллектор? После синтеза заметил - на выходах I2C используются почему-то не двунаправленные буфферы.
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 3 2010, 01:45
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(AlphaMil @ Sep 2 2010, 20:14) *
Я это тоже подозреваю. Но вот как сделать или сымитировать открытый коллектор? После синтеза заметил - на выходах I2C используются почему-то не двунаправленные буфферы.

assign pipa = popa ? pipa_data : 1'bz;


--------------------
Go to the top of the page
 
+Quote Post
barabek
сообщение Sep 3 2010, 01:53
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831



Цитата(AlphaMil @ Sep 3 2010, 11:14) *
Я это тоже подозреваю. Но вот как сделать или сымитировать открытый коллектор? .

Имитировать не надо. В альтере можно самому делать настройки режимов выходов. В assignment editir или pin editor. Наверняка у хилых что-то похожее, с ними не работал. 
Go to the top of the page
 
+Quote Post
ShSerge
сообщение Sep 3 2010, 08:37
Сообщение #6





Группа: Новичок
Сообщений: 4
Регистрация: 1-02-08
Пользователь №: 34 646



Проверьте, не является ли ваш экземпляр микросхемы перемаркированной 7181B (у нее действительно другой адрес). Попали на такую партию случайно. Заподозрили неладное, когда цех промывал плату, надпись начала сползать biggrin.gif . Подключили, как 7181B (отличие - пара проводов) и все заработало.
Go to the top of the page
 
+Quote Post
Alex_VI
сообщение Sep 3 2010, 09:26
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 56
Регистрация: 17-11-08
Из: Москва
Пользователь №: 41 710



не так давно боролся с аналогичной задачей. Микросхема только AD9985, что сути не меняет.

По поводу открытого коллектора. Внешний порт объявляем двунаправленным и заводим его линией в процессор. В дизайне процессора уже реализована эмуляция открытого коллектора. (в спартане нет аппаратного драйвера с открытым коллектором).

Софт пишется в SDK? Я столкнулся с тем, что драйвер I2C шины почему-то у меня не работал на прием. Передача шла, прием ни в какую (с теми же симптомами подвисания линии).. В итоге переписал функцию приема данных на свой лад, после чего все заработало. Какие-то косяки у них с ожиданием прерывания от I2C модуля при приеме данных с шины..
Могу скинуть кусок кода приема байта, но он немного ущербный, т.к. во-первых, в С я чайник, во-вторых, мне не нужно было полноценный прием реализовывать.
Go to the top of the page
 
+Quote Post

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

 


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


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