Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Wishbone i2c master, не могу прочитать данные.
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
nh4t
Opencores WB i2c Richard Herveille.
Не появляюся данные на шине wb_dat_o в конце цикла чтения.
Циклы записи в slave работают нормально.

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

bark
Я вот как раз буду использовать эту же мегу.

Если я правильно понял о чем речь, то в командный регистр надо писать то, что написано в документации к целевому устройству.

в моём случае, например, буду коннектиться к ЕЕПРОМ. там надо посылать первые 4 бита "1010", дальше 3 бита пофиг и в конце бит кодирующий тип операции запись/чтение.

тогда ЕЕПРОМ распознает по коду 1010 чот это обращение к ней и соответственно отреагирует на запрос.
nh4t
Спасибо. Вопрос был по скорее по протоколу WB.
читать полученые данные с шины WB нужно после получения wb_ack в CЛЕДУЮЩЕМ шаге автомата.

// #56
.. wait_ack:
if (wb_ack_o == 1) fsm <= get_slv_data_n;
end
// #57
get_slv_data_n:
readout_data [ readout_cycle ] <= wb_dat_o;
bark
так всё получилось? i2c нормально работает?

я сейчас как раз в отладке своей машины
svedach
Проверьте, что бы после синтеза на SDA, SDC были буфферы ввода-вывода, а не только вывода. У меня была проблема с чтением информации после имплементации - синтезатор сам ставил только OBUF. И соответсвенно получалось только записывать данные.
A.P.
Цитата(nh4t @ Jan 6 2012, 16:58) *
Opencores WB i2c Richard Herveille.
Не появляюся данные на шине wb_dat_o в конце цикла чтения.
Циклы записи в slave работают нормально.

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


Если еще актуально, то для чтения нужно:
TXR <= (DeviceAddress << 1) | 8'h01
CR <= 8'h68 (RD = 1, STO = 1, NACK = 1)
далее проверяем SR. Если TIP == 0, тогда
wb_cyc <=1
wb_stb <=1
если wb_ack == 1, тогда
my_data <= wb_dat

Все, удачи.
nh4t
Цитата(bark @ Jan 13 2012, 21:45) *
так всё получилось? i2c нормально работает?
да, давно все сделано и забыто sm.gif
bark
аналогично.

единственное что поменял в исходном проекте - это вывел rx_wire наружу из i2c_master_top. чтобы не ставить на шину адреса "3" для читки данных.
не вижу смсла в FPGA этим мультиплексором по выводу данных пользоваться. вообще можно было бы и регистры состояния вывести, но не хотел переделывать машину работы с i2c.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.