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

 
 
 
Reply to this topicStart new topic
> 4 bulk EP и PDIUSBD12, DMA режим PDIUSBD12 и передача данных хосту по EP1.
Слава_2
сообщение May 21 2007, 13:15
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 21-05-07
Пользователь №: 27 850



Добрый день.

Есть вопросы с работой PDIUSBD12 из микроконтроллера.
Есть устройство с 4-мя bulk EP. Написан свой драйвер для Win 2000/XP.
Не замечал ли кто-нибудь, что контроллер PDIUSBD12 после перевода его в режим DMA и активной работы по EP2 (Main EP) 8 Кбайт в одну сторону и 8 Кбайт в другую, при работе с EP1 отказывается отправлять пакеты?
Ситуация странная, т.к. до начала циклов передачи/отправки по EP2 логика работы с EP1 работает просто замечательно.
Также замечательно проходит обмен и по EP2, причем достигается заявленная инженерами philips/nxp? скорость передачи USB-устройство --> хост и наоборот в 1 Мбайт/cек.

Общая процедура приема пакетов следующая:

void EP1_ReceiveAndSend()
{
unsigned short status;
unsigned short buffer[8]; //заполняется словами
SELECT_EP1OUT(status);
if( status^2 ) //EP1 Out stalled?
{
if( status&1 ) //EP1 buffer full?
{
ReceiveEP1(buffer); //receive buffer, clear buffer
//пакет получен
EP1_Logic(buffer); //процедура анализа и выдачи результата
SELECT_EP1IN(status);
//проверяем, есть ли заполненный и не отправленный буфер у PDIUSBD12 в EP1 Out
if( status&2 )return ; //EP1 In stalled? Да - выход.
while( status&1 ){
//буфер занят? Ждем.
//здесь после активной работы в режиме DMA - проблема
//бит full статуса EP контроллер PDIUSBD12 не сбрасывает - и бесконечное ожидание в цикле
SELECT_EP1IN(status);
if( status&2 )return ; //EP1 In stalled? Да - выход.
}
//отправка данных
SendEP1(buffer); //send buffer, validate buffer
}
}
}

Схема подключения приблизительно такая же как на странице 7 документации PDIUSBD12 (Fig 3. Example of parallel interface to an 80C51 microcontroller). DMACK, DMREQ, EOT = '0'.
Детальную схему подключения к сожалению не могу привести, т.к. есть жадные к успеху конкуренты. (Дело дошло даже до воровства компьютеров sad.gif.)

Буду благодарен за разумные предложения.
Go to the top of the page
 
+Quote Post
Седой
сообщение May 21 2007, 14:32
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



Работаем с этой микросхемой несколько лет. Странностей не обнаружено.
Но!!! Нарушение временных диаграмм приводило к непредсказуемым результатам.

PS.
Цитата
Детальную схему подключения к сожалению не могу привести, т.к. есть жадные к успеху конкуренты. (Дело дошло даже до воровства компьютеров)

А вот это непонятно.
Go to the top of the page
 
+Quote Post
Слава_2
сообщение May 21 2007, 14:55
Сообщение #3





Группа: Новичок
Сообщений: 8
Регистрация: 21-05-07
Пользователь №: 27 850



Цитата(Седой @ May 21 2007, 17:32) *
Работаем с этой микросхемой несколько лет. Странностей не обнаружено.
Но!!! Нарушение временных диаграмм приводило к непредсказуемым результатам.

PS.

А вот это непонятно.


Да, наблюдал неоднократно. Если времянки завалены, то внутренний конечный автомат PDIUSBD12, отвечающий за интерфейс команд/данных, в конце концов не знает чего делать.

Что именно непонятно? Схема приведенная в datasheet-е к PDIUSBD12?
Go to the top of the page
 
+Quote Post
Седой
сообщение May 21 2007, 15:12
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



Цитата
Что именно непонятно?

Что это за конкуренты такие. PDIUSBD12 выпускается уже давно - в инете куча примеров и исходников.
Go to the top of the page
 
+Quote Post
Слава_2
сообщение May 22 2007, 10:28
Сообщение #5





Группа: Новичок
Сообщений: 8
Регистрация: 21-05-07
Пользователь №: 27 850



Седой, простите, пожалуйста, но вам сюда:

Есть устройство с 4-мя bulk EP. Написан свой драйвер для Win 2000/XP.
Не замечал ли кто-нибудь, что контроллер PDIUSBD12 после перевода его в режим DMA и активной работы по EP2 (Main EP) 8 Кбайт в одну сторону и 8 Кбайт в другую, при работе с EP1 отказывается отправлять пакеты?
Схема подключения такая же как на странице 7 документации PDIUSBD12 (Fig 3. Example of parallel interface to an 80C51 microcontroller). Кроме того DMACK, DMREQ, EOT = '0'.
Схема подключения не такая же как у контроллера Hitachi.

>Что это за конкуренты такие.
Это жизнь такая.

>в инете куча примеров и исходников
С примерами в интернете для PDIUSB я уже знаком давно (написаны они Hilbert Zhang ZhenYu). Вот только годятся они только для прототипной платы с ее объемом памяти, а не для устройства с объемом памяти от 8 до 32 Кбайт.

>Работаем с этой микросхемой несколько лет. Странностей не обнаружено.
А характеристики интерфейса передачи данных через PDIUSB можете привести (число EP, их тип, драйвер в ОС, используется ли режим DMA PDIUSB с двойной буферизацией через main EP)?

Поконкретнее пожалуйста. А я постараюсь вам поверить.

(Я ж не прошу вас давать информацию о вашем управляющем контроллере или процессоре или чего устройство в целом делает.)
Go to the top of the page
 
+Quote Post
Седой
сообщение May 22 2007, 13:01
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



Цитата
Поконкретнее пожалуйста. А я постараюсь вам поверить

http://www.slavna.ru/stran/ucc06.htm
Go to the top of the page
 
+Quote Post
Слава_2
сообщение May 22 2007, 14:11
Сообщение #7





Группа: Новичок
Сообщений: 8
Регистрация: 21-05-07
Пользователь №: 27 850



Цитата(Седой @ May 22 2007, 16:01) *


USB протокол Rev 2.0 (full speed) - ну зачем же так. smile.gif

Вижу контроллер и схему. Наверное программно времянки приходится держать? У меня вместо ALE в PDIUSB используется A0, а CLKOUT не используется.

Вижу есть драйвер. Вроде свой даже. Вот только отладочную информацию из него надо выкидывать, прежде чем окончательную версию в интернет выпускать.
Да и памяти у вас больше - аж целых 128 Кбайт. А сколько логических EP неясно.


Нашел две ошибки.
1) Запрещались прерывания, чтобы выжать скорость, не в том месте. Ну и конечно прерывание по приходу пакета в EP1 не ловилось.
2) if( status^2 ) надо заменить на if( !(status&2) ) если кому интересно.

Так что пользуйтесь народ PDIUSBD12. Сложно, но можно.
Go to the top of the page
 
+Quote Post
Седой
сообщение May 22 2007, 15:02
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



Информации для отладчика в драйвере нет. Есть вызовы некоторых dbg функций с сообщениями для монитора. Драйвер специально создан для данного продукта. Сами используем другой, универсальный, поддерживающий наш класс USB устройств( соответственно и firmware другое - реализующее наш протокол). DMA иcпользовали,потом отказались из-за ненужности. Никаких программных задержек не использовали. В данном устройстве используется аппаратная шина микроконтроллера.

Цитата
Так что пользуйтесь народ PDIUSBD12. Сложно, но можно

Ядро USB у Philips (NXP) довольно простое - PDIUSBD11-12, ISPXXXX, LPCXXXX. PDIUSBD12 - устаревшее решение, в новых разработках, кроме бюджетных, не используем.
Go to the top of the page
 
+Quote Post

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

 


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


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