[an error occurred while processing this directive]
|
CY3C68013A управляется микропроцессором в slave-fifo режиме (16 бит шина). В Cypress включены и настроены 2 буффера:
EP2 (из ПК) размером 1024 (пакет размером 512, bulk)
EP6 (в ПК) размером 1024 (пакет размером 512, bulk)
Настроил 2 флага: FlagA -> EP2EF, FlagB -> EP6FF
настроил автопосылку буфера размером 512 байт.
Запись в Cypress работает без проблем - процессором вычитываю из буффера всё что отправил из ПК нормально.
Не могу понять принцип работы механизма чтения из Cypress.
Я пытался делать передачу таким образом:
//Передаю комманду в CPU
WriteFile(h_USB, (LPVOID)&Cmd, 1, &dwRet, NULL);
//Принимаю 32768 байт
ReadFile(h_USB, (LPVOID&r_Buffer, 32768, &dwRet, NULL);
..и ReadFile "зависает" до тех пор пока не примет 32к данных... вроде логично, но если микропроцессор записывает эти 32к в Cypress раньше чем я делаю ReadFile (и выставляется флаг EP6FF) то следующий вызов ReadFile просто зависает а данные уже ушли в небытие...
но если делать пачками по 512 байт - то ситуация меняется в корне, т.е. даже если микропроцессор пошлёт данные раньше чем вызовется ReadFile, процедура не "зависнет" а нормально вычитает 512 байт.
Подскажите как выкручиваться из ситуации?