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

 
 
5 страниц V  « < 3 4 5  
Reply to this topicStart new topic
> ATXMEGA и USB
Копейкин
сообщение Jul 8 2014, 09:30
Сообщение #61


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Xenia, буферы конечно выделены и тактируются от PLL, но ещё ведь вопрос обработки данных.
Как функция AT90 ещё нормально, но хост должен быть готов к трансферу каждую мс - может и не успеть.
Go to the top of the page
 
+Quote Post
Falkon_99
сообщение Jul 8 2014, 09:57
Сообщение #62


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 26-03-12
Из: Харьков
Пользователь №: 71 010



Спасибо, архитектура AVR ближе, поэтому и смотрю в их сторону.
Но знаний по USB не достаточно, поэтому паралельно просматриваю STM32, где куча примеров в сети...
С другой стороны, те кто пробовал USB в STM32, в один голос твердят, что слишком уж запутано там всё, и новичку проще начать осваивать USB на других контроллерах.
Вот и дилема...
А вообще, задача простейшая, необходимо подключить USB флешку, и работать с файловой системой!
Go to the top of the page
 
+Quote Post
Копейкин
сообщение Jul 8 2014, 10:24
Сообщение #63


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Falkon_99, Обратите внимание на STM32CubeMX.
Это генератор скелета программы, подключающий драйвера и библиотеки, назначающий выводы.
Довольно дружелюбный.
После установки дайте ему скачать библиотеки (CubeF2, CubeF4, ...) для соответствующего контроллера.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jul 8 2014, 11:21
Сообщение #64


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Копейкин @ Jul 8 2014, 13:30) *
... буферы конечно выделены и тактируются от PLL, но ещё ведь вопрос обработки данных.
Как функция AT90 ещё нормально, но хост должен быть готов к трансферу каждую мс - может и не успеть.

Хост ничего такого делать не должен, поскольку именно он - активное начало в трансфере. Только хост может обратиться к девайсу и чего-то от него потребовать, а девайс обязан дать ответ не позднее, чем наступит таймаут. Более того, даже при всем своем желании девайс не имеет возможности вызвать хост или хотя бы подать ему какой-то сигнал без вопроса с его стороны, даже когда девайсу это очень нужно. В этом смысле USB чуточку похож на I2C, где мастер может быть только один, и именно он управляет всей шиной. Поэтому быть хостом просто лепота sm.gif, поскольку никто тебя не подгоняет: не можешь шевелиться быстро - шевелись медленно.

Ну, а обработка данных - совершенно иной вопрос, а потому и не должен обсуждаться в отношении разницы хост-девайс.

Цитата(Falkon_99 @ Jul 8 2014, 13:57) *
Спасибо, архитектура AVR ближе, поэтому и смотрю в их сторону.
Но знаний по USB не достаточно, поэтому паралельно просматриваю STM32, где куча примеров в сети...
С другой стороны, те кто пробовал USB в STM32, в один голос твердят, что слишком уж запутано там всё, и новичку проще начать осваивать USB на других контроллерах.

USB, на мой взгляд, можно только использовать, а освоить его невозможно sm.gif. Т.е. если честно разбираться в спецификации, то можно просто рехнуться. Поэтому народ обычно берет чужой готовый пример, а затем модифицирует его под свои цели. А то и вовсе использует целиком, не вникая в смысл алгоритма.

Цитата(Falkon_99 @ Jul 8 2014, 13:57) *
А вообще, задача простейшая, необходимо подключить USB флешку, и работать с файловой системой!

Ничего себе простейшая. Да это очень трудная задача! sm.gif Сама файловая система невразумительна - приходится чужой код вживлять, поскольку самой такого не написать. А разговор с флешкой - отдельная премудрость.

Я сама до сих пор файловую систему освоить не могу, хотя уже больше 10 лет с AVR-ками вожусь. Ну, работает она у меня, хоть кровь из носу. sm.gif
Go to the top of the page
 
+Quote Post
Копейкин
сообщение Jul 8 2014, 14:22
Сообщение #65


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Цитата(Xenia @ Jul 8 2014, 15:21) *
Хост ничего такого делать не должен, поскольку именно он - активное начало в трансфере. Только хост может обратиться к девайсу и чего-то от него потребовать, а девайс обязан дать ответ не позднее, чем наступит таймаут. Более того, даже при всем своем желании девайс не имеет возможности вызвать хост или хотя бы подать ему какой-то сигнал без вопроса с его стороны, даже когда девайсу это очень нужно. В этом смысле USB чуточку похож на I2C, где мастер может быть только один, и именно он управляет всей шиной. Поэтому быть хостом просто лепота sm.gif, поскольку никто тебя не подгоняет: не можешь шевелиться быстро - шевелись медленно.

Если мне не изменяет память, то, согласно спецификации, хост должен опрашивать девайс не реже, чем девайс заявил в дескрипторе,
обычно единицы миллисекунд.
Обмен типа interrupt вообще с интервалом 1 или 2 мс, не помню точно.
SW библиотеки хоста требуют таймер, периодом в 1 мс.
Хотя, для самодельной системы, если нет потока данных, может и нет смысла всё строго соблюдатью
Go to the top of the page
 
+Quote Post
Falkon_99
сообщение Jul 9 2014, 07:53
Сообщение #66


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 26-03-12
Из: Харьков
Пользователь №: 71 010



Простейшая задача - это в кавычках )))) я себя так утешаю, но делать прийдётся...
спасибо
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jul 9 2014, 09:27
Сообщение #67


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Копейкин @ Jul 8 2014, 18:22) *
Если мне не изменяет память, то, согласно спецификации, хост должен опрашивать девайс не реже, чем девайс заявил в дескрипторе,
обычно единицы миллисекунд.
Обмен типа interrupt вообще с интервалом 1 или 2 мс, не помню точно.
SW библиотеки хоста требуют таймер, периодом в 1 мс.
Хотя, для самодельной системы, если нет потока данных, может и нет смысла всё строго соблюдать.


Верно, 1 мс, если это "full-speed". Однако это требование установили от балды, поскольку ниоткуда эта цифра не вытекает. В спецификации USB 2.0 сказано: "The Host Controller produces SOF tokens at a period of 1 ms when operating with full-speed devices, and at a period of 125 μs when operating with high-speed devices." Т.е. это чистая условность, которую даже девайс не может попросить изменить в передаваемых хосту дескрипторах (я там такого поля даже не нашла).

Тем не менее, 1 мс это не так уж мало, чтобы у любой из AVR возник по этому повод напряг. Обычно даже часовой таймер запускают с периодом на 1 мс и прерывания по нему успевают обрабатывать.

Короче говоря, если девайс успевает реагировать на запросы хоста за 1 мс, то почему бы хосту должно быть трудно выдавать эти запросы с той же скоростью? Т.е. здесь я протестую против положения, что AVR, якобы, может справиться с работой только в качестве девайса, а работа в качестве хоста им не под силу. Тем более, что прием и передача потребляют практически одинаковое количество ресурсов.
Go to the top of the page
 
+Quote Post
Копейкин
сообщение Jul 9 2014, 13:01
Сообщение #68


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Цитата(Xenia)
Т.е. это чистая условность, которую даже девайс не может попросить изменить в передаваемых хосту дескрипторах (я там такого поля даже не нашла).

Поле bInterval дескриптора Endpoint 1 байт.
Цитата
Interval for polling endpoint for data transfers.
Expressed in frames or microframes depending on the
device operating speed (i.e., either 1 millisecond or
125 μs units).

Да я не собирался ругать AVR.
Сам на них много чего делаю.
Но USB-хост делать не стал-бы.
Думаю дальше спорить не будем wink.gif правда?
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jul 9 2014, 18:08
Сообщение #69


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Копейкин @ Jul 9 2014, 17:01) *
Да я не собирался ругать AVR.
Сам на них много чего делаю.
Но USB-хост делать не стал-бы.
Думаю дальше спорить не будем wink.gif правда?


Я бы тоже USB-хост делать не стала бы, не важно на чем sm.gif.

Скажите, а как все-таки делают хосты на 3-вольтовых контроллерах? Ведь вроде бы по стандарту положено, чтобы USB был 5-ти вольтовым. Где он возьмет 5 вольт для Ubus, чтобы кормить девайсов? Да и у большинства современных контроллеров даже толерантности к 5-ти вольтам нет. У AT90 таких проблем нет, поскольку они сами пятивольтовые, а как решается вопрос совместимости 3-вольтового хоста и 5-вольтовых девайсов?
Go to the top of the page
 
+Quote Post
Копейкин
сообщение Jul 10 2014, 07:32
Сообщение #70


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Цитата(Xenia)
Скажите, а как все-таки делают хосты на 3-вольтовых контроллерах? Ведь вроде бы по стандарту положено, чтобы USB был 5-ти вольтовым. Где он возьмет 5 вольт для Ubas, чтобы кормить девайсов? Да и у большинства современных контроллеров даже толерантности к 5-ти вольтам нет. У AT90 таких проблем нет, поскольку они сами пятивольтовые, а как решается вопрос совместимости 3-вольтового хоста и 5-вольтовых девайсов?

1) Линии D+ и D- не 5-вольтовые, а существенно меньше, и могут принимать несколько значений.
Поэтому 3,3 или 5 вольт питание - неважно.
2) Для USB3 есть спец. микросхемы физического уровня ULPI<-> USB
3) Хост должен обладать собственным мощным 5-вольтовым источником - никуда не деться...
Это питание, через ключи с токовой защитой, а в последнее время, часто просто через термопредохранители (самовосстанавливающиеся) подаётся на питание - линию VBUS.

Для USB3 можно посмотреть ISP1705AET
Цитата
The ISP1705 can transmit and receive USB data at high speed (480 Mbit/s), full speed
(12 Mbit/s) and low speed (1.5 Mbit/s), and provides a pin-optimized, physical layer
front-end attachment to the USB host, peripheral or OTG controller with Single Data Rate
(SDR) or Dual Data Rate (DDR) ULPI link
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Jul 10 2014, 08:01
Сообщение #71


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(Копейкин @ Jul 10 2014, 10:32) *
1) Линии D+ и D- не 5-вольтовые, а существенно меньше, и могут принимать несколько значений.

Мало того, при подаче уровня выше +3,3В на эти линии - устройство может не определяться в системе. Ведь Low, Full, High определяются подтягивающими резисторами к +3,3В и защитные элементы тоже.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jul 10 2014, 09:37
Сообщение #72


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(DmitryM @ Jul 10 2014, 12:01) *
Мало того, при подаче уровня выше +3,3В на эти линии - устройство может не определяться в системе. Ведь Low, Full, High определяются подтягивающими резисторами к +3,3В и защитные элементы тоже.


Не определяться - ладно. Но не погорит ли 3-вольтовый МК, если ему подадут 5-вольт на линии D+ и D-? Ведь указание об отсутствии толерантности к 5-ти вольтам не оговаривает исключений для линий D+ и D-.
Go to the top of the page
 
+Quote Post
Копейкин
сообщение Jul 10 2014, 13:31
Сообщение #73


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Цитата(Xenia)
Но не погорит ли 3-вольтовый МК, если ему подадут 5-вольт на линии D+ и D-?

Максимальное напряжение на выводах D+ и D- м.б. 3,6 вольта, при штатном использовании.
Большее напряжение можно только принудительно подать, в обход USB.
Тем не менее, защита от статики обычно имеет верхнюю опору VBUS,
так что при кратковременной подаче +5 вольт сгореть не должны.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jul 10 2014, 15:55
Сообщение #74


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Копейкин @ Jul 10 2014, 17:31) *
Максимальное напряжение на выводах D+ и D- м.б. 3,6 вольта, при штатном использовании.
Большее напряжение можно только принудительно подать, в обход USB.


Кажется, я поняла причину своих опасений. Это я по аналогии с Xmega, где линии D- и D+ являются альтернативными функциями порта D (буква D там и там - просто случайность), подумала, что и у AT90 это так. Ведь ничто не мешает контроллеру использовать порт по прямому назначению. Вот и испугалась, что AT90 тоже может выставить на этом порту высокий уровень, чем и повредить присоединенным к его линиям USB другим устройствам, толерантности к 5-вольтам не имеющим.

Полезла в даташиты и обнаружила, что у AT90 линии D- и D+ не являются портами. Т.е. подать на них 5 вольт, в результате програмистской ошибки, на них невозможно. Правда у AT90USB82/162 эти линии совмещены с линиями I2C (SDA и SCL), но это не страшно, т.к. там "открытый коллектор".
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 11:31
Рейтинг@Mail.ru


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