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

 
 
> I2C, нужен совет
Mukhanov
сообщение Aug 9 2006, 16:06
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 9-08-06
Пользователь №: 19 444



Нужно соеденить Спартан3(мастер) с SAA7111(слейв) по I2C.
Вопрос заключается в том как это сделать.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
oval
сообщение Aug 9 2006, 16:59
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 265
Регистрация: 15-03-05
Из: Москва
Пользователь №: 3 367



Цитата(Mukhanov @ Aug 9 2006, 20:06) *
Нужно соеденить Спартан3(мастер) с SAA7111(слейв) по I2C.
Вопрос заключается в том как это сделать.


Просто соединяете пару соответствующих выводов SAA7111 и Spartan3. Каждую из линий (SDA и SCL) подтягиваете внешними резисторами к питанию.
Go to the top of the page
 
+Quote Post
Doka
сообщение Aug 9 2006, 18:46
Сообщение #3


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



Цитата(oval @ Aug 9 2006, 20:59) *
Просто соединяете пару соответствующих выводов SAA7111 и Spartan3. Каждую из линий (SDA и SCL) подтягиваете внешними резисторами к питанию.


ну там еще нюанс есть: стандарт требует наличие OpenDrain на выходных линиях
в ПЛИСе проще это съэмулировать объявив и SDA, и SCL как inout
и при выдаче "1" в HiZ сигнал пин.

to Mukhanov: предупреждение за нарушение п.2.1а правил форума


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
Mukhanov
сообщение Aug 9 2006, 20:37
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 9-08-06
Пользователь №: 19 444



SCL я так понимаю можно только мастером генерить.
Открытый сток меня собственно и волнует, не будет ли каких проблем на входе у Спартана.

Сообщение отредактировал Mukhanov - Aug 9 2006, 20:37
Go to the top of the page
 
+Quote Post
Doka
сообщение Aug 9 2006, 21:52
Сообщение #5


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



Цитата(Mukhanov @ Aug 10 2006, 00:37) *
SCL я так понимаю можно только мастером генерить.
Открытый сток меня собственно и волнует, не будет ли каких проблем на входе у Спартана.


да, SCL всегда генерится мастером
а какие проблемы с открытым стоком?! чем не устраивает предложенное выше решение?
даже сам XILINX такое решение использует. вот клок из исходников:

Код
...
    -- SMBUS bus signals
    sda : inout std_logic;
    scl : inout std_logic;
...
  -- set SDA and SCL
    sda <= '0' when sda_oe = '1' else 'Z';
    scl <= '0' when scl_out_reg = '0' else 'Z';
...
  -- sda_oe is set when master and arbitration is not lost and data to be output = 0 or
  -- when slave and data to be output is 0
    sda_oe <= '1' when ((master_slave = '1' and arb_lost = '0' and sda_out_reg = '0') or
                 (master_slave = '0' and slave_sda = '0')
                  or stop_scl_reg = '1') else '0';


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
_andrew_
сообщение Aug 10 2006, 08:46
Сообщение #6


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

Группа: Свой
Сообщений: 126
Регистрация: 24-08-05
Пользователь №: 7 935



Цитата(Doka @ Aug 10 2006, 00:37) *
да, SCL всегда генерится мастером

А как же возможность удержания слэйвом scl в нуле , если слэйву необходимо задержать передачу данных...

Сообщение отредактировал _andrew_ - Aug 10 2006, 08:46
Go to the top of the page
 
+Quote Post
iosifk
сообщение Aug 10 2006, 08:58
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(_andrew_ @ Aug 10 2006, 12:46) *
Цитата(Doka @ Aug 10 2006, 00:37) *

да, SCL всегда генерится мастером

А как же возможность удержания слэйвом scl в нуле , если слэйву необходимо задержать передачу данных...

Но удерживается в низком состоянии слэйвом, до тех пор, пока тот не станет готов. Все это вместе действует аналогично сигналу READY в старых процессорах.
Соотв. у слэйва этот пин - должен быть двунаправленный с ОК.


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 10 2006, 13:20
Сообщение #8


Гуру
******

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



Цитата(iosifk @ Aug 10 2006, 14:58) *
Цитата(_andrew_ @ Aug 10 2006, 12:46) *

Цитата(Doka @ Aug 10 2006, 00:37) *

да, SCL всегда генерится мастером

А как же возможность удержания слэйвом scl в нуле , если слэйву необходимо задержать передачу данных...

Но удерживается в низком состоянии слэйвом, до тех пор, пока тот не станет готов. Все это вместе действует аналогично сигналу READY в старых процессорах.
Соотв. у слэйва этот пин - должен быть двунаправленный с ОК.

Еще добавлю, что SCL на шине I2C конечно генерируется мастером, но внутренняя логика аппаратного I2C-мастера должна тактироваться внешним SCL, снятым с выходного пина подключенного к линии SCL. Т.е. внутри FPGA должно быть два сигнала SCL: SCL_OUT и SCL_IN. Это как раз для случая удержания SCL в нуле слейвом.
Go to the top of the page
 
+Quote Post



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

 


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


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