Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: CY7C68013:Передача данных
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
Sh@dow
Добрый день,
Используется чип вместе с 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.Отсутствие буфферизации?
Спасибо.
Силаев
в режиме slave fifo все конфигурации перечислены в описании Figure 3-5. Endpoint Configuration, для буфера 512байт там есть варианты только с 2-3-4 буферизацией.

По моему в вашем случае самое подходящее BULK EP + FLAGA.
При этом никаких прерываний и лишнего кода.
Сам для приема передачи использую 5 конфигурацию.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.