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

 
 
 
Reply to this topicStart new topic
> NIOS+I2C, Отчаялся уже
Evired
сообщение Dec 23 2010, 06:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 13-10-10
Пользователь №: 60 132



Доброго времени суток!

Вот уже месяц не могу поднять i2c мастер под ниос. Версия квартуса 10.1. Пробовал опенкоровский вариант, не заводится(. Вот такой вот код:

#include <stdio.h>
#include "system.h"
#include "opencores_i2c.h"

int main()
{
printf("Hello from Nios II!\n");
I2C_init(OPENCORES_I2C_0_BASE,ALT_CPU_FREQ,400000);

// now right to the leds
I2C_start(OPENCORES_I2C_0_BASE,0xE0,0);
I2C_write(OPENCORES_I2C_0_BASE,0x0,0);
I2C_write(OPENCORES_I2C_0_BASE,0x51,1);
return 0;
}

Дает ответ NOACK постоянно. То есть не отвечает слейв устройство, хотя его адрес (0xE0) и адрес нужного порта (0x0) я ввожу правильно. Есть у кого-нибудь гарантированно рабочий i2c под nios (т.е. с tcl-скриптом для SOPC) ? А то я уже отчаялся почти... Как можно проверить работоспособность i2c без внешнего устройства? Может какие еще полезные советы? SDA и SCL завожу на двунаправленные пины правильно ли это?
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Dec 23 2010, 07:21
Сообщение #2


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



А что Вы с опенкоровским вариантом делали? Распишите Ваши действия подробнее.
Новый компонент на его основе создавали сами или как?
HAL API для него писали?


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Evired
сообщение Dec 23 2010, 07:31
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 13-10-10
Пользователь №: 60 132



Я взял портированную для SOPC версию: http://www.alterawiki.com/wiki/OpenCores_I2c , встроил ее в систему при помощи SOPC билдера и вперед) Все нормально скомпилилось, вот только не работает ) Создание нового компонента прям из сорцев я пока не осилил. Может у Вас есть готовый рабочий компонент или пример? Я был бы очень благодарен.

Сообщение отредактировал Evired - Dec 23 2010, 07:41
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Dec 23 2010, 08:47
Сообщение #4


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



В какой версии квартуса Вы работаете?
Попадает ли информация об этом устройстве в BSP?
Для завершения создания HAL API устройства нужно в корневой папке (т.е. там, где находится скрипт opencores_i2c_hw.tcl) создать свой скрипт opencores_i2c_sw.tcl, где прописать создание драйвера устройства, добавления его в BSP и инициализации устройства во время работы statup-кода.
См. пример скрипта.

В противном случае Вам придется работать с этим устройством на низком уровне - обращаться его регистрам макросами IOWR/IORD.
Прикрепленные файлы
Прикрепленный файл  pwm_avalon_interface_sw.zip ( 337 байт ) Кол-во скачиваний: 52
 


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Evired
сообщение Dec 23 2010, 10:06
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 13-10-10
Пользователь №: 60 132



- Работаю в версии квартуса 10.1
- Информация в BSP попадает

по поводу скрипта сейчас попробую)

А если не писать этот скрипт а просто добавить инклудом нужные сорцы я же смогу с таким же успехом использовать высокоуровневые функции или я не прав?

Короче я запутался опять. Неужели ни у о кого нет готового решения?

Сообщение отредактировал Evired - Dec 23 2010, 09:13
Go to the top of the page
 
+Quote Post
COMA
сообщение Dec 28 2010, 15:35
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



Я использовал I2C опенкоровский. Все работает. Завтра с работы могу дать файлы проекта.
Go to the top of the page
 
+Quote Post
COMA
сообщение Dec 29 2010, 04:46
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



Вот компонент для SOPC
Прикрепленные файлы
Прикрепленный файл  i2c.zip ( 207.89 килобайт ) Кол-во скачиваний: 81
 
Go to the top of the page
 
+Quote Post
Evired
сообщение Dec 31 2010, 09:56
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 13-10-10
Пользователь №: 60 132



Огромное спасибо) Прям подарок на новый год) как только опробую, отпишусь) Вопрос сразу, как SDA и SCL подключать? Обе к bidirectional пинам или SDA к bidirectional а SCL к output ?

Сообщение отредактировал Evired - Dec 31 2010, 10:01
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Dec 31 2010, 12:34
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



там есть каталог с документацией Docs, и судя по i2c_cpecs.pdf, нужно оба к bidirectional продключать.
Go to the top of the page
 
+Quote Post
Evired
сообщение Jan 3 2011, 08:42
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 13-10-10
Пользователь №: 60 132



Прикрутил предложенный COMA вариант i2c и сделал скрипт как говорил Stewart Little. Все равно не работает =( Выкладываю свой проект и скрипт:

Прикрепленный файл  FPGA.zip ( 383.96 килобайт ) Кол-во скачиваний: 168


Если есть время и не очень лень, гляньте пожалуйста. Может все и работает на стороне ПЛИС, а проблема в слейв устройстве (это у меня сонар). Последнему нужно 5V TTL уровень а с ПЛИС идет 3,3V LVTTL. Сопряжение по уровням делаю при помощи такого девайса: http://www.sparkfun.com/products/8745
Так что тонких мест много, а возможности проверить на другом девайсе нет. Но я все-таки грешу на ПЛИС... Где-то что-то я упустил в проекте походу.

Сообщение отредактировал Evired - Jan 3 2011, 08:44
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Jan 4 2011, 03:14
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



Цитата(Evired @ Jan 3 2011, 15:42) *
Так что тонких мест много, а возможности проверить на другом девайсе нет. Но я все-таки грешу на ПЛИС... Где-то что-то я упустил в проекте походу.

А что Вы наблюдаете с помощью осциллографа? Все ли сигналы и биты на месте?
В свое время, при работе с шиной I2C, осциллограф мне очень помог... Запускайте цикл обращения по I2C, сформируйте синхросигнал и все будет видно... Смотрите до и после преобразователя уровня…

Go to the top of the page
 
+Quote Post
Evired
сообщение Jan 4 2011, 15:54
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 13-10-10
Пользователь №: 60 132



Все, задача решена =) Всем огромное спасибо за помощь) Проект от COMA оказался полностью рабочим, скрипт предложенный Stewart Little позволяет автоматизировать процесс подключения необходимых модулей и инициализации компонента. Моя проблема была связана с ошибкой в документации на используемое slave устройство (швейцарцы не всегда так точны как их часы, перепутали SCL и GND на схеме подключения). Надеюсь эта тема поможет желающим подключить i2c ip к своему проекту, все необходимые для этого файлы в данном топике есть)
Go to the top of the page
 
+Quote Post

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

 


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


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