Sh@dow 0 11 апреля, 2011 Опубликовано 11 апреля, 2011 · Жалоба Добрый день, Используется чип вместе с FPGA в режиме slave fifo.Передача идет по EP2 (размер 512 байт,двойная буфферизация) Хост периодически передает данные в контроллер.(один кадр размером 512 байт). FPGA срабатывает по прерыванию от чипа. Для этого в коде прошивки в процедуре TD_Poll есть такой код: if(!(EP2468STAT & 0x01)) { // EP2E IOE &= ~_int_dsp_; IOE |= _int_dsp_; SYNCDELAY; OUTPKTEND = 0x02; return; } Тоесть если буффер не пустой дрыгаем ногой.По нему собственно FPGA и начинает вычитывать fifo. Проблема вот в чем. При первой отсылке происходит прерывание,данные вычитываются хорошо.А вот по второй тоже идет прерывание только данные читаются теже самые.А по третьей отсылке читаются уже обновленные. Я подумал что возможно так происходит из-за двойной буфферизации. Хотя мне кажется что если присылаем всегда один пакет и шлем мы не часто(раз в секунду) то второй буффер не должен быть задействован.Врочем логика работы двойной буфферизации для меня покрыта мраком.Хотелось бы просвятится в этом направлении. ЗЫ: Есть ли возможность убрать двойную буфферизацию.В даташите есть варианты:double triple quad invalid.Что означает invalid.Отсутствие буфферизации? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Силаев 0 15 апреля, 2011 Опубликовано 15 апреля, 2011 · Жалоба в режиме slave fifo все конфигурации перечислены в описании Figure 3-5. Endpoint Configuration, для буфера 512байт там есть варианты только с 2-3-4 буферизацией. По моему в вашем случае самое подходящее BULK EP + FLAGA. При этом никаких прерываний и лишнего кода. Сам для приема передачи использую 5 конфигурацию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться