Перейти к содержанию
    

Делаем AVR USB (software) правильно

При реализации софтварного USB на AVR возникают вопросы. Как сделать правильно?

 

Видел варианты:

 

1. МК питается 5В от шины. D+ и D- напрямую к МК через резисторы ~ 200 Ом. D- подтянута на +5В через резистор ~10кОм.

Проблемы: по спецификации USB макс. допустимый уровень сигнала относительно земли 4.6В (или даже меньше) Смотрим USB2.0 Spec. Figure 7-2. Maximum Input Waveforms for USB Signaling

Можно спалить порт.

 

2. То же что и 1. , но дополнительно на D+ и D- поставлены стабилитроны на 3.6В (на землю), а вместо резисторов на 200 Ом стоят по 68 Ом.

Проблема: емкость стабилитронов - искажение формы сигнала. И всеравно будут выбросы.

 

3. МК питается от 3.3-3.6В от шины через стабилизатор или 2 диода. Подтяжка D- 1.5 кОм. На D+ и D- стоят резисторы по 68 Ом или вообще без резисторов.

Проблема: Минимальная необходимая частота 12 Мгц, а при использовании внутреннего генератора 16.5 Мгц. Насколько корректно гонять МК на такихз частотах при таком питании? В даташите как-то туманно про это написано: на титульной странице одно, на графиках другое, и ничего конкретного я так и не нашел.

 

 

Лично я использовал вариант 3. МК ATmega8 при кварце 12МГц. Работает.

Интересует заведется ли Tiny25 на 16.5 Мгц при питании 3.5-3.6В ?

 

Еще: атмел советует не гонять встроенный ацп быстрее 1 МГц (тактирование)

Я запустил при 3х Мгц. Работает. Насколько это корректно? (Полученная точность устраивает)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Имхо самое правильное, это использовать то, что специально предназначено для интерфейса USB. Всё остальное уже в той или иной степени "неправильно" априори.

То же самое я бы сказал и про работу в нерекомендуемых режимах.

Лучше сразу взять то, что сможет штатно обеспечить ваши требования. Неужели вам не хватает из чего выбрать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Минимальная необходимая частота 12 Мгц, а при использовании внутреннего генератора 16.5 Мгц.

8 МГц гарантируеся при 2.7В. 3.6 выше на 1 вольт, так что 12 МГц должно работать без проблем. 16 МГц - сомневаюсь (разве что кристаллы произведенные по новой технологии).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Имхо самое правильное, это использовать то, что специально предназначено для интерфейса USB. Всё остальное уже в той или иной степени "неправильно" априори.

То же самое я бы сказал и про работу в нерекомендуемых режимах.

Лучше сразу взять то, что сможет штатно обеспечить ваши требования. Неужели вам не хватает из чего выбрать?

 

Это понятно. Но это излишества для данного случая. Но ведь делают ТАК, и работает. Вопрос в том что менее неправильно =)

 

Вариант 3 например вообще ничем не плох для USB ИМХО.

 

Кто уточнит, какой вольтаж жрет USB?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто уточнит, какой вольтаж жрет USB?

имхо лучше не превышать 3.6В, т.е. с двумя диодами - самая правильная схема. Ограничивать уровень стабилитронами - жестоко по отношению к ногам контроллера. Питать от 5В без ограничителей - поделка на соплях для конкретного компьютера, на другом с высокой вероятностью не заработает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

имхо лучше не превышать 3.6В, т.е. с двумя диодами - самая правильная схема.

 

Ограничивать уровень стабилитронами - жестоко по отношению к ногам контроллера.

 

Я согласен! Но, как я уже говорил, возникает проблема работы МК на высоких частотах при таком питании, а это необходимо!

 

Это почему? По отношению к МК стабилитроны ставят ПОСЛЕ резисторов, а ЮСБ пофиг, оно всеравно не должно выдавать больше 3.6 В.

 

-------------------------

 

Если верить графикам в ДШ на тини х5, при 3.3В гарантируют работу до 13МГц, а при 4В до 17МГц.

Так что шанс что работать будет на 16.5МГц от 3.6В есть, но с некоторой натяжкой...

Только вот где взять эти 3.6В? Диоды низя, т.к. если с юсб придет чуть меньше 5В, то питание МК упадет, а оно и так на пределе...

 

Все же, чем плох вариант со стабилитронами??? (Если искажение формы не критично)

 

Кстати, что-то я раньше не обращал внимания, но тут

http://www.cesko.host.sk/IgorPlugUSB/IgorP...20(AVR)_eng.htm

тоже разновидность варианта 1. Но резисторы по 68Ом, да еще и подтяжка 1.5кОм от 5В

Удивительно, как это работает =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все же, чем плох вариант со стабилитронами??? (Если искажение формы не критично)

 

Стабилитрон не надежный, у него разброс будет напряжения стабилизации, и в серийном производстве не годится. :) + потребление большое.

 

 

Кто уточнит, какой вольтаж жрет USB?

 

ой, не помню, 0.2 А точно выдержит, максимум вроде 0.5 А что-то так, а точнее читай: " Павел Агуров - Интерфейс USB.djvu " там все есть :)

Изменено пользователем Jhohn

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При реализации софтварного USB на AVR возникают вопросы. Как сделать правильно?

 

Делаем AVR USB (softvare) правильно

для начала надо выбрать:

1) профессиональное решение

2) любительское решение

если (1), то проще и дешевле использовать МК к USB на борту. Или внешнюю микросхему с USB.

если (2), то правильно так, как работает "на коленке".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

для начала надо выбрать:

1) профессиональное решение

если (1), то проще и дешевле использовать МК к USB на борту. Или внешнюю микросхему с USB.

 

+ надежность :smile3046:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто уточнит, какой вольтаж жрет USB?

Ты про ток? Вольтаж-то оно не жрет, а дает по питанию 5В, сигналы - 3х вольтовые. Брать по питанию можно до 500мА, но об этом нужно попросить хост. Чтобы попросить, нужно пройти enumeration потребляя при этом не более 20мА. По умолчанию 100мА дадут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

для начала надо выбрать:

1) профессиональное решение

2) любительское решение

если (1), то проще и дешевле использовать МК к USB на борту. Или внешнюю микросхему с USB.

если (2), то правильно так, как работает "на коленке".

 

Я уже ответил на подобное предложение выше. Не надо читать морали, я попросил ответ на поставленный вопрос. Вы вообще в жизни все делаете ПРАВИЛЬНО? Может у вас была лицинзионная винда лет 10 назад? (не корпоративная) :biggrin:

 

Мне надо сделать 2 устройства, но это не значит что абы-как.

 

Ставить ФТДИ просто смешно для данного проекта и не оправданно.

 

Конечно для серьезного проекта я поставлю сайпрес и не буду е. мозг, но повторю, это излишества.

 

Между прочим, скажите, чем вариант 3 при правильной реализации хуже хардварного ЮСБ? Только не надо махать руками и говорить что это любительское решение. Мне пожалуйста факты изложите.

 

Стабилитрон не надежный, у него разброс будет напряжения стабилизации, и в серийном производстве не годится. :) + потребление большое.

ой, не помню, 0.2 А точно выдержит, максимум вроде 0.5 А что-то так, а точнее читай: " Павел Агуров - Интерфейс USB.djvu " там все есть :)

 

А кому какое дело до этого разброса? По спецификации напряжение должно быть больше 2.8В и меньше 3.6В. Если ваши стабилитроны в это требование не укладываются, то думаю есть смысл сменить поставщика =)))

 

Почему потребление больше? ток ограничивают резисторами, ну да, немного больше, но опять-таки кому до этого дело (10мА больше или меньше?)

 

А про ток разговора не было... Именно, 500мА макс.

 

Ты про ток? Вольтаж-то оно не жрет, а дает по питанию 5В, сигналы - 3х вольтовые. Брать по питанию можно до 500мА, но об этом нужно попросить хост. Чтобы попросить, нужно пройти enumeration потребляя при этом не более 20мА. По умолчанию 100мА дадут.

 

Нет, я про допустимый уровень на линиях данных на входе хоста. Просто тут все говорят про 3.6В , а я в спецификации видел циыру 4.6В

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это почему? По отношению к МК стабилитроны ставят ПОСЛЕ резисторов, а ЮСБ пофиг, оно всеравно не должно выдавать больше 3.6 В.
емкость низковольтных стабилитронов достигает 500 пФ, для LS может сойдет, но все равно многовато.

 

Между прочим, скажите, чем вариант 3 при правильной реализации хуже хардварного ЮСБ?

не полностью реализован контроль ошибок и некоторые другие фишки

Изменено пользователем ukpyr

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не полностью реализован контроль ошибок и некоторые другие фишки

Выходные данные контролируются полностью хостом.

 

Входне не полностью? А откуда такая информация?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вроде АВР выдает АСК независимо от правильности полученных данных (на проверку нет времени)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вроде АВР выдает АСК независимо от правильности полученных данных (на проверку нет времени)

 

Именно так. Я дорабатывал драйвер от ObjDev и выкладывал его тут на форуме. При кварце 20МГц выполняется подсчет CRC на лету, так что неправильные пакеты NAK'аются. В железе я его, правда, не проверял, так что надо доводить до ума. Если интересно - поищите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...