cypress68013USB произвольного байта длина переноса AUTOIN


недействительный TD_Init (недействительный)

{// Вызывается один раз при запуске

 

         CPUCS = 0x12; // CLKSPD [1: 0] = 10, для работы 48MHz, выход CLKOUT

         SYNCDELAY;

 

         REVCTL = 0x03; // REVCTL.0 и REVCTL.1 набор 1

         SYNCDELAY;

         PINFLAGSAB = 0x08; // FLAGA- EP2EF (EP2 пустой флаг) // EP2 OUT

         SYNCDELAY;

         = 0x0E PINFLAGSCD; // FLAGC - EP6FF ( EP6 полный флаг) // EP6 ИН

         SYNCDELAY;

         // PORTACFG | = 0x80; // PA7 мультиплексирование FLAGD

         // SYNCDELAY;

         IFCONFIG = 0x63; // Внутренние часы, 48 МГц, интерфейс ведомого устройства FIFO

// множество externalclock является 0x63, 5МГц-48MHz

         SYNCDELAY;

        

         Определение бит информации регистра // IFCONFIG

         // IFCLKSRC = 1, FIFOs выполняется на источник internalclk

         // xMHz = 1, операция 48MHz

         // IFCLKOE = 1, привод IFCLK at48MHz сигнала контактный

         // IFCLKPOL = 0, не инвертировать IFCLK pinsignal от внутреннего CLK

         // ASYNC = 0, мастер-образцы синхронного

         // GSTATE = 0, не гони GPIF statesout на PORTE [2: 0], отлаживать WF

         // IFCFG [1: 0] = 11, FX2 в ведомом режиме FIFO

        

         // Примечание: Предварительно REVE EPxGPIFTCH / L регистр пострадавших, а также ...

         // ... они были заменены byGPIFTC [B3: B0] регистры

         // предыдущие версии EPxGPIFTCH / L регистр был GPIFTC [B3: B0] заменить регистр

        

         // EP4 и EP8 не используются в этом варианте осуществления ... здесь не используются EP4 и EP8 конечной точки

         EP1OUTCFG = 0xa0;

         SYNCDELAY; 

         EP1INCFG = 0xa0; 

         SYNCDELAY;                

         EP2CFG = 0xAA; // из 512 / 1024bytes, 2x, сыпучие; в котором b5 / b4 бит (ТИП1 / TYPE0) по сравнению с режимом объемного переноса 10

         SYNCDELAY;                   

         EP6CFG = 0xEA; // в 512 / 1024bytes, 2x, навалочных

         SYNCDELAY;             

         EP4CFG = 0x02; // ясно бит действительности

         SYNCDELAY;                    

         EP8CFG = 0x02; // ясно бит действительности

         SYNCDELAY;  

        

// FIFORESET состояния сброса для FIFO

         FIFORESET = 0x80; // Включить NAK-Allt недействительного условие гонки

         SYNCDELAY; // смотри раздел TRM 15.14

         FIFORESET = 0x02; // сброс, повышение 2

         SYNCDELAY; //

         FIFORESET = 0x04; // сброс, роза 4

         SYNCDELAY; //

         FIFORESET = 0x06; // сброс, FIFO-6

         SYNCDELAY;

         FIFORESET = 0x08; // сброс, роза 8

         SYNCDELAY; //

         FIFORESET = 0x00; // Деактивировать NAK-ALL

         SYNCDELAY;                   

        

                  

         // обрабатываем случай, когда мы были уже в автоматическом режиме ... EP2 настроен на автоматический режим вывода 16-разрядный

         //...for пример: назад к загрузке микропрограммного назад ... EP6 набора вход 16 в автоматическом режиме

         / * EP2BCL = 0x80; // рука EP2OUT bywriting счетчик байтов ж / пропустить.

         SYNCDELAY;

         EP2BCL = 0x80; // рука EP2OUT bywriting счетчик байтов ж / пропустить.

         SYNCDELAY;                    

        

         OUTPKTEND = 0x82; // Арм и EP2 буферы toPrime в ПУМ

         SYNCDELAY;

         OUTPKTEND = 0x82; // Арм и EP2 буферы toPrime в ПУМ

         SYNCDELAY;

 

         // Основные потребности видеть AUTOOUT = 0 AUTOOUT = 1 переключатель вооружить ENDP-х 

         EP2FIFOCFG = 0x00; // AUTOOUT = 0, 1 = Wordwide

         SYNCDELAY; //  

         EP2FIFOCFG = 0x10; // AUTOOUT = 1, WordWide = 1

         SYNCDELAY; * /

 

         // Если данные не удовлетворяют транспорта в режиме пакетной передачи данных буфера требуемого размера, например, пакет для передачи навалом в 1024,

         // Если размер буфера составляет 10 байтов данных, могут быть представлены через INPKTEND

         // INPKTEND = 0x84; // Арм как EP6 буферы toPrime в ПУМ

         // SYNCDELAY;

         // INPKTEND = 0x84; // Арм как EP6 буферы toPrime в ПУМ

         // SYNCDELAY;      

 

         EP6FIFOCFG = 0x00; 

         SYNCDELAY; //

         EP6FIFOCFG = 0x08; // AUTOIN = 1, 1 = ZEROLENIN, Wordwide = 0 (8BIT)

         SYNCDELAY; //

                  

         EP6BCH = 0x03; // рука EP6OUT написав ByteCount ж / пропустить.

         SYNCDELAY;

         EP6BCL = 0xc0; // рука EP6OUT написав ByteCount ж / пропустить.

         SYNCDELAY;

         EP6BCH = 0x03; // рука EP6OUT написав ByteCount ж / пропустить.

         SYNCDELAY;

         EP6BCL = 0xc0; // рука EP6OUT написав ByteCount ж / пропустить.

         SYNCDELAY; / ** /

        

         FIFOPINPOLAR = 0x00; // установить все подчиненные FIFO интерфейс булавки в качестве активного минимума

         SYNCDELAY;

         EP6AUTOINLENH = 0x03; // EZ-USBautomatically совершает данные в 512 байт chunks03

         SYNCDELAY;

         EP6AUTOINLENL = 0xc0; // c0

         SYNCDELAY;

 

// JTAG Включение и сигналы синхронизации для модуля 6 ZTEXSpartan 1.1 (настройка АСВА + FX2LP)? ? ? Какова роль FX2LP порта и ZTEX

         PORTACFG & = 0xFD;

         SYNCDELAY;

         OEA | = 0x02; // Declare PA.1, как выход ... SLWR

         SYNCDELAY;

         ИОА | = 0x02; // выход 1 на PA.1

         SYNCDELAY;

 

         //OEC&=0x01;//PC.0 в качестве выходного сигнала (SYNC) сигнала синхронизации Pc.0

         // SYNCDELAY;

         // МОК | = 0x00; // выход 0 на Pc.0 ... SYNC сигнал LOW

         // SYNCDELAY;

         & = 0xFE КДИ; // Pd.0 в качестве входного сигнала (изменение Clock) Pd.0 сигнала внутренний и внешний тактовый сигнал переключения

         SYNCDELAY;

        

   // включить двойную функцию autopointer

   AUTOPTRSETUP | = 0x01;        

 

         PORTACFG & = 0x7F;

    SYNCDELAY;

         OEA | = 0x80; // делают PA7 выходной порт , PA7 затем SLWR записи действительный сигнал

    SYNCDELAY;

         ИОА & = 0x7F; // делают PA7 установлен 0

    SYNCDELAY;

         ИОА // | = 0x80;

         // SYNCDELAY;

 

         // Настройка для внешних прерываний

         PORTACFG | = 0x01; // настроить PORTA PA0 на INT0

         SYNCDELAY;

         TCON | = 0x01; // INT0 действует на падение

         SYNCDELAY;

         IE | = 0x81; // включить глобальные прерывания, INT0 разрешения прерывания

         SYNCDELAY;

}

 

недействительный TD_Poll (недействительный)

{// Вызывается несколько раз в то время isidle устройства

 

         если (НОР & 0x01)

         {

                   done_frm_fpga = 1;

         }

         если ((done_frm_fpga) && (НОРЫ & 0x01)) // если РС.1 , когда входной сигнал низкий, переключатель на внешний входной тактовый сигнал, а счетчик затем будет Pc.0 ( сигнал синхронизации ) является высоким

         {

                   // IFCONFIG = 0x63; // внешний тактовый вход, ведомый FIFOinterface

                   // SYNCDELAY;

        

                   PORTACFG & = 0xFD;

                   SYNCDELAY;

                   XXIII | = 0x02;

                   SYNCDELAY;

                   ИОА & = 0xFD; // выход 1 на PA.1 ... сигнал SLWR ВЫСОКОЕ

                   SYNCDELAY;

                   done_frm_fpga = 0;                  

         }

 

если (! (EP2468STAT & bmEP6FULL)) // ENDPOINT6 FIFO

     { 

                 FIFORESET = 0x80; // Включить NAK-Allt недействительного условие гонки

                   SYNCDELAY; // смотри раздел TRM 15.14

                   FIFORESET = 0x06; // сброс, FIFO-6

                   SYNCDELAY;

                   FIFORESET = 0x00; // Деактивировать NAK-ALL

                   SYNCDELAY; / ** /

 

                   EP6BCH = 0x03; // рука EP6OUT написав ByteCount ж / пропустить.

                   SYNCDELAY;

                   EP6BCL = 0xc0; // рука EP6OUT bywriting счетчик байтов ж / пропустить.

                   SYNCDELAY;

                   EP6BCH = 0x03; // рука EP6OUT bywriting счетчик байтов ж / пропустить.

                   SYNCDELAY;

                   EP6BCL = 0xc0; // рука EP6OUT bywriting счетчик байтов ж / пропустить.

                   SYNCDELAY;

 

                   EP6AUTOINLENH = 0x03; // EZ-USBautomatically совершает данные в 512 байт chunks03

                   SYNCDELAY;

                   EP6AUTOINLENL = 0xc0; // c0

                   SYNCDELAY;

                            

     }

   INTSETUP & = ~ bmAV4EN; // Отключить INT4 autovectoring так что weuse внешней INT4

 

}

 

 

Опубликовано 18 оригинальных статей · вона похвала 8 · просмотров 10000 +

рекомендация

отblog.csdn.net/zengshaoqing/article/details/53053666