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

 
 
> Затык с i2c
Putnik
сообщение Jun 17 2010, 10:14
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 4-09-07
Из: Зеленоград
Пользователь №: 30 272



Здравствуйте!

В общем, все просто - есть модуль i2c_contr, его назначение - запись по i2c в АЦП и ЦАП-е регистры и затем их чтение во внутреннюю память (модуль RAM55B),
Выкладываю последний вариант в котором в железке стабильно работает запись в АЦП, остальное не работает..

В предыдущих вариациях иногда получал запись в ЦАП как требуется

Чтение не работало ни разу, приходит NACK(SDAT == 1) после отправки адреса устройства с 8-м битом в 1(READ),

прикладываю простенький тестбенч, для просмотра линий SCLK и SDAT надо смотреть внутренние sclk и sdat в i2c_contr,
отображающие их поведение на линии, в реальности они собираются в верхнем модуле как
assign sdat = sda_en ? sda_o : 1'bz,
sda_i = sdat;
assign sclk = scl_en ? scl_o : 1'bz,
scl_i = sclk;
(ибо open drain у третьего спартана нет)


подскажите где лажаю, вроде все делал по стандарту I2C и даташитамПрикрепленный файл  src.rar ( 3.44 килобайт ) Кол-во скачиваний: 91


--------------------
за Навального!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Putnik
сообщение Jun 18 2010, 07:14
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 4-09-07
Из: Зеленоград
Пользователь №: 30 272



Скажите, времянки то хоть правильные?

Диаграммы записи(работающая) при моделировании(на осциллографе то же, только с реальными фронтами) -
Прикрепленное изображение


- и чтения(неработающая)
Прикрепленное изображение

нет аккноледжа после передачи адреса устройства с 8-м битом в 1(чтение)

Частота SCL - 100 КГц(400КГц)


--------------------
за Навального!
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Jun 18 2010, 07:20
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(Putnik @ Jun 18 2010, 11:14) *
нет аккноледжа после передачи адреса устройства с 8-м битом в 1(чтение)

Для того, чтобы получить ACK, надо SDAT перевести в highZ. На диаграмме этого не видно.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Putnik   Затык с i2c   Jun 17 2010, 10:14
- - iosifk   Для начала надо посмотреть аппликухи ксайлинкса. Т...   Jun 17 2010, 10:56
|- - Putnik   Цитата(iosifk @ Jun 17 2010, 14:56) Для н...   Jun 17 2010, 11:13
|- - Maverick   Цитата(Putnik @ Jun 17 2010, 14:13) UPS -...   Jun 17 2010, 11:24
|- - Putnik   Цитата(Maverick @ Jun 17 2010, 15:24) И п...   Jun 17 2010, 11:38
- - sazh   Цитата(Putnik @ Jun 17 2010, 13:14) assig...   Jun 17 2010, 11:39
|- - Putnik   Цитата(sazh @ Jun 17 2010, 15:39) Если вн...   Jun 17 2010, 11:44
|- - Putnik   Цитата(DmitryR @ Jun 18 2010, 11:20) Для ...   Jun 18 2010, 11:49
|- - DmitryR   Тогда вероятно у вас pullup неправильно смоделиров...   Jun 18 2010, 12:02
- - Putnik   Собираю sdat и sclk так - assign sdat = sda_en ...   Jun 18 2010, 12:34
|- - DmitryR   Это все понятно, как pullup-то моделируется? И ещ...   Jun 18 2010, 12:59
- - Putnik   на sda_i имитируется входное воздействие по линии ...   Jun 18 2010, 13:28
|- - DmitryR   На sda_i ничего имитировать нельзя - он внутри UUT...   Jun 18 2010, 16:25
|- - Putnik   Цитата(DmitryR @ Jun 18 2010, 20:25) На s...   Jun 18 2010, 20:10
|- - DmitryR   pullup(sda);   Jun 21 2010, 05:20
- - Putnik   У ЦАП не заметил внешнего сброса сначала, на запис...   Jun 22 2010, 09:01
- - DmitryR   Цитата(Putnik @ Jun 22 2010, 13:01) ЦАП -...   Jun 22 2010, 09:06
- - aaarrr   Цитата(Putnik @ Jun 22 2010, 13:01) видим...   Jun 22 2010, 09:07


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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:26
Рейтинг@Mail.ru


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