yura_lvk
Jul 9 2012, 13:59
Пытаюсь создать такое устройство на базе платы EVK1104 c AT32UC2A3256. Признаюсь, что опыта у меня в этом деле совсем мало, но к делу. Пользуюсь AVR Studio 5.1, из ASF взял в качестве образца проект HID(KBD)+MSC для EVK1101. Чуть-чуть изменил проект под 1104, поставил поддержку USB_DEVICE_HS_SUPPORT, для простоты выкинул оттуда SPI и включил компонент VIRTUAL_MEM. Проблема возникла уже на стадии опознания устройства. Не могу понять в чем дело. Прошу тех у кого есть время и желание помочь посмотреть приложенный doc (там картинки из Elisys Visual USB и дополнительные подробности). Заранее всем спасибо.
kovigor
Jul 9 2012, 14:28
Цитата(yura_lvk @ Jul 9 2012, 16:59)

Чуть-чуть изменил проект под 1104
Вот на этом остановитесь. Если считаете, что SPI не относится к проекту - уберите ее. Но не более того. Вы, похоже, что-то с дескрипторами напутали ...
Возьмите любой другой готовый проект USB для этой платы. Он тоже так себя ведет ?
yura_lvk
Jul 9 2012, 17:42
Готового проекта с составным устройством под данную плату в ASF, к сожалению, нет. Но примеры с mass-storage, клавиатурой и мышью, собираются, зашиваются и работают как положено и подобных проблем не возникает. Вот только клавиатура и мышь в примерах работают в Full-Speed. У меня тут пробел: не знаю может ли клавиатура в состаном устройстве поддерживать High-Speed?
kovigor
Jul 9 2012, 21:24
Цитата(yura_lvk @ Jul 9 2012, 20:42)

У меня тут пробел: не знаю может ли клавиатура в состаном устройстве поддерживать High-Speed?
Да, клавиатура (и вообще любое HID - устройство) может работать на LS/FS/HS, а вот Mass-Storage - только на FS/HS ....
yura_lvk
Jul 10 2012, 03:11
Спасибо, с High-Speed понятно!
Я также попробовал пойти другим путем. Создал чистый проект под EVK1104, в него добавил из ASF компоненты HID(kbd)composite device, MSC composite device, VIRTUAL_MEM, дальше в conf_usb.h задал все EP точки, количество интерфейсов и т.д... то есть все как я описывал в приложенном файле. Итог тот же самый, устройство начинает опознаваться, Mass-storage даже становится видно в Windows, к нему проходят запросы GetMaxLun, Inquiry, ReadCapacity (это я к тому, что не похоже, что с дескрипторами косяк), затем ко второму интерфейсу клавиатуре проходит запрос GetReport (успешно отрабатывает, видно из приложенного DOC). А вот затем к Mass-storage идет запрос READ(boot сектор) и контроллер его почему-то не отрабатывает, нет ответа на READ и все тут. На READ CAPACITY есть ответ, а на READ нет. Вот мне и непонятно почему это происходит?!
Кстати вместо VIRTUAL_MEM делал и MMC и 45BDx... все один в один. Одинаково не работает. А в примерах (Mass-storage single interface) все работает.
yura_lvk
Jul 10 2012, 12:28
М-да... Разобрался!
Ошибка, естественно, тупейшая - неправильный тактовый сигнал (conf_clock.h)