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

 
 
 
Reply to this topicStart new topic
> Как отличить USB подключение к БП от компа
uzig
сообщение Jun 29 2014, 13:32
Сообщение #1


Участник
*

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



Коллеги!

Есть такая задача:
Нужно заряжать аккум (Li) разными токами в зависимости от того куда подключено устройство: к блоку питания (1А) или к USB порту компа (0.5А)
Проц (STM32F205) может переключать лимиты токов заряда, но вот проблема: как распознать куда подключено устройство?
На ум приходит только попытка коннекта с компом по USB и в случае неудачи считать что мы подключены к БП. Но на сколько это надежно? Ведь многие компы держат +5В на USB и в выключенном состоянии.
Или может в БП используются какие то подтяжки сигнальных линий?
Вообще мой смартфончик LG L3 II как то распознает подключение к разным БП и компу: иногда пишет "Зарядка", а иногда "Медленная зарядка". Как он их распознает?
Вообще это все затевается что бы не просадить большим током USB порт компа. Или они сейчас этого уже не боятся и сами ограничивают ток?
Помнится старые компы при перегрузке по току USB порта иногда даже отрубались.
Go to the top of the page
 
+Quote Post
bloodden2005
сообщение Jun 29 2014, 14:06
Сообщение #2





Группа: Новичок
Сообщений: 8
Регистрация: 26-01-10
Пользователь №: 55 085



Android смарты, в основном, определяют по замкнутым сигнальным линиям в мощном заряднике, соответственно в компе они не замкнуты.
Go to the top of the page
 
+Quote Post
uzig
сообщение Jun 29 2014, 17:51
Сообщение #3


Участник
*

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



Нда, кажись каких либо общепринятых стандартов тут нет.
http://www.maximintegrated.com/en/app-note...x.mvp/id/4803#3
http://electronics.stackexchange.com/quest...out-enumeration
Go to the top of the page
 
+Quote Post
Plain
сообщение Jun 29 2014, 18:13
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 6 776
Регистрация: 5-03-09
Из: Москва
Пользователь №: 45 710



Брать по-максимуму, USB неизлечимо кривой в этом плане стандарт, 20 лет потерь уймы денег и возможностей.
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Jun 29 2014, 22:55
Сообщение #5


Знающий
****

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



По идее USB соединение можно обнаружить программно по наличию прерываний.
Но тоже грабли.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
x893
сообщение Jun 30 2014, 00:00
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



а разве нельзя включить режим input pullup на ногах PA11/PA12 и если там 0 - то подключен компютер, а если 1 - то блок питания (D+, D- в воздухе) ?
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jun 30 2014, 07:04
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(uzig @ Jun 29 2014, 16:32) *
как распознать куда подключено устройство?

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

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

Еще вариант - хост подтягивает линии данных резисторами по 15 КОм к "земле". Тогда последний пункт можно усовершенствовать:
Энумерация не началась ? Тогда мы включены в БП. Или хост ведет себя неадекватно. В последнем случае ищем резисторы на линия данных. Их нет ? Ну, тогда это и в самом деле БП. Они есть ? Тогда мы включены в хост, но больше 100 мА, опять же, потреблять не можем ...
Go to the top of the page
 
+Quote Post
uzig
сообщение Jun 30 2014, 13:57
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 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) *
Элементарно...

Спасибо за подробное описание!
Но вот вопрос с выключенным компом остается открытым. Про подтяжки внутри БП см. выше, никаких стандартов. Типа "Используйте сертифицированное ЗУ идущее в комплекте с устройством". А там каждый на свой лад лепит подтяжки на сигнальных линиях.
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Jun 30 2014, 14:06
Сообщение #9


Знающий
****

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



Цитата(uzig @ Jun 30 2014, 09:57) *
Да программно можно, но сейчас многие компы (и ноуты наверное) оставляют питание на USB шине когда они выключены или спят.


Про "можно" - это теория или практика?
Посоветуйте как можно хотя бы когда они не спят..


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
SM
сообщение Jun 30 2014, 15:49
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Вообще, по этой части целая спецификация есть. http://www.usb.org/developers/devclass_doc...v1.2_070312.zip
И трансиверы, в которых все это внутри есть... Например TUSB1211. И микросхемы отдельные есть тоже.
Go to the top of the page
 
+Quote Post
uzig
сообщение Jun 30 2014, 16:45
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 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 и нехитрыми способами ищутся КЗ между линиями и внешние пулдаун.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jun 30 2014, 19:17
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(uzig @ Jun 30 2014, 19:45) *
1. Сначала проц пытается установить связь с хостом по алгоритму описанного kovigor.

Наоборот, это хост, если он есть и исправен (не спит) после вашего подключения будет пытаться установить связь с вашим МК. Хотя, по совести говоря, я еще не разу не видел хоста, который не проснулся бы в ответ на втыкание в него USB - разъема внешнего устройства ...
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Jun 30 2014, 19:37
Сообщение #13


Знающий
****

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



Цитата(uzig @ Jun 30 2014, 12:45) *
Теория. Вот ув. kovigor описал рецепт, например. Теоретически проблем не видно.

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

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

Сообщение отредактировал A. Fig Lee - Jun 30 2014, 19:38


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jun 30 2014, 21:36
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(A. Fig Lee @ Jun 30 2014, 22:37) *
А че делать на suspend?

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

1. Спать и не потреблять ток, если хост усыпит (т.е., перестанет транслировать в устройство SOF'ы).
2. Да, по идее. Но вообще, никто не мешает прикинуться обычным HID - устройством (например), для которого драйвер уже встроен в ОС ...
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Jul 1 2014, 01:56
Сообщение #15


Знающий
****

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



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

Интересно, спасибо. Надо будет попробоватъ


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 20:07
Рейтинг@Mail.ru


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