Регистрация | Последние сообщения | Персональный список | Поиск | Настройка конференции | Личные данные | Правила конференции | Список участников | Top 64 | Статистика раздела | faq | Что нового v.2.3 | Чат
Skunk Forum - Техника, Наука, Общество » Форум разработчиков РЭА »
кто -нибудь работал с ISP1581

Версия для печати (настроить)

Новая тема | Написать ответ

Подписаться

Автор Тема:   кто -нибудь работал с ISP1581
nagserg
Junior Member

Сообщений: 1
Регистрация: Декабрь 2005

написано 13 Декабря 2005 18:14ИнфоПравкаОтветитьIP

Разбираюсь с USB и не могу добится, чтобы хост запросил setup пакет. При чтении регистра прерываний выставлен флаг SUSP, затем через некоторое время BRESET и HS_STAT. ISP1581 прицепил к atmega128. Помогите пожалуйста что нужно сделать, чтобы хост запросил setup?

quarter
Junior Member

Сообщений: 2
Откуда: Украина
Регистрация: Декабрь 2005

написано 23 Декабря 2005 16:11ИнфоПравкаОтветитьIP

Я с этой проблемой тоже мучился. Тоже с Philips ISP1581. Могу дать два совета:
1. Эту микросхему я уже гоняю и в хвост и в гриву. Наладил различные обмены с ней (HID, USB-function через специальные драйвера). НО!!! По прерываниям эта тварь работает очень и очень некоРРектно! Поэтому советую работать по-опросу.
2. Вот примерный алгоритм работы USB устройства на этой микросхеме:
---------------------------------------------
Suspend
Reset
SETUP receave - Get_descriptor_Device (64)
TX (8)
TX (8)
NAK(In0, Out0)
NAK(Out0)
Reset
SETUP receave - Set_address (2)
TX (0)
SETUP receave - Get_descriptor_Device (18)
TX (8)
TX (8)
TX (2)
TX (0)
NAK(In0, Out0)
SETUP receave - Get_descriptor_Config (9)
TX (8)
TX (1)
TX (0)
NAK(In0, Out0)
SETUP receave - Get_descriptor_String (0,255)
TX (4)
TX (0)
NAK(In0, Out0)
SETUP receave - Get_descriptor_String (3,255)
TX (8)
TX (8)
TX (2)
TX (0)
NAK(In0, Out0)
SETUP receave - Get_descriptor_Config (255)
TX (8)
TX (8)
TX (8)
TX (8)
TX (0)
TX (0)
NAK(In0, Out0)
----------------------------------------------
HS_STAT - говорит о том что твой девайс обнаружил хост USB2.0
Желательно в регистре Test Mode register установить бит FORCEFS в '1'.

А вообще на сайте филипса(www.semiconductors.philips.com/buses/usb) есть примеры программного обеспечения и схемы для этой микросхемы. Надо только зарегестрироваться и качай бесплатно.

nagserg
Junior Member

Сообщений: 2
Регистрация: Декабрь 2005

написано 26 Декабря 2005 10:50ИнфоПравкаОтветитьIP

Установил в регистре Test Mode бит FORCEFS в '1', теперь флаг HS_STAT не выставляется. Я застрял на том, что не пойму, что мне делать, если выставляется флаг BRESET в регистре Interrupt? (опять по новой полностью делать инициализацию ISP1581, может частично?)

quarter
Junior Member

Сообщений: 3
Откуда: Украина
Регистрация: Декабрь 2005

написано 26 Декабря 2005 16:28ИнфоПравкаОтветитьIP

Установи такие значения регистров:

#Инициализация#
TestMode - 10h
Mode - 89h
IntConfiguration - 55h
IntEnable - 6D79h

Остальные рагистры на своё усмотрение (в зависимости от того, какое устройство делаешь)
Переходи в режим опроса регистра Interrupt.

BRESET - комп сообщает, что увидел тебя и требует сброса. В ответ на это ещё раз выполни все установки регистров с места #Инициализация#

Теперь жди SETUP

nagserg
Junior Member

Сообщений: 3
Регистрация: Декабрь 2005

написано 30 Декабря 2005 11:18ИнфоПравкаОтветитьIP

От прерываний отказался. Совершенно случайно при передёргивании USB, выставился флаг EP0SETUP, оказалось непонятная штука происходит: подключаю USB к компу и раз на 5-10 выставляется флаг EP0SETUP, читаю Data Port= 80 06 00 01 00 00 40 00, т.е. нормально хост запросил дескриптор устройства.

nagserg
Junior Member

Сообщений: 4
Регистрация: Декабрь 2005

написано 03 Января 2006 16:05ИнфоПравкаОтветитьIP

Не пойму, почему выставляется флаг EP0SETUP только на 5-10 раз, причем когда в опрос регистра прерываний Interrupt вставляю printf, т.е. получается небольшая задержка. Если printf не вставить, то флаг EP0SETUP вообще не выставится. Теперь ломаю голову как обрабатывать запрос хоста:
По порядку:
1. принял запрос: 80 06 00 01 00 00 40 00 - стандартный , хост запросил Device descriptor 64 байта.
2. сгенерил 18 байт Device descriptor, а вот как его передать хосту, последовательность действий, т.е. надо конфигурировать Buffer Length как 18 байт или 8 байт, если вообще надо, какими регистрами надо пользоваться при передаче, приеме (Control Function), еще какими-нибудь?

quarter, если не трудно, опишите пожалуйста последовательность действий или пример до приема второго запроса хоста

quarter
Junior Member

Сообщений: 4
Откуда: Украина
Регистрация: Декабрь 2005

написано 04 Января 2006 16:45ИнфоПравкаОтветитьIP

Может ты чего соединил неверно?
По этому адресу: ссылка
найдешь большой список литературы. Качай все, пригодится. Но основное внимание: "ISP1583 Hi-Speed USB Device Split Bus Eval Kit(date 2003-10-01)". В этом файле типовая схема включения этой микросхемы. Программное обеспечение к нему у меня есть, могу выслать.

nagserg
Junior Member

Сообщений: 5
Регистрация: Декабрь 2005

написано 06 Января 2006 15:42ИнфоПравкаОтветитьIP

Наконец-то получилось прочитать дескриптор DEVICE, CONFIGURATION, сейчас разбираюсь со STRING дескриптором.
Кстати, поставил задержку в 1 миллисекунду в опрос регистра Interrupt, стал более стабильный запуск.

nagserg
Junior Member

Сообщений: 6
Регистрация: Декабрь 2005

написано 11 Января 2006 16:14ИнфоПравкаОтветитьIP

quarter, спасибо большое за помощь прочитал полностью дескрипторы FULL_SPEED. Теперь разбираюсь с дескрипторами HIGH_SPEED.

quarter
Junior Member

Сообщений: 5
Откуда: Украина
Регистрация: Декабрь 2005

написано 12 Января 2006 13:24ИнфоПравкаОтветитьIP

А ты всё же скачай доку - поможет разобраться. Потому что дискрипторы - это ещё даже не цветочки. А на счет HIGH_SPEED: ты думал каким драйвером собираешься управлять скоростным устройством? Лично я работаю в FULL_SPEED.

nagserg
Junior Member

Сообщений: 7
Регистрация: Декабрь 2005

написано 13 Января 2006 15:01ИнфоПравкаОтветитьIP

undefined А я скачал - конечно пригодится. В конечном итоге нужен HIGH_SPEED. Драйвер буду пользовать сгенерированный с помощью NuMega Driver Studio, небольшой опыт уже есть (пробовал USB контроллер USBN9604)- пример взял из книги "Интерфейс USB практика использования и программирования" автор Павел Агуров. Кстати хорошая книга, советую прикупить, если таковой не имеется. Пробовал прочитать дескиптор в режиме HIGH_SPEED на ISP1581, не знаю почему, после того как хост дал запрос на Device дескриптор выставляется флаг BRESET и хост опять запрашивает Device дескриптор и так три раза, потом выставляется флаг SUSP.
Пока HIGH_SPEED отложил на потом, сейчас пытаюсь наладить хоть какой-то обмен в режиме FULL_SPEED, пока не получается, в каком-то регистре нужно разрешить конечные точки.

quarter
Junior Member

Сообщений: 6
Откуда: Украина
Регистрация: Декабрь 2005

написано 16 Января 2006 11:50ИнфоПравкаОтветитьIP

Помнишь?

#Инициализация#
TestMode - 10h

У тебя принудительно стоит FULL_SPEED режим.
Агуров у меня есть в Дежавю. Примеры его смотрел но руки не доходили. Ну желаю удачи!

nagserg
Junior Member

Сообщений: 8
Регистрация: Декабрь 2005

написано 16 Января 2006 12:05ИнфоПравкаОтветитьIP

Помнишь?

#Инициализация#
TestMode - 10h

Да, помню. Интересно, а какую максимальную скорость тебе удалось достичь на этом контроллере в режиме FULL_SPEED?

nagserg
Junior Member

Сообщений: 9
Регистрация: Декабрь 2005

написано 18 Января 2006 12:17ИнфоПравкаОтветитьIP

На данный момент у меня работает вот так:

0x80 6 0 1 0 0 40 0 device
0x0 5 2 0 0 0 0 0 установить адрес 2
0x80 6 0 1 0 0 12 0 device
0x80 6 0 2 0 09 0 configuration
0x80 6 0 2 0 0 ff 0 configuration
0x80 6 0 3 0 0 ff 0 string
0x80 6 2 3 9 4 ff 0 string
0x80 6 0 3 0 0 ff 0 string
0x80 6 2 3 9 4 ff 0 string , не знаю почему 2 раза одно и тоже запрашивает
0x80 6 0 2 0 0 e8 3 configuration
0x0 9 1 0 0 0 0 0 SET_CONFIGURATION установить конфигурацию 1
0x80 6 0 1 0 0 12 0 опять device

как я понял, после запроса SET_CONFIGURATION можно передавать и принимать с конечных точек, если они конечно разрешены. Вот у меня не получается, хотя в 0-ю конечную точку получается передавать и получать из нее данные. На первом этапе работаю с драйвером от WinDriver, с помощью WinDriver можно записать/прочитать любую конечную точку.
quarter, подскажи пожалуйста, после передачи дескриптора что нужно сделать, чтобы конечные точки были доступны? У меня вот так сконфигурированы конечные точки:

D14_Cntrl_Reg->D14_ENDPT_INDEX = 4;//выбрана 2-ая out конечная точка
D14_Cntrl_Reg->D14_ENDPT_MAXPKTSIZE.VALUE = 0x4000; //FIFO=64bytes

D14_Cntrl_Reg->D14_ENDPT_INDEX = 5;////выбрана 2-ая in конечная точка
D14_Cntrl_Reg->D14_ENDPT_MAXPKTSIZE.VALUE = 0x4000;//FIFO=64bytes

D14_Cntrl_Reg->D14_ENDPT_INDEX = 4;//
D14_Cntrl_Reg->D14_ENDPT_TYPE.VALUE = 0x0600; // Bulk, Double buffering

D14_Cntrl_Reg->D14_ENDPT_INDEX = 5;//
D14_Cntrl_Reg->D14_ENDPT_TYPE.VALUE = 0x0600; // Bulk, Double buffering


D14_Cntrl_Reg->D14_ENDPT_INDEX = 4;//
D14_Cntrl_Reg->D14_ENDPT_TYPE.VALUE |= 0x0800; //enable FIFO


D14_Cntrl_Reg->D14_ENDPT_INDEX = 5;//
D14_Cntrl_Reg->D14_ENDPT_TYPE.VALUE |= 0x0800; //enable FIFO

потом D14_Cntrl_Reg->D14_ADDRESS.VALUE = 0x80;// logic 1 enables the device.

[Это сообщение изменил nagserg (изменение 18 Января 2006 16:58).]

sms
Junior Member

Сообщений: 1
Откуда: Новосибирск
Регистрация: Январь 2006

написано 18 Января 2006 22:56ИнфоПравкаОтветитьIP

Здрасте
Вы меня сильно выручили своим обсуждением, спасибо ;^). А то пару дней все было совсем кисло.
Вот только хотелось бы узнать используете ли вы сигнал WakeUp(pin 62)?
У меня на нем висит 2 вольта. Когда подключаю на ноль ток увеличивается на пару десятков мА.
Так вот при включении аппарата в регистре прерываний флаг BRESET выставляется даже когда на шине USB нет никаких к этому предпосылок. Ну и между этими событиями, возникающими примерно через мс, есть флаги RESUME и SUSP. Больше ничего. Стоит коснуться 62 ноги - тут же наступает счастье, все дескрипторы без проблем уходят. До следующего выключения питания проблема не возникает.

nagserg
Junior Member

Сообщений: 10
Регистрация: Декабрь 2005

написано 19 Января 2006 09:51ИнфоПравкаОтветитьIP

У меня например WAKEUP висит в воздухе, померил напряжение 60 мВ. По даташиту этот вывод вход с внутренним подтягивающим резистором к земле (internal pull-down resistor), значит у Вас не должно быть 2 вольта. Попробуйте поставить резистор кОм на 10 на землю.

sms
Junior Member

Сообщений: 2
Откуда: Новосибирск
Регистрация: Январь 2006

написано 19 Января 2006 10:56ИнфоПравкаОтветитьIP

Значит просто что мой чип глючит по этой ноге. Он перетягивает даже активный выход меги, какие уж там резисторы

quarter
Junior Member

Сообщений: 7
Откуда: Украина
Регистрация: Декабрь 2005

написано 19 Января 2006 13:38ИнфоПравкаОтветитьIP

Максимальная скорость, которой мне удалось достичь, составляет 350-380 КБайт/с. Про 12 Мбит для USB 1.1 FULL_SPEED можно только читать в спецификациях (12 Мбит/с - это скорость передачи информации на физическом уровне)

nagserg
Junior Member

Сообщений: 11
Регистрация: Декабрь 2005

написано 19 Января 2006 18:07ИнфоПравкаОтветитьIP

До сих пор не могу записать/прочитать конечную точку (пользую 2) Помогите кто-нить пожалуйста, а то уже голову сломал...

nagserg
Junior Member

Сообщений: 12
Регистрация: Декабрь 2005

написано 20 Января 2006 17:33ИнфоПравкаОтветитьIP

Ребята!!! Удалось наконец записать/прочитать, попутал местами байты, надо было, например в моём случае не
D14_Cntrl_Reg->D14_ENDPT_MAXPKTSIZE.VALUE = 0x4000; //FIFO=64bytes, а

D14_Cntrl_Reg->D14_ENDPT_MAXPKTSIZE.VALUE = 0x0040; т.е. поменять старший/младший байт местами

nagserg
Junior Member

Сообщений: 13
Регистрация: Декабрь 2005

написано 25 Января 2006 17:41ИнфоПравкаОтветитьIP

Сейчас такая проблема: после установки драйвера, созданного с помощью Driver Studio, Хост не дает команду SET_CONFIGURATION, хотя без драйвера всё нормально. Также с помощью WinDriver все работает, т.е. я могу записать/прочитать конечную точку. Опять же с помощью USBIO могу открыть свое устройство и принудительно дав команду SET_CONFIGURATION, могу читать/писать. Такой вопрос кто какими драйверами пользуется? и в чем может быть проблема, что Хост не выставляет команду SET_CONFIGURATION

sms
Junior Member

Сообщений: 3
Откуда: Новосибирск
Регистрация: Январь 2006

написано 25 Января 2006 21:51ИнфоПравкаОтветитьIP

для full-speed драйвер из примера в DDK. Сам с этим не связывался, другой человек собирал. Так что с какими проблемами сталкивался не знаю. К тому же это было лет 5 назад.

quarter
Junior Member

Сообщений: 8
Откуда: Украина
Регистрация: Декабрь 2005

написано 27 Января 2006 11:54ИнфоПравкаОтветитьIP

Самое простое: объяви своё устройство HID-устройством и научись гонять данные посредством Windows HID-driver, а потом возьмешься за другие драйвера. Я пользуюсь демкой от TheSycon ссылка

nagserg
Junior Member

Сообщений: 14
Регистрация: Декабрь 2005

написано 27 Января 2006 14:55ИнфоПравкаОтветитьIP

Я с HID устройствами не работал, но тоже хочу попробовать в будущем. А с драйвером получилось - проблема была в принципе не в нём. После установки драйвера хост стал ещё раз запрашивать дескриптор Configuration 1024 байта, а я не учёл размер и ... короче контроллер зацикливался.

SevenF
Junior Member

Сообщений: 1
Регистрация: Август 2006

написано 08 Августа 2006 02:07ИнфоПравкаОтветитьIP

quarter
А можешь кинуть исходники для ISP1583 Hi-Speed USB Device Split Bus Eval Kit(date 2003-10-01)". на sonicman[собака]yandex.ru, буду очень благодарен!

Ваш ответ:

Коды форума
Смайлики


Ник:    Пароль       
Отключить смайлики

Все время MSK

Склеить | Разбить | Закрыть | Переместить | Удалить

Новая тема | Написать ответ
Последние сообщения         
Перейти к:

Свяжитесь с нами | skunksworks.net

Copyright © skunksworks.net, 2000-2018

Разработка и техническая поддержка: skunksworks.net


Рейтинг@Mail.ru Яндекс.Метрика