реклама на сайте
подробности

 
 
19 страниц V  « < 16 17 18 19 >  
Reply to this topicStart new topic
> USB, EZ-USB FX2
toweroff
сообщение Nov 16 2010, 22:38
Сообщение #256


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(Konst_777 @ Nov 16 2010, 21:40) *
Да, в этом случае PKTEND можно не использовать. Важно, чтобы этот сигнал не висел в воздухе и не был в активном состоянии (может быть и "0" и "1" в зависимости от установок регистра FIFOPINPOLAR).

не висит, контроллер туда сразу 1 выдает и FIFOPINPOLAR весь себе в нулях (см.ниже). Это дело самым первым проверил

Цитата(Konst_777 @ Nov 16 2010, 21:40) *
Datasheet для FX2LP. Datasheet для FX2 не смог найти на сайте Cypress. Полагаю, что временные диаграммы одинаковы для FX2 и FX2LP. Но проверять лень. Поэтому выкладываю datasheet для FX2:

извиняюсь, неточно написал. Действительно, FX2LP. Но, к сожалению, суть дела не меняет... даташит, конечно, уже изучался ранее. Есть все-таки надежда, что сам железячный интерфейс работает корректно, потому как ранее на том же месте SX2 нормально съедала дескриптор и компом распознавалась

Чую, что грабли уже близко... но никак не доберусь..

TD_Init() весь написал заново на всякий случай, прямо по шагам от TRM:
Код
void TD_Init(void)             // Called once at startup
{
/*  OLD
*/
   BREAKPT &= ~bmBPEN;      // to see BKPT LED go out TGE
   Rwuen = TRUE;            // Enable remote-wakeup


/*
   my code
*/

    CPUCS = 0x10;  // 48 MHz

  SYNCDELAY;
  PINFLAGSAB = 0xF0;            // FLAGA - indexed, FLAGB - EP8FF
  SYNCDELAY;
  PINFLAGSCD = 0x08;            // FLAGC - EP2EF, FLAGD - indexed
  SYNCDELAY;

  FIFOPINPOLAR = 0x00;

  SYNCDELAY;                    //
  PORTACFG = 0x40;  // FLAGD is /CHIPSELECT


////////////  STEP 1 TRM

  SYNCDELAY;                    //
  IFCONFIG = 0xC8; // for async

////////////  STEP 2 TRM

  SYNCDELAY;                    //
  IFCONFIG |= 0x03; // enable slave FIFO

////////////  STEP 3 TRM

  SYNCDELAY;                    //
  REVCTL=0x03;

////////////  STEP 4 TRM

  // EP2 512 BULK OUT 2x
  SYNCDELAY;                    // see TRM section 15.14
  EP2CFG = 0xA2;                // BUF[1:0]=10 for 2x buffering
  
  // EP6 512 BULK IN 2x
  SYNCDELAY;                    //
  EP8CFG = 0xE2;                // BUF[1:0]=10 for 2x buffering
  
  // EP4 and EP6 are not used in this implementation...
  SYNCDELAY;                    //
  EP4CFG = 0x20;                // clear valid bit
  SYNCDELAY;                    //
  EP6CFG = 0x60;                // clear valid bit


////////////  STEP 5 TRM

  SYNCDELAY;
  FIFORESET = 0x80;             // activate NAK-ALL to avoid race conditions
  SYNCDELAY;                    // see TRM section 15.14
  FIFORESET = 0x02;             // reset, FIFO 2
  SYNCDELAY;                    // see TRM section 15.14
  FIFORESET = 0x04;             // reset, FIFO 4
  SYNCDELAY;                    // see TRM section 15.14
  FIFORESET = 0x06;             // reset, FIFO 6
  SYNCDELAY;                    //
  FIFORESET = 0x08;             // reset, FIFO 8


  SYNCDELAY;                    //
  OUTPKTEND = 0x82;
  SYNCDELAY;                    //
  OUTPKTEND = 0x82;

  SYNCDELAY;                    //
  EP2FIFOCFG = 0x15;            // AUTOOUT=1, WORDWIDE=1
  
  SYNCDELAY;                    //
  EP8FIFOCFG = 0x0D;            // AUTOIN=1, WORDWIDE=1

  SYNCDELAY;
  EP8AUTOINLENH = 0x02;
  SYNCDELAY;
  EP8AUTOINLENL = 0x00;

  SYNCDELAY;                    // see TRM section 15.14
  FIFORESET = 0x00;             // deactivate NAK-ALL

}


Посадил девайс на супрессовский драйвер. То же самое - отправляется 512 байт, возвращается 2, т.е. дело точно не в драйвере sad.gif
(сам девайс тупо получает пакет 512 байт, модифицирует первые 4 байта и отсылает пакет назад)
Go to the top of the page
 
+Quote Post
toweroff
сообщение Nov 22 2010, 09:23
Сообщение #257


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Товарищи, если не сложно, приведите пример своего дескриптора, может все-таки я где напортачил...
Go to the top of the page
 
+Quote Post
alexkok
сообщение Nov 23 2010, 00:28
Сообщение #258


Знающий
****

Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837



Цитата(toweroff @ Nov 22 2010, 13:23) *
Товарищи, если не сложно, приведите пример своего дескриптора, может все-таки я где напортачил...

Я выкладывал здесь


--------------------
Go to the top of the page
 
+Quote Post
ave!
сообщение Jun 3 2011, 18:15
Сообщение #259


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 20-05-11
Пользователь №: 65 166



USB HID в CY7C63813-SXC может работать со всеми выключенными таймерами?

Хочу сделать HID клавиатуру на CY7C63813. Но у меня проблема.
Если при нажатой кнопке зациклить "USB_LoadEP(1,(UINT8*)&report_packet,8);", то постоянно быстро печатается буква. А если после нажатия только один раз вызвать эту функцию, то ничего не печатается.

Как обнаружить запрос компа и в нужный момент ответить на него посылкой данных?

Расскажите кто-нибудь про функции:

USB_bCheckActivity
USB_bGetConfiguration
USB_bGetEPState
USB_EnableOutEP

Может, кто подскажет, в чем проблема. Уже несколько дней с ней парюсь. (

Сообщение отредактировал ave! - Jun 3 2011, 18:17
Go to the top of the page
 
+Quote Post
ave!
сообщение Jun 4 2011, 15:20
Сообщение #260


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 20-05-11
Пользователь №: 65 166



while (!usbInterruptIsReady()); // ждем прихода прерывания
usbSetInterrupt (reportBuffer, 8); // посылаем в ответ пакет

Это из проекта на AVRе. Подскажите, как первую команду для CY7C63813 организовать.

----------------------------------------------------
(дополнено)

Может, кому пригодится. Решил так:

if (USB_bGetConfiguration()) // Only send report if USB device is configured
{
USB_LoadEP(1,(UINT8*)&report_packet,8); // Send to PC report_packet
while(!USB_bGetEPState(1)); // Waits for ACK from PC
}

Главное работает нормально.

Сообщение отредактировал ave! - Jun 4 2011, 15:21
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jun 29 2011, 10:22
Сообщение #261


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Подниму еще раз тему. Итак, имеется: Slave FIFO, асинхронный интерфейс, шина данных 16 бит, /RD соединен с /OE и идет на /OE контроллера, /WR с /WR
Контрольные точки - 0x02 IN, 0x06 OUT, bulk, 512, четверная буферизация. Анализируются флаги FLAGB, FLAGC, которые настроены как FLAGB: EP2FF, FLAGC: EP6EF

После передачи с хоста данных, FLAGC падает (очередь не пустая). Начинается чтение... но FLAGC более не поднимается. Осциллограммы все в порядке, выборка кристалла, чтение, адрес FIFO - всы выставляется корректно. Длительность /CS - 100ns, /RD - 80ns

Не понимаю, куда копать. FLAGD настроен как SLCS

Вот моя инициализация:
Код
void TD_Init(void)             // Called once at startup
{

    PORTACFG = 0x40;

    REVCTL = 0x03; // REVCTL.0 and REVCTL.1 set to 1
    SYNCDELAY;
  
      CPUCS = 0x10; // CLKSPD[1:0]=10, for 48MHz operation
    IFCONFIG = 0xCB; // Configures FX2LP in Slave FIFO mode
    SYNCDELAY;
    EP2CFG = 0xE0; // EP2IN, bulk, size 512, 4x buffered
    SYNCDELAY;
    EP6CFG = 0xA0; // EP6OUT, bulk, size 512, 4x buffered
    SYNCDELAY;

    FIFORESET = 0x80; // set NAKALL bit to NAK all transfers from host
    SYNCDELAY;
    FIFORESET = 0x02; // reset EP2 FIFO
    SYNCDELAY;
    FIFORESET = 0x06; // reset EP6 FIFO
    SYNCDELAY;
    FIFORESET = 0x00; // clear NAKALL bit to resume normal operation
    SYNCDELAY;

    OUTPKTEND = 0x86; // Arm quattro EP6 buffers to ”prime the pump”
    SYNCDELAY;
    OUTPKTEND = 0x86; // Arm quattro EP6 buffers to ”prime the pump”
    SYNCDELAY;
    OUTPKTEND = 0x86; // Arm quattro EP6 buffers to ”prime the pump”
    SYNCDELAY;
    OUTPKTEND = 0x86; // Arm quattro EP6 buffers to ”prime the pump”
    SYNCDELAY;


    EP6FIFOCFG = 0x00; // AUTOOUT=0
    SYNCDELAY;
    EP6FIFOCFG = 0x11; // AUTOOUT=1
    SYNCDELAY;
    EP2FIFOCFG = 0x09; // AUTOIN=1
    SYNCDELAY;
    PINFLAGSAB = 0xC0; // FLAGA - indexed, FLAGB - EP2FF
    SYNCDELAY;
    PINFLAGSCD = 0x0A; // FLAGC - EP6EF, FLAGD - indexed
    SYNCDELAY;

    EP6AUTOINLENH = 0x02;
    SYNCDELAY;
    EP6AUTOINLENL = 0x00;
    SYNCDELAY;

}
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jun 29 2011, 14:30
Сообщение #262


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Проблема решена, код рабочий. Перепутал местами на плате A0 и A1
Go to the top of the page
 
+Quote Post
Bonifacyi
сообщение Jun 30 2011, 07:38
Сообщение #263


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 16-01-08
Пользователь №: 34 137



Добрый день! есть несколько вопросов по устаревшему CY7C68001.
1. Есть ли возможность сбросить fifo out (та, с которой данные забираются на комп) без сброса всей микросхемы?
2. Есть ли возможность сбросить ту же фифошку с помощью компа? Может какая команда есть?
3. Правильно ли я понимаю, что регистр flush принудительно отправляет данные на комп?
4. Не могли немножко по подробнее рассказать про буферизацию, какую использовать?

Спасибо!
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jul 2 2011, 18:31
Сообщение #264


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Не работает пин PKTEND
AUTOIN срабатывает четко. Как только пакет короткий, дергаю пином PKTEND в ноль - и ничего. Сигнал точно доходит, длительность в порядке
Полярность тоже настроена на низкий уровень.
Что я мог упустить?

Разобрался
Теперь нужно понять, как со стандартным интерфейсом микроконтроллера (A, D, /WR, /RD, /CS) сделать так, чтобы PKTEND работал в активном состоянии /CS

PS
Достаточно установить PKTEND и один раз ПРОЧИТАТЬ из точки IN
Go to the top of the page
 
+Quote Post
spindelsinn
сообщение Jul 13 2011, 08:41
Сообщение #265


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 6-04-09
Пользователь №: 47 226



подскажите где и у кого можно купить отладочные платы cypress для high speed периферии?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jul 18 2011, 11:04
Сообщение #266


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(spindelsinn @ Jul 13 2011, 12:41) *
подскажите где и у кого можно купить отладочные платы cypress для high speed периферии?

в терре есть такое чудо: http://www.terraelectronica.ru/pdf/DIGILENT/DL-USB2.pdf


2 All
Подскажите, пожалуйста, такой момент. Файл IIC, появляющийся после компиляции в кейле, содержит байт-в-байт содержимое EEPROM? Что-то у меня длина, PID/VID не сходятся с документацией. Больше длина интересует, т.к. судя по этому файлу, длина 0х0003, а реальная - 2 с гаком килобайта
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Jul 19 2011, 17:25
Сообщение #267


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(toweroff @ Jul 18 2011, 14:04) *
Подскажите, пожалуйста, такой момент. Файл IIC, появляющийся после компиляции в кейле, содержит байт-в-байт содержимое EEPROM?...

Да

Цитата(toweroff @ Jul 18 2011, 14:04) *
...Что-то у меня ... длина 0х0003, а реальная - 2 с гаком килобайта

Это всего один из множества блоков данных. Первые блоки данных содержат код обработки прерываний.

Цитата(toweroff @ Jul 18 2011, 14:04) *
...Что-то у меня ... PID/VID не сходятся с документацией.

d:\cypress\usb\bin\hex2bix -i -m 16384 -f 0xC2 -v 0x04B4 -p 0x0081 -c 0x41 -o FX2LP.iic FX2LP.hex

Проверьте Вашу командную строку для получения файла *.iic. Точнее, проверьте значения параметра -v (VID) и параметра -p (PID). Если Вы не используете эти параметры, то в файл *.iic будут записаны значения по умолчанию: VID=0x0547, PID=0x2131.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jul 19 2011, 17:31
Сообщение #268


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Konst_777, спасибо, посмотрю. Я так понял, что эти первые 3 байта - прыжок на загрузчик, который потом и загрузит содержимое EEPROM?
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Jul 19 2011, 17:57
Сообщение #269


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



Цитата(toweroff @ Jul 19 2011, 20:31) *
...Я так понял, что эти первые 3 байта - прыжок на загрузчик, который потом и загрузит содержимое EEPROM?

Нет, просто сам код всегда сегментирован. Яркий пример - таблица прерываний:
Код
             CSEG AT 0h       ; Reset location
             LJMP Start         ; jump to start Program

             CSEG AT 3h       ; External Interrupt 0 (/INT0)
             RETI
                    
             CSEG AT 0Bh       ; Timer 0 Overflow
             LJMP Timer0_ISR
                    
             CSEG AT 13h       ; External Interrupt 1 (/INT1)
             RETI
                    
            CSEG AT 1Bh       ; Timer 1 Overflow
            RETI
и т.д.

То есть, между участками кода есть зазоры. Файл *.iic отображает содержимое *.hex файла. Если преобразовать *.hex файл таким образом, чтобы он содержал весь код, начиная с нулевого адреса и заканчивая максимальным адресом памяти программ, то и *.iic файл вместо десятков сегментов будет содержать один.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jul 19 2011, 18:03
Сообщение #270


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(Konst_777 @ Jul 19 2011, 21:57) *
То есть, между участками кода есть зазоры. Файл *.iic отображает содержимое *.hex файла. Если преобразовать *.hex файл таким образом, чтобы он содержал весь код, начиная с нулевого адреса и заканчивая максимальным адресом памяти программ, то и *.iic файл вместо десятков сегментов будет содержать один.

то-то я смотрю, что простой bin2hex раздувает на бОльший размер
спасибо!
Go to the top of the page
 
+Quote Post

19 страниц V  « < 16 17 18 19 >
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01507 секунд с 7
ELECTRONIX ©2004-2016