|
драйвер USBIO проблема передачи данных, передаётся первый пакет в 512байт второй не получает приложение... |
|
|
|
 |
Ответов
|
Jul 2 2008, 08:09
|

Частый гость
 
Группа: Свой
Сообщений: 154
Регистрация: 16-08-07
Из: Москва
Пользователь №: 29 829

|
Цитата(galjoen @ Jul 2 2008, 00:22)  4. В дескрипторе конфигурации: 0, //...wTotalLength все дескрипторы описал как однобайтные, и wTotalLength в моём случае равен CONFIG_DESCRIPTOR_LENGTH = 32 Цитата(galjoen @ Jul 2 2008, 00:22)  2. Первая принимающая (IN) 0x82 и вторая передающая 0x02 при изменении адреса допустим на 0x03 вообще ничего не происходит. ничего не изменилось...
--------------------
все косяки, даже о которых не знает сам разработчик, - мои
|
|
|
|
|
Jul 4 2008, 14:28
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(Mozart @ Jul 2 2008, 12:09)  при изменении адреса допустим на 0x03 вообще ничего не происходит. Так у вас вообще OUT EP с адресом 3 вообще обслуживается? Хотя-бы NAK отвечает? Если нет, то после 3 (или 5?) безответных запросов ваш девайс сбросят. А если NAKи слать, то через 5 секунд. Лучше вообще не объявляйте эту EP.
|
|
|
|
|
Jul 4 2008, 14:35
|

Частый гость
 
Группа: Свой
Сообщений: 154
Регистрация: 16-08-07
Из: Москва
Пользователь №: 29 829

|
Цитата(galjoen @ Jul 4 2008, 18:28)  Так у вас вообще OUT EP с адресом 3 вообще обслуживается? Хотя-бы NAK отвечает? Если нет, то после 3 (или 5?) безответных запросов ваш девайс сбросят. А если NAKи слать, то через 5 секунд. Лучше вообще не объявляйте эту EP. так чего делать???... я уже в тупике... я даже не знаю что предположить... вплоть до того что сама микросхема того... хотя на запросы отвечает, и правильно отвечает... заметил вот какую штуку, если закрыть потом открыть устройство, то передается один пакет который я записал в фифо.
--------------------
все косяки, даже о которых не знает сам разработчик, - мои
|
|
|
|
|
Jul 4 2008, 14:53
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(Mozart @ Jul 4 2008, 18:35)  так чего делать???... я уже в тупике... я даже не знаю что предположить... вплоть до того что сама микросхема того... хотя на запросы отвечает, и правильно отвечает... заметил вот какую штуку, если закрыть потом открыть устройство, то передается один пакет который я записал в фифо. Дескрипторы-то у вас передаются? Устройство ведь виндоусом пределяется? Оно в списке устройств USB есть? Если есть, то: 1. Убрать дескриптор 2й EP. 2. Кол-во EP в дескрипторе интерфейса =1. 3. Общая длина в конфигурации на 7 меньше.
|
|
|
|
|
Jul 4 2008, 14:59
|

Частый гость
 
Группа: Свой
Сообщений: 154
Регистрация: 16-08-07
Из: Москва
Пользователь №: 29 829

|
Цитата(galjoen @ Jul 4 2008, 18:53)  Дескрипторы-то у вас передаются? Устройство ведь виндоусом пределяется? Оно в списке устройств USB есть? ну дык в том то и дело что девайсина определилась... Цитата(galjoen @ Jul 4 2008, 18:53)  Если есть, то: 1. Убрать дескриптор 2й EP. 2. Кол-во EP в дескрипторе интерфейса =1. 3. Общая длина в конфигурации на 7 меньше. т.е. попробовать использвать другую ЕР??... попробую сегодня вечером... мысль...
--------------------
все косяки, даже о которых не знает сам разработчик, - мои
|
|
|
|
|
Jul 5 2008, 11:12
|

Частый гость
 
Группа: Свой
Сообщений: 154
Регистрация: 16-08-07
Из: Москва
Пользователь №: 29 829

|
Цитата(galjoen @ Jul 4 2008, 19:07)  Не другую, а ОДНУ. У вас сейчас 2 EP, с одинаковым адресом. Одна передающая (IN) её вы пытаетесь обслуживать. Другая принимающая (OUT). Вы её вообще обслуживаете??? Судя по логу - нет. Если нет, то она (необслуживаемая, но описанная EP) и является причиной сброса девайса. вот теперь я точно ничего не понимаю... почему одинаковые адреса?? в книге Агурова написано Цитата код адреса bEndpointAddress сожержит следующие биты: [7] направление передачи (игнорируется для каналов сообщений) 0 - OUT (от хоста) 1 - IN (к хосту) насколько я понимаю лог, то OUT это запрос направленный из хоста в девайс, в котором и есть запрос на передачу данных. из девайса в хост (IN). а вот если устройство закрыть, открыть, установить конфигурацию, то передаётся ещё один пакет... при закрытии выаолняется запрос SetConfig: ReqUSB->wValue = 0; при установке конфигурации ReqUSB->wValue = 0х01 Код void SetConfig(void) { IntFlag &= ~(1 << ISP_INT_EP0RX); //USB_Int_Flag.BITS.EP0RX = 0;
if(ReqUSB->wValue == 0) { Device_Config_Value = 0; ep0in_ack(); wait_ep0tx(); } //else if (ReqUSB->wValue == 0x0100) else if (ReqUSB->wValue == 0x01) { Device_Config_Value = (unsigned char)(ReqUSB->wValue); ep0in_ack(); wait_ep0tx(); } else { //WriteByteToISP(ISP_REG_ENDP_INDX, 1); WriteByteToISP(ISP_REG_ENDP_INDX, ISP_ENDP_EP0TX); CntrlFun |= (1 << ISP_CNTRL_STALL); WriteByteToISP(ISP_REG_CNTRL_FUN, CntrlFun); while (!(IntFlag & (1 << ISP_INT_EP0SET))) { IntFlag |= ReadByteFromISP(ISP_REG_INT); WriteByteToISP(ISP_REG_INT, IntFlag); if ((IntFlag & (1 << ISP_INT_SUSP)) || (IntFlag & (1 << ISP_INT_RESET))) return; } IntFlag &= ~(1 << ISP_INT_EP0TX); } }
--------------------
все косяки, даже о которых не знает сам разработчик, - мои
|
|
|
|
|
Jul 7 2008, 13:11
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(Mozart @ Jul 5 2008, 15:12)  вот теперь я точно ничего не понимаю... почему одинаковые адреса?? в книге Агурова написано 1. В книге Агурова под термином "канал сообщений", вероятно имелся в виду контрольный канал (EP 0). Но там вообще не нужно описывать EP, указывается только размер пакета (в дескрипторе DEVICE). 2. Вы пытаетесь пользоваться USB не разобравшись в том, что собственно там происходит. В надежде, что всё сразу заработает и вам не понадобится разбираться с теорией, вы потеряли столько времени, сколько вам бы хватило для изучения этой самой теории. 5. Аппноуты полезны только в том случае, если вы уже обладаете знанием теории. 6. Вот прикрепляю главу 8 (перевод не очень) сначала разберитесь с ней.
Прикрепленные файлы
CH08_R.DOC ( 263.5 килобайт )
Кол-во скачиваний: 72
|
|
|
|
|
Jul 7 2008, 14:15
|

Частый гость
 
Группа: Свой
Сообщений: 154
Регистрация: 16-08-07
Из: Москва
Пользователь №: 29 829

|
Цитата(galjoen @ Jul 7 2008, 17:11)  1. В книге Агурова под термином "канал сообщений", вероятно имелся в виду контрольный канал (EP 0). Но там вообще не нужно описывать EP, указывается только размер пакета (в дескрипторе DEVICE). 2. Вы пытаетесь пользоваться USB не разобравшись в том, что собственно там происходит. В надежде, что всё сразу заработает и вам не понадобится разбираться с теорией, вы потеряли столько времени, сколько вам бы хватило для изучения этой самой теории. 5. Аппноуты полезны только в том случае, если вы уже обладаете знанием теории. 6. Вот прикрепляю главу 8 (перевод не очень) сначала разберитесь с ней. я её перечитываю периодически... спасибо за чаптер 8... но как мне кажется ошибка не в том, что я делаю что-то неправильно, а просто где-то накосячил...
--------------------
все косяки, даже о которых не знает сам разработчик, - мои
|
|
|
|
|
Jul 8 2008, 15:03
|

Частый гость
 
Группа: Свой
Сообщений: 154
Регистрация: 16-08-07
Из: Москва
Пользователь №: 29 829

|
ну насколько я понимаю весь этот процес... хост шлёт мне IN пакет, по мануалу я заполняю буфер и шлю "ОК" (хз что они имеют ввиду под "ОК"), потом хост мне шлёт АСК в случае успешного принятия этих данных, или вообще ничего не шлёт, что свидетельствует о том что хост данные не принял. также по мануалу, данные автоматически передаются когда счётчик ФИФО достигает Max Packe Size или до тех пор пока я принудительно их не отправлю... я обращался в nxp на предмет что такое "ОК" и как мне проверить приход сигнала АСК, и нужно ли его проверять... они мне ничего не сказали, что всё мол по стандарту, а потом отослали в ближайшую их службу... идиоты или я дурак.... если честно то я до сих не понимаю что мне делать... точнее как может в программе надо что-то установить?? люди... не дайте пропасть моей грешной душе... может быть я какой-нибудь запрос не верно обрабатываю?... может suspend resume... вот мой кусок кода Код unsigned int write_endpoint(unsigned char endp, unsigned int lenB, unsigned char *buf) {
unsigned int data; WriteByteToISP(ISP_REG_ENDP_INDX, endp); WriteByteToISP(ISP_REG_BUFF_LENGTH, lenB);
SetAddr(ISP_REG_DATA); while (lenB) { data = *buf++; data |= *buf++ << 8; WriteData(data); lenB -= 2; }
return lenB; } з.ы. удалось только сделать приём данных...
--------------------
все косяки, даже о которых не знает сам разработчик, - мои
|
|
|
|
Сообщений в этой теме
Mozart драйвер USBIO проблема передачи данных Jun 27 2008, 19:53 galjoen Цитата(Mozart @ Jun 27 2008, 23:53) в чём... Jun 30 2008, 14:20 Mozart Цитата(galjoen @ Jun 30 2008, 18:20) В от... Jun 30 2008, 15:25  galjoen Цитата(Mozart @ Jun 30 2008, 19:25) enabl... Jun 30 2008, 16:18   Mozart я заново пересмотрел datasheet
ЦитатаNote: ‘Stall... Jun 30 2008, 16:23    galjoen Цитата(Mozart @ Jun 30 2008, 20:23) что т... Jun 30 2008, 16:31   Mozart Цитата(galjoen @ Jun 30 2008, 20:18) Нет.... Jul 1 2008, 08:17    galjoen Цитата(Mozart @ Jul 1 2008, 12:17) а сигн... Jul 1 2008, 19:11     Mozart 0x82 это адрес конечной точки, в данном случае она... Jul 1 2008, 19:39      galjoen Цитата(Mozart @ Jul 1 2008, 23:39) 0x82 э... Jul 1 2008, 20:22       Mozart 0x01 //...MaxPower - это случайно затисалось, там ... Jul 1 2008, 20:35 Mozart я прикрепил лог... из него видно что приходят запр... Jul 1 2008, 14:53          Mozart может быть всё дело в скорости записи... у меня 2 ... Jul 10 2008, 12:56 Mozart может быть я не на все запросы отвечаю??? хотя дев... Jul 3 2008, 06:34 Mozart отправка одного пакета в 64 байта происходит когда... Jul 3 2008, 14:11 Mozart прилагаю лог... енумерации и пр... Jul 5 2008, 21:52 Mozart стала появляться ошибка Цитатаpipe82: Error code 0... Jul 6 2008, 18:29  Mozart Цитата(Mozart @ Jul 6 2008, 22:29) стала ... Jul 7 2008, 06:49   Mozart с одной конечной точкой такая фигня... и ещё не с ... Jul 7 2008, 08:07
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|