Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как отличить USB подключение к БП от компа
Форум разработчиков электроники ELECTRONIX.ru > Силовая Электроника - Power Electronics > Силовая Преобразовательная Техника
uzig
Коллеги!

Есть такая задача:
Нужно заряжать аккум (Li) разными токами в зависимости от того куда подключено устройство: к блоку питания (1А) или к USB порту компа (0.5А)
Проц (STM32F205) может переключать лимиты токов заряда, но вот проблема: как распознать куда подключено устройство?
На ум приходит только попытка коннекта с компом по USB и в случае неудачи считать что мы подключены к БП. Но на сколько это надежно? Ведь многие компы держат +5В на USB и в выключенном состоянии.
Или может в БП используются какие то подтяжки сигнальных линий?
Вообще мой смартфончик LG L3 II как то распознает подключение к разным БП и компу: иногда пишет "Зарядка", а иногда "Медленная зарядка". Как он их распознает?
Вообще это все затевается что бы не просадить большим током USB порт компа. Или они сейчас этого уже не боятся и сами ограничивают ток?
Помнится старые компы при перегрузке по току USB порта иногда даже отрубались.
bloodden2005
Android смарты, в основном, определяют по замкнутым сигнальным линиям в мощном заряднике, соответственно в компе они не замкнуты.
uzig
Нда, кажись каких либо общепринятых стандартов тут нет.
http://www.maximintegrated.com/en/app-note...x.mvp/id/4803#3
http://electronics.stackexchange.com/quest...out-enumeration
Plain
Брать по-максимуму, USB неизлечимо кривой в этом плане стандарт, 20 лет потерь уймы денег и возможностей.
A. Fig Lee
По идее USB соединение можно обнаружить программно по наличию прерываний.
Но тоже грабли.
x893
а разве нельзя включить режим input pullup на ногах PA11/PA12 и если там 0 - то подключен компютер, а если 1 - то блок питания (D+, D- в воздухе) ?
kovigor
Цитата(uzig @ Jun 29 2014, 16:32) *
как распознать куда подключено устройство?

Элементарно. В заряднике должен быть МК, хоть AVR, прошитый проектом Игоря Чешко (слегка модифицированным, конечно же). Хост проводит энумерацию зарядника и назначает ему конфигурацию. БП не делает ни того, ни другого. Итак, вставляем зарядник в источник эл. энергии.

Энумерация началась, прошла и конфигурация назначена ? Тогда мы включены в хост и можем потреблять заявленный в дескрипторе конфигурации ток.
Энумерация началась, прошла, но конфигурация назначена ? Тогда мы включены в хост, но больше 100 мА потреблять не имеем права.
Энумерация не началась ? Тогда мы включены в БП.

Еще вариант - хост подтягивает линии данных резисторами по 15 КОм к "земле". Тогда последний пункт можно усовершенствовать:
Энумерация не началась ? Тогда мы включены в БП. Или хост ведет себя неадекватно. В последнем случае ищем резисторы на линия данных. Их нет ? Ну, тогда это и в самом деле БП. Они есть ? Тогда мы включены в хост, но больше 100 мА, опять же, потреблять не можем ...
uzig
Цитата(A. Fig Lee @ Jun 30 2014, 02:55) *
По идее USB соединение можно обнаружить программно по наличию прерываний.
Но тоже грабли.

Да программно можно, но сейчас многие компы (и ноуты наверное) оставляют питание на USB шине когда они выключены или спят.

Цитата(x893 @ Jun 30 2014, 04:00) *
а разве нельзя включить режим input pullup на ногах PA11/PA12 и если там 0 - то подключен компютер, а если 1 - то блок питания (D+, D- в воздухе) ?

Да вот в воздухе ли:


Померял китайский бп gembird (5V/1A) - там около 1.5k на каждой линии относительно земли и питания. И между собой около 3k.



Цитата(kovigor @ Jun 30 2014, 11:04) *
Элементарно...

Спасибо за подробное описание!
Но вот вопрос с выключенным компом остается открытым. Про подтяжки внутри БП см. выше, никаких стандартов. Типа "Используйте сертифицированное ЗУ идущее в комплекте с устройством". А там каждый на свой лад лепит подтяжки на сигнальных линиях.
A. Fig Lee
Цитата(uzig @ Jun 30 2014, 09:57) *
Да программно можно, но сейчас многие компы (и ноуты наверное) оставляют питание на USB шине когда они выключены или спят.


Про "можно" - это теория или практика?
Посоветуйте как можно хотя бы когда они не спят..
SM
Вообще, по этой части целая спецификация есть. http://www.usb.org/developers/devclass_doc...v1.2_070312.zip
И трансиверы, в которых все это внутри есть... Например TUSB1211. И микросхемы отдельные есть тоже.
uzig
Цитата(A. Fig Lee @ Jun 30 2014, 18:06) *
Про "можно" - это теория или практика?
Посоветуйте как можно хотя бы когда они не спят..

Теория. Вот ув. kovigor описал рецепт, например. Теоретически проблем не видно.

Да, порылся в каталогах. Есть например полудолларовая микросхема BQ2405x с детекцией источника заряда: адаптер или USB порт.
Там процесс детекции описан так:
The detection method monitors the D+, D– communication lines looking for a short between the lines (Adaptor source connected) or pull down resistors on D+, D– (USB source connected) to determine what source is connected (no USB communication takes place).
То есть как и написал bloodden2005 он ищет КЗ между сигнальными линиями у адаптера и пулдаун резисторы и хоста.
Если считать это стандартом то после обнаружения внешнего питания можно сделать так:
1. Сначала проц пытается установить связь с хостом по алгоритму описанного kovigor.
2. Если не удалось то сигнальные линии на проце переводятся в режим GPIO и нехитрыми способами ищутся КЗ между линиями и внешние пулдаун.
kovigor
Цитата(uzig @ Jun 30 2014, 19:45) *
1. Сначала проц пытается установить связь с хостом по алгоритму описанного kovigor.

Наоборот, это хост, если он есть и исправен (не спит) после вашего подключения будет пытаться установить связь с вашим МК. Хотя, по совести говоря, я еще не разу не видел хоста, который не проснулся бы в ответ на втыкание в него USB - разъема внешнего устройства ...
A. Fig Lee
Цитата(uzig @ Jun 30 2014, 12:45) *
Теория. Вот ув. kovigor описал рецепт, например. Теоретически проблем не видно.

А че делать на suspend?

2. Конфигурация без драйвера устройства будет назначена?
kovigor
Цитата(A. Fig Lee @ Jun 30 2014, 22:37) *
А че делать на suspend?

2. Конфигурация без драйвера устройства будет назначена?

1. Спать и не потреблять ток, если хост усыпит (т.е., перестанет транслировать в устройство SOF'ы).
2. Да, по идее. Но вообще, никто не мешает прикинуться обычным HID - устройством (например), для которого драйвер уже встроен в ОС ...
A. Fig Lee
Цитата(kovigor @ Jun 30 2014, 17:36) *
1. Спать и не потреблять ток, если хост усыпит (т.е., перестанет транслировать в устройство SOF'ы).
2. Да, по идее. Но вообще, никто не мешает прикинуться обычным HID - устройством (например), для которого драйвер уже встроен в ОС ...

Интересно, спасибо. Надо будет попробоватъ
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.