|
|
  |
Как отличить USB подключение к БП от компа |
|
|
|
Jun 29 2014, 13:32
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 31-07-06
Из: Мытищи
Пользователь №: 19 220

|
Коллеги!
Есть такая задача: Нужно заряжать аккум (Li) разными токами в зависимости от того куда подключено устройство: к блоку питания (1А) или к USB порту компа (0.5А) Проц (STM32F205) может переключать лимиты токов заряда, но вот проблема: как распознать куда подключено устройство? На ум приходит только попытка коннекта с компом по USB и в случае неудачи считать что мы подключены к БП. Но на сколько это надежно? Ведь многие компы держат +5В на USB и в выключенном состоянии. Или может в БП используются какие то подтяжки сигнальных линий? Вообще мой смартфончик LG L3 II как то распознает подключение к разным БП и компу: иногда пишет "Зарядка", а иногда "Медленная зарядка". Как он их распознает? Вообще это все затевается что бы не просадить большим током USB порт компа. Или они сейчас этого уже не боятся и сами ограничивают ток? Помнится старые компы при перегрузке по току USB порта иногда даже отрубались.
|
|
|
|
|
Jun 29 2014, 14:06
|
Группа: Новичок
Сообщений: 8
Регистрация: 26-01-10
Пользователь №: 55 085

|
Android смарты, в основном, определяют по замкнутым сигнальным линиям в мощном заряднике, соответственно в компе они не замкнуты.
|
|
|
|
|
Jun 30 2014, 07:04
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(uzig @ Jun 29 2014, 16:32)  как распознать куда подключено устройство? Элементарно. В заряднике должен быть МК, хоть AVR, прошитый проектом Игоря Чешко (слегка модифицированным, конечно же). Хост проводит энумерацию зарядника и назначает ему конфигурацию. БП не делает ни того, ни другого. Итак, вставляем зарядник в источник эл. энергии. Энумерация началась, прошла и конфигурация назначена ? Тогда мы включены в хост и можем потреблять заявленный в дескрипторе конфигурации ток. Энумерация началась, прошла, но конфигурация назначена ? Тогда мы включены в хост, но больше 100 мА потреблять не имеем права. Энумерация не началась ? Тогда мы включены в БП. Еще вариант - хост подтягивает линии данных резисторами по 15 КОм к "земле". Тогда последний пункт можно усовершенствовать: Энумерация не началась ? Тогда мы включены в БП. Или хост ведет себя неадекватно. В последнем случае ищем резисторы на линия данных. Их нет ? Ну, тогда это и в самом деле БП. Они есть ? Тогда мы включены в хост, но больше 100 мА, опять же, потреблять не можем ...
|
|
|
|
|
Jun 30 2014, 13:57
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 31-07-06
Из: Мытищи
Пользователь №: 19 220

|
Цитата(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)  Элементарно... Спасибо за подробное описание! Но вот вопрос с выключенным компом остается открытым. Про подтяжки внутри БП см. выше, никаких стандартов. Типа "Используйте сертифицированное ЗУ идущее в комплекте с устройством". А там каждый на свой лад лепит подтяжки на сигнальных линиях.
|
|
|
|
|
Jun 30 2014, 14:06
|

Знающий
   
Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467

|
Цитата(uzig @ Jun 30 2014, 09:57)  Да программно можно, но сейчас многие компы (и ноуты наверное) оставляют питание на USB шине когда они выключены или спят. Про "можно" - это теория или практика? Посоветуйте как можно хотя бы когда они не спят..
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
Jun 30 2014, 16:45
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 31-07-06
Из: Мытищи
Пользователь №: 19 220

|
Цитата(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 и нехитрыми способами ищутся КЗ между линиями и внешние пулдаун.
|
|
|
|
|
Jun 30 2014, 19:37
|

Знающий
   
Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467

|
Цитата(uzig @ Jun 30 2014, 12:45)  Теория. Вот ув. kovigor описал рецепт, например. Теоретически проблем не видно. А че делать на suspend? 2. Конфигурация без драйвера устройства будет назначена?
Сообщение отредактировал A. Fig Lee - Jun 30 2014, 19:38
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|