Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: i2c
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
_andrew_
смысл в следующем:

Прислали компоненту контролер i2c (slave). Вместо двунаправленного порта SDA, в этой компоненте 2 порта(вход и выход - видимо для удобства моделирования). По идее осталось только правильное подключение... Буду ли я прав если просто соединю эти 2 порта(компонента графическая) с двунаправленным портом? Соединив таким образом, PACE говорит что SDA - output.
makc
Вам нужно создать порт типа INOUT, который Вы должны принудительно в определенные моменты времени (когда необходимо прослушивать шину) переводить в Z-состояние.
_andrew_
В том то и вопрос, что я не знаю когда надо переводить шину в z. компонента то знает, а я нетsmile.gif
makc
Цитата(_andrew_ @ Apr 14 2006, 19:15) *
В том то и вопрос, что я не знаю когда надо переводить шину в z. компонента то знает, а я нет smile.gif


Ну тогда нужно пинать разработчиков, которые не подумали об использовании этого компонента.
Но если есть исходники, то можно попытаться их подправить и вывести дополнительный сигнал для управления двунаправленным буфером.
rezident
Выход должен работать как транзистор с открытым коллектором (стоком). 0 на выходе = 0 на I2C. 1 на выходе = Z-состояние на I2C, которое преобразуется в 1 внешним pull-up резистором.
Vitёk
Сигналом "выход" разрешаете работу трёхстабильного буфера, который транслирует наружу низкий лог. уровень.
LeonY
Почитатйте описание I2C Master на OpenCore - там все очень подробно описано. Если будут трудности со скачиванием - пишите в ПМ - пришлю
_andrew_
что то не тоsad.gif
поставил вдунаправленый порт, прицепил к нему iobuf, придумал сигнал управления.
НО
при записи по i2c все нормально
при чтении, когда я выдаю на порт '1', модельер говорит что порт в состоянии 'X', а в железе просто выдает '0'
rezident
Цитата(_andrew_ @ Apr 20 2006, 15:36) *
что то не тоsad.gif
поставил вдунаправленый порт, прицепил к нему iobuf, придумал сигнал управления.
НО
при записи по i2c все нормально
при чтении, когда я выдаю на порт '1', модельер говорит что порт в состоянии 'X', а в железе просто выдает '0'

Не знаю что тут может не работать. Схемотехнически вход/выход слейва выглядит так. См. рисунок.
_andrew_
rezident , так и есть (ну разве что у меня iobuf:) )
НО вместо 1 выдается 0 sad.gif
vetal
Pull-UP резистор на sda имеется?
_andrew_
Цитата(vetal @ Apr 20 2006, 15:31) *
Pull-UP резистор на sda имеется?


Да
vetal
Полярность управляющего sda сигнала правильная? Инверсию пробовали поставить?
_andrew_
посмотрел выход буфера (iobuf , obuft), вместо состояния Z модельер показывает что у них состояние 0 на выходе.

может тут глюк среды какой? когда писал буфер руками, модельер показывал Z правильно, но после разводки, он же приводит все к своим примитивам...? а то бишь к этим буферам которые работают неправильно..(?)

у меня ISE8.1
rezident
Цитата(_andrew_ @ Apr 20 2006, 19:06) *
у меня ISE8.1

А я этот кусок из Xilinx Foundation 3.3i копировал smile.gif А почему не хотите попробовать так, как у меня сделать? Что вы к IOBUF прикипели?
_andrew_
Спасибо всем. Все заработало.
rezident
Цитата(_andrew_ @ Apr 21 2006, 16:13) *
Спасибо всем. Все заработало.

Было бы неплохо, если бы еще пояснили в чем была причина? Или само заработало? wink.gif
_andrew_
Почему то не работал 2-направленный буфер(поменял на однонаправленные). +косячек с моей стороны(вне i2c), контролер записывал синхронно , а при чтении почему то надо было читать асинхронно...
а я все делал синхронно. smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.