Easyelectronics.ru

Электроника для всех
Текущее время: 21 июл 2018, 05:02

Часовой пояс: UTC + 5 часов



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: stm32f407 аппаратное определение наличия USB
СообщениеДобавлено: 13 янв 2018, 21:14 
Только пришел

Зарегистрирован: 09 апр 2013, 22:38
Сообщения: 8
Добрый день! Есть ли возможность определить аппаратно наличие или отсувствие USB устройства(в моем случае обычной флешки) в разъеме. Может есть какие нибудь флаги в регистрах или прерывания, т.е. не функцией типа "if(UB_USB_MSC_HOST_Do()==USB_MSC_DEV_CONNECTED)"? Контроллер stm32f407, USB используется как USB Host?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f407 аппаратное определение наличия USB
СообщениеДобавлено: 13 янв 2018, 23:23 
Старожил
Аватара пользователя

Зарегистрирован: 27 мар 2015, 04:10
Сообщения: 1610
Откуда: Харьков
Ну а поискать в RM "флаги в регистрах или прерывания" что не позволяет?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f407 аппаратное определение наличия USB
СообщениеДобавлено: 14 янв 2018, 00:55 
Только пришел

Зарегистрирован: 09 апр 2013, 22:38
Сообщения: 8
Не поверите, уже искал и даже пробовал кое какие флаги использовать, естественно ничего не получилось. А не позволяет наличие свободного времени для тестирования и изучения работы USB, т.к. основная работа никак не связана с электроникой(это хобби), поэтому и спросил подсказку здесь. Во всех примерах все используют программную проверку в цикле, мне нужно определить хотя бы извлечение флешки аппаратно. Буду рад хоть информации о наличие таких флагов в регистрах stm(есть или нет), а дальше уже сам бы разобрался.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f407 аппаратное определение наличия USB
СообщениеДобавлено: 14 янв 2018, 04:10 
Старожил
Аватара пользователя

Зарегистрирован: 30 мар 2015, 23:56
Сообщения: 455
Определяется по потребляемому току. Например используя копеечную MIC2025.

_________________
Потоковая OS


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f407 аппаратное определение наличия USB
СообщениеДобавлено: 14 янв 2018, 11:23 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2013, 12:33
Сообщения: 1702
Откуда: Донецк, ДНР
В некубовых USB либах хоста есть функция

Код:
/**
  * @brief  HCD_IsDeviceConnected
  *         Check if the device is connected.
  * @param  pdev : Selected device
  * @retval Device connection status. 1 -> connected and 0 -> disconnected
  *
  */
uint32_t HCD_IsDeviceConnected(USB_OTG_CORE_HANDLE *pdev)
{
  return (pdev->host.ConnSts);
}


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f407 аппаратное определение наличия USB
СообщениеДобавлено: 14 янв 2018, 15:55 
Только пришел

Зарегистрирован: 09 апр 2013, 22:38
Сообщения: 8
AVI-crak писал(а):
Определяется по потребляемому току. Например используя копеечную MIC2025.

Дело в том, что плата уже давно запаяна и работает, поэтому такой вариант не подходит


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f407 аппаратное определение наличия USB
СообщениеДобавлено: 15 янв 2018, 11:48 
Только пришел

Зарегистрирован: 09 апр 2013, 22:38
Сообщения: 8
hd44780 писал(а):
В некубовых USB либах хоста есть функция

Код:
/**
  * @brief  HCD_IsDeviceConnected
  *         Check if the device is connected.
  * @param  pdev : Selected device
  * @retval Device connection status. 1 -> connected and 0 -> disconnected
  *
  */
uint32_t HCD_IsDeviceConnected(USB_OTG_CORE_HANDLE *pdev)
{
  return (pdev->host.ConnSts);
}


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


Хост инициализируется в начале работы программы и первое определение флешки проходит как обычно(программными функциями), затем в процессе работы состояние подключения не проверяется (идет постоянное чтение файлов с флешки) а отключение флешки проверяется косвенно (по ошибке чтения и количеству считанных байт, вроде работает нормально), но есть моменты, когда чтение приостанавливается и таким способом уже не определишь, достали флешку в это время или нет. Поэтому и хотелось бы знать возможность быстрой проверки через флаги в регистрах(просмотрел еще раз RM от STM, но ничего подходящего не нашел). Флаг физического присутствия usb устройства конечно бы не помешал, вне зависимости от того, инициализировано оно или нет.
Использую некубовые старые либы, эту функцию уже видел, это насколько я понимаю часть программного метода определения, в любом случае спасибо за попытку помочь, оставлю как есть или придумаю в дальнейшем что-нибудь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: stm32f407 аппаратное определение наличия USB
СообщениеДобавлено: 15 янв 2018, 12:48 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2013, 12:33
Сообщения: 1702
Откуда: Донецк, ДНР
Узнать выдернули ли USB девайс (любой), можно по хуку USBH_USR_DeviceDisconnected (файл usbh_usr.c). Он всегда вызывается при отключении девайса. По умолчанию он там совершенно пустой.
Но чтобы это работало Вы должны периодически вызывать (хотя бы раз в секунду в таймере каком-то) этот UB_USB_MSC_HOST_Do (оригинальная ST-шная функция USBH_Process), т.к. все эти хуки вызываются исключительно из неё. Таймер лично мне не очень нравится (не могу внятно обосновать), хотя работает оно вполне себе нормально (проверял лично). Второй способ - городить RTOS и вызывать USBH_Process из некоего фонового таска. Тоже работает (проверял).
Если USBH_Process не вызывается, то волшебства не случится :). Для простой работы флэшки вызывать её не нужно, а вот для мышей/клавиатур - строго обязательно, они вообще не работают без постоянных дёрганий USBH_Process (ну это здесь оффтоп :) ).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB