|
I2C, нужен совет |
|
|
|
Aug 9 2006, 16:06
|
Участник

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

|
Нужно соеденить Спартан3(мастер) с SAA7111(слейв) по I2C. Вопрос заключается в том как это сделать.
|
|
|
|
|
 |
Ответов
|
Aug 9 2006, 16:59
|
Местный
  
Группа: Свой
Сообщений: 265
Регистрация: 15-03-05
Из: Москва
Пользователь №: 3 367

|
Цитата(Mukhanov @ Aug 9 2006, 20:06)  Нужно соеденить Спартан3(мастер) с SAA7111(слейв) по I2C. Вопрос заключается в том как это сделать. Просто соединяете пару соответствующих выводов SAA7111 и Spartan3. Каждую из линий (SDA и SCL) подтягиваете внешними резисторами к питанию.
|
|
|
|
|
Aug 9 2006, 18:46
|

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а правил форума
--------------------
|
|
|
|
|
Aug 9 2006, 20:37
|
Участник

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

|
SCL я так понимаю можно только мастером генерить. Открытый сток меня собственно и волнует, не будет ли каких проблем на входе у Спартана.
Сообщение отредактировал Mukhanov - Aug 9 2006, 20:37
|
|
|
|
|
Aug 9 2006, 21:52
|

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';
--------------------
|
|
|
|
|
Aug 10 2006, 08:46
|
Частый гость
 
Группа: Свой
Сообщений: 126
Регистрация: 24-08-05
Пользователь №: 7 935

|
Цитата(Doka @ Aug 10 2006, 00:37)  да, SCL всегда генерится мастером А как же возможность удержания слэйвом scl в нуле , если слэйву необходимо задержать передачу данных...
Сообщение отредактировал _andrew_ - Aug 10 2006, 08:46
|
|
|
|
|
Aug 10 2006, 08:58
|
Гуру
     
Группа: Модераторы
Сообщений: 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
|
|
|
|
|
Aug 10 2006, 13:20
|
Гуру
     
Группа: Свой
Сообщений: 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 в нуле слейвом.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|