Цитата(drka @ Nov 24 2005, 19:50)

В данный момент близок к реализации Mass Storage Device, если кому-то будет полезно могу поделиться информацией и наблюдениями.
Давным-давно реализовал составное устройство HID+MassStorage на связке USBN9604+AT45DB642D+ATmega/AT90CAN. Думал это уже никому не интересно. Думал, что и USBN9604 то уже с производства снимают, поэтому подзатарился для возможного спроса/ремонта. А где вы эти USBN9604 покупаете? И сколько они стоят? Я через друга, который живёт в США, купил. Около 70 руб. штука обошлись.
Мне USBN9604, несмотря на тормозную шину (на 16 мГц даже с максимальной задержкой не все работают) и кое-какие глюки (если интересно опишу), очень понравились. У современных, встроенных в микроконтроллеры, систем таких возможностей нет. М.б. я рано USBN9604 в утиль списал?
По теме:
1. Могу рекомендовать использовать 2 незадействованные EP для того, чтобы у EP0 было FIFO 64 байта. USBN9604, в отличие от других, позволяет адрес EP устанавливать, в т.ч. и одинаковые адреса у разным EP. Да и работать удобнее когда для данных туда, данных сюда и SETUP-а разные буфера. Хотя с энумерацией повозится придётся, но там полюбому нужно возится чтобы при включении компа, со вставленным в него USB девайсом, он нормально загружался (любой комп).
2. В MassStorage можно данные из AT45DB642D в USBN9604 минуя процессор отправлять если их на одну шину посадить. Получается даже лучше, чем ПДП, потому, что процессор вообще свободен, только таймерами сигналы формирует. И скорость чтения MassStorage (если CRC не считать и HIDа ,с зарезервированной под него пропускной способностью шины USB, нет) получается строго 1 мБайт в секунду. Т.е. теоретический предел пропускной способности full speed USB.
public32,
не понял, а где у вас передача дескрипторов хосту? О какой установке адреса (и где у вас обрабатывается получение SETUP пакета SET_ADDRESS?) вы говорите до того, как отправили хосту дескриптор DEVICE? Этот дескриптор (и какой он у вас?) хосту нормально отправляется? ACK от хоста на него вы получаете?
NAK-и на первое время можете вообще не обрабатывать. Запретите прерывания по ним и всё. А вот когда ваш девайс определятся начнёт, тогда это может понадобится.