Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543
Набирайте на сайте альтеры i2с и качайте то, куда оно пошлет. Отлично работает, исходники открыты. Я их для Xilinx использую, чуть подправил только для совместимости с хилыми библиотеками .
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515
Интересно, умеют ли i2c корки обрабатывать ситуацию с зависанием слейва на чтении. Если слейв не поймает(например из-за помехи) финальный ACK, или мастер внезапно отвалится, слейв может застрять на промежуточном нулевом бите и держать SDA в LOW, не давая делать старт/стоп правильным образом. Чтобы выйти из этого состояния, кто-то должен подёргать за SCL, пока подвисший слейв не дойдёт до позиции ACK или единичного бита данных и не отпустит SDA. В микроконтроллере это можно решить софтовым ногодрыгом, а вот в FPGA переключения пинов в GPIO обычно не предусматривают.
Интересно, умеют ли i2c корки обрабатывать ситуацию с зависанием слейва на чтении. Если слейв не поймает(например из-за помехи) финальный ACK, или мастер внезапно отвалится, слейв может застрять на промежуточном нулевом бите и держать SDA в LOW, не давая делать старт/стоп правильным образом. Чтобы выйти из этого состояния, кто-то должен подёргать за SCL, пока подвисший слейв не дойдёт до позиции ACK или единичного бита данных и не отпустит SDA. В микроконтроллере это можно решить софтовым ногодрыгом, а вот в FPGA переключения пинов в GPIO обычно не предусматривают.
Короче. В корку нужно прикрутить вотчдог))) два байта переслать....