Я уверен, что у меня "битый" контроллер. Но уверен не до конца, так как это мой первый опыт работы с FX2. Сейчас у меня нет возможности проверить Firmware-Software на другом контроллере. Есть ли у кого-нибудь возможность проверить мое Firmware-Software на своем контроллере?
Подробнее о сути проблемы: После записи в IFCONFIG значения 0xCA, бит "Done" в регистрах GPIFTRIG, GPIFIDLECS, GPIFIE тут же и навсегда становится равным 0 (Transaction in progress). Я использую Long Transfer Mode для чтения 16 Мбайт из внешнего устройства и пересылки этих данных через USB в ПЭВМ. В качестве строба чтения (DIOR_) использую CTL1. Период повторения строба DIOR_=250 нс. Выполняется чтение 16-разрядных слов, т.е. требуемая скорость обмена = 8 Мбайт/сек. Несмотря на столь странное поведение бита "Done", как только значение Transaction Counter становится равным нулю, всегда формируется прерывание ISR_GpifComplete. CyConsole демонстрирует правильные значения читаемых данных. Но программа для измерения скорости обмена между CY7C68013 и ПЭВМ показывает, что скорость обмена не превышает 2.5 Мбайт/сек. Если отключить GPIF и с помощью ядра контроллера записывать 512 в EP2BCH:L пока есть место в EP2FIFO, то эта же программа показывает, что скорость обмена = 10 Мбайт/сек. На выводе CTL1 лог."0" в режимах "Ports" и "GPIF Master". Только в состоянии IDLE при обмене в режиме GPIF на выводе CTL1 формируется положительный импульс длительностью 10 нс. Если, вместо CTL1 использовать CTL0, а CTL1 перевести в третье состояние, то при обмене на выводе CTL1 все равно формируются такие же импульсы. При обмене в режиме GPIF на выводе CTL0 лог."0" во всех состояниях кроме IDLE. Но, в отличие от CTL1, этим выводом можно управлять программно в состоянии IDLE, изменяя значение бита 0 регистра GPIFIDLECTL.
Вообщем, если бы кто-то смог проверить мое Firmware-Software на своем контроллере, то моя благодарность не имела бы границ, в пределах моих возможностей.
|