Easyelectronics.ru

Электроника для всех
Текущее время: 20 июл 2018, 04:22

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



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

Начать новую тему Ответить на тему  [ Сообщений: 57 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 05 июн 2018, 19:06 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 65
Добрый день! Хотелось бы спросить, как подключить USB-флешку к хосту на МК серии STM32F0xx и научиться создавать на ней текстовые файлы(txt). Есть ли стартовые проекты на библиотеке SPL, близкие к этой задаче? В сети встречается много проектов, где в роли хоста выступает ПК, а МК используется как Mass Storage. Но я так понимаю это несколько иная задача. Вот здесь нашел примеры использования, но, видимо, в роли Mass Storage здесь выступает сам МК.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 05 июн 2018, 19:56 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 1951
Фигасе вопросец. Объяснение займет страниц пять текста. Но, пожалуй, начнем с того, что в серии F0 USB не может быть хостом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 05 июн 2018, 19:58 
Старожил

Зарегистрирован: 19 апр 2016, 11:59
Сообщения: 296
Kvanto писал(а):
подключить USB-флешку к хосту на МК серии STM32F0xx
Какой МК из серии STM32F0xx поддерживает режим хоста?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 05 июн 2018, 20:10 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 02 июн 2015, 23:00
Сообщения: 122
Откуда: Харьков
Maik писал(а):
Какой МК из серии STM32F0xx поддерживает режим хоста?

Если Вы сами не можете изучить этот вопрос, то очень сомневаюсь что справитесь с otg usb

_________________
saw_tooth


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 05 июн 2018, 20:36 
Старожил

Зарегистрирован: 19 апр 2016, 11:59
Сообщения: 296
Saw_Tooth, я у ТС спрашивал, а не интересовался какой МК из STM32F0xx может быть хостом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 05 июн 2018, 22:29 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 65
Maik писал(а):
Kvanto писал(а):
подключить USB-флешку к хосту на МК серии STM32F0xx
Какой МК из серии STM32F0xx поддерживает режим хоста?

Получается для этой серии эта задача не реализуема?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июн 2018, 00:28 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 1951
Получается. Графа USB Type: Device http://www.st.com/content/st_com/en/pro ... tId=SS1574

Нужен МК с USB OTG.
• STM32F105/107 http://www.st.com/en/microcontrollers/s ... tId=SS1031
• STM32F205/215, • STM32F207/217 http://www.st.com/content/st_com/en/pro ... tId=SS1575
• STM32F4хх http://www.st.com/content/st_com/en/pro ... tId=SS1577


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июн 2018, 02:21 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 3426
Откуда: Кемеровская область, Киселевск
Вложение:
Screenshot_4.jpg
Screenshot_4.jpg [ 235.81 Кб | Просмотров: 1367 ]

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июн 2018, 11:22 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 65
Получается альтернативным вариантом чтения информации с МК STM32F0xx останется случай, если на стороне флешки будет МК с режимом USB OTG и он сам сможет прочитать данные. А STM32F0xx будет работать как Mass Storage.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июн 2018, 11:55 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 1951
И снова нет. У многих МК только один физический порт USB и "промежуточным передатчиком" они работать не могут. Изобретать какой-то дикий звездолет нет смысла. Надо просто взять хотябы F105 с OTG и не париться. Ну а если вы не знаете, куда прилепить этот ваш F0, то сделайте на нем часы с будильником и термометром.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 06 июн 2018, 16:04 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 65
Если выбрать F105, то с какого проекта лучше начать реализацию? Можно ли в данном проекте произвести переход с F4xx на F105?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 27 июн 2018, 19:12 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 65
Добрый день! Пробую запускать данный проект. Использую три сигнала USB_OTG_DM, USB_OTG_DP, USB_VBUS_Enable для режима USB_OTG_FS Host only. Сейчас остановился на том, что в основном цикле происходит проверка условия UB_USB_MSC_HOST_Do()==USB_MSC_DEV_CONNECTED. Но пока что условие не выполняется. Прошелся по шагам, это видимо происходит потому, что нет перехода на прерывание по вектору OTG_FS_IRQHandler. Так как именно в нем взводится бит, нужный для установки статуса USB_MSC_DEV_CONNECTED. Вопрос - почему не срабатывает прерывание, и должно ли быть напряжение +5V на USB во время этого опроса. т.к. в коде есть функция(см.ниже), которая сбрасывает VBUS_Enable в 0 и питание на USB отключается.
p.s. в таблице векторов прерывание OTG_FS_IRQHandler прописано.
Код:
void USB_OTG_BSP_DriveVBUS(USB_OTG_CORE_HANDLE *pdev, uint8_t state)
{

  if (0 == state)
  {
    /* DISABLE is needed on output of the Power Switch */
    GPIO_SetBits(HOST_POWERSW_PORT, HOST_POWERSW_VBUS);
  }
  else
  {
    /*ENABLE the Power Switch by driving the Enable LOW */
    GPIO_ResetBits(HOST_POWERSW_PORT, HOST_POWERSW_VBUS);
  }


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 28 июн 2018, 09:20 
Старожил

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 201
Kvanto, вы же хост, это ваша задача включить питание на VBUS, без него порт мёртв. Только после включения питания в нём "жизнь возникает".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 28 июн 2018, 11:22 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 65
VladislavS писал(а):
Kvanto, вы же хост, это ваша задача включить питание на VBUS, без него порт мёртв. Только после включения питания в нём "жизнь возникает".

Закомментировал вызов функции сброса VBUS_Enable, на USB теперь постоянно +5 V. Но даже при этом прерывание не вызывается:
Код:
 
case HOST_IDLE :
   
    if (HCD_IsDeviceConnected(pdev)) 
    {
      /* Wait for USB Connect Interrupt void USBH_ISR_Connected(void) */     
      USBH_DeAllocate_AllChannel(pdev);
      phost->gState = HOST_DEV_ATTACHED;
    }
    break;

Программа заходит в данный Case, проверяет условие HCD_IsDeviceConnected(pdev) и выходит из него. Пока не ясно, кто должен генерировать прерывание по вектору OTG_FS_IRQHandler. Именно через него выполнится вышеупомянутое условие.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 28 июн 2018, 18:31 
Старожил

Зарегистрирован: 13 июл 2016, 11:05
Сообщения: 265
у меня USB Host как раз для флэшек.
Используются только USB_OTG_DM, USB_OTG_DP
Через 22 ома на разъем и всё.
Хотя есть еще защита параллельно им ( USBDF02W5 в корпусе SOT23-5)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 29 июн 2018, 17:01 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 65
serglg писал(а):
у меня USB Host как раз для флэшек.
Используются только USB_OTG_DM, USB_OTG_DP
Через 22 ома на разъем и всё.
Хотя есть еще защита параллельно им ( USBDF02W5 в корпусе SOT23-5)

Благодарю! Проблема подключения была именно в схеме. DM и DP были подтянуты к питанию. Убрал эти подтяжки и флешка законнектилась, теперь вот надо справиться с монтированием/размонтированием и записью файла.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 30 июн 2018, 09:56 
Старожил

Зарегистрирован: 13 июл 2016, 11:05
Сообщения: 265
Kvanto писал(а):
serglg писал(а):
у меня USB Host как раз для флэшек.
Используются только USB_OTG_DM, USB_OTG_DP
Через 22 ома на разъем и всё.
Хотя есть еще защита параллельно им ( USBDF02W5 в корпусе SOT23-5)

Благодарю! Проблема подключения была именно в схеме. DM и DP были подтянуты к питанию. Убрал эти подтяжки и флешка законнектилась, теперь вот надо справиться с монтированием/размонтированием и записью файла.


Скопипастил на просторах сети.
Запись у меня:
Код:
MX_USB_HOST_Process();
if(f_mount(&fileSystem, USBH_Path, 1) == FR_OK)
   {
      uint8_t path[12] = "BAZY.RAR";
      path[11] = '\0';
      res = f_open(&testFile, (char*)path, FA_WRITE | FA_CREATE_ALWAYS);
      res = f_write(&testFile, BUFDISK, 7968, &testBytes);
      res = f_close(&testFile);
      break;
   }



Чтение:

Код:
                                                            MX_USB_HOST_Process();
if(f_mount(&fileSystem, USBH_Path, 1) == FR_OK)
{
uint8_t path[9] = "BAZY.RAR";
path[8] = '\0';
res = f_open(&testFile, (char*)path, FA_OPEN_EXISTING | FA_READ);
if (res == FR_OK)
{
   res = f_read(&testFile, BUFDISK, BYTEFLASH, &testBytes);
   res = f_close(&testFile);
  }
break;
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 30 июн 2018, 11:43 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 1333
На просторах есть и более корректные примеры.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 30 июн 2018, 20:31 
Старожил

Зарегистрирован: 13 июл 2016, 11:05
Сообщения: 265
x893 писал(а):
На просторах есть и более корректные примеры.


Ну ткните носом в НЕкорректность.
Учту.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 30 июн 2018, 21:41 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 1333
Мелочи.
И так сойдет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 02 июл 2018, 12:13 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 65
После успешного коннекта с флешкой и получения статуса USB_MSC_DEV_CONNECTED столкнулся с проблемой монтирования.
Выполнение доходит до проверки условия if(UB_Fatfs_Mount(USB_0)==FATFS_OK). основного файла

Код:
int main_usb(void)
{
  FIL myFile;   // обработчик файлов
  uint8_t write_ok=0;

  SystemInit(); // Инициализация настроек кварца

  // Инициализация светодиодов
// UB_Led_Init();

  // Инициализация USB-OTG-порта как MSC-HOST
  // (для чтения / записи на USB флешку)
  UB_USB_MSC_HOST_Init();

  while(1)
  {
    // Данные о статусе USB
    if(UB_USB_MSC_HOST_Do()==USB_MSC_DEV_CONNECTED) {
      // если USB-флешка обнаружена
      //UB_Led_On(LED_GREEN);

      // Если файл еще не записан
      if(write_ok==0) {
          write_ok=1;
          //UB_Led_On(LED_RED);
      //Монтировать флешку
          if(UB_Fatfs_Mount(USB_0)==FATFS_OK) {
          // Редактировать файл, записанный в корень флешки
          if(UB_Fatfs_OpenFile(&myFile, "USB_File.txt", F_WR_CLEAR)==FATFS_OK) {
            // Написать несколько строк текста в файле
            UB_Fatfs_WriteString(&myFile,"Write string 1");
            UB_Fatfs_WriteString(&myFile,"Write string 2");
            UB_Fatfs_WriteString(&myFile,"Write string 3");
            // Закрыть файл
            UB_Fatfs_CloseFile(&myFile);
          }
          // Размонтировать флешку
          UB_Fatfs_UnMount(USB_0);      
        }
        //UB_Led_Off(LED_RED);
      }
    }
    else {
      // Если нет доступных USB флешек
      //UB_Led_Off(LED_GREEN);
    }
  }
}


Далее проходит много функций, и крутится в цикле do-while функции USB_disk_read файла usbdisk.c:
Код:
int USB_disk_read(BYTE *buff, DWORD sector, BYTE count)
{
  int ret_wert=-1;
  BYTE status = USBH_MSC_OK;

  if(HCD_IsDeviceConnected(&USB_OTG_Core) && (USB_MSC_HOST_STATUS==USB_MSC_DEV_CONNECTED))
  {     
    do
    {
      status = USBH_MSC_Read10(&USB_OTG_Core, buff, sector, 512*count);
      USBH_MSC_HandleBOTXfer(&USB_OTG_Core ,&USB_Host);
     
      if(!HCD_IsDeviceConnected(&USB_OTG_Core))
      {
        status=USBH_MSC_FAIL;
      }     
    }
    while(status == USBH_MSC_BUSY );
  }
  else {
     status=USBH_MSC_FAIL;
  }
  if(status==USBH_MSC_OK) {
    ret_wert=0;
  }
  else {
    ret_wert=-1;
  }
  return(ret_wert);
}

то есть получается переменная status находится в состоянии USBH_MSC_BUSY. В чем здесь может быть дело?
За основу брал проект: http://mikrocontroller.bplaced.net/word ... age_id=383 Автор пишет что успешно записывал только на 4 Gb флешки, с 8 Gb у него не получалось. Хотя в других источниках говорят, что даже и на 8 и 32 Gb работали с USB. К сожалению нет под рукой флешки на 4, пробовал только на 8 и 16, может в этом дело. Хотелось бы не ограничиваться 4 Gb, они скоро все реже и реже будут встречаться в продаже.
Более подробно проблема расписана еще кем-то вот здесь: http://qaru.site/questions/501444/stm32 ... with-fatfs. Все тоже самое в моем случае. Правда решение которое предлагается в комментарии не пойдет. Проверял - указанные переменные уже имеют тип uint8_t.


Последний раз редактировалось Kvanto 02 июл 2018, 13:43, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 02 июл 2018, 13:32 
Только пришел

Зарегистрирован: 25 сен 2017, 10:57
Сообщения: 22
Откуда: Украина
Kvanto
Пробовал работать в основном с sd картами через кардриадер - работает далеко не со всеми переходниками (было еще - работало а потом перестало с данным кардриадером работать, а на компе продолжал работать ), бывало такое что старая версия fatfs работает а новая нет. По емкости закономерности не заметил, пробовал и 16GB, 8GB, 2GB.
Кардриадер с которым точно работало:
Show


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 02 июл 2018, 13:42 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 65
AlexTA писал(а):
Kvanto
Пробовал работать в основном с sd картами через кардриадер - работает далеко не со всеми переходниками (было еще - работало а потом перестало с данным кардриадером работать, а на компе продолжал работать ), бывало такое что старая версия fatfs работает а новая нет. По емкости закономерности не заметил, пробовал и 16GB, 8GB, 2GB.
Кардриадер с которым точно работало:

нет, SD карты не пойдут, нужно использование именно USB Flash. Что еще примечательно, при входе в функцию USBH_MSC_HandleBOTXfer опрашивается значение параметра USBH_MSC_BOTXferParam.BOTState, который, как и все остальные параметры структуры равны 0:

Код:
typedef struct _BOTXfer
{
uint8_t MSCState;
uint8_t MSCStateBkp;
uint8_t MSCStateCurrent;
uint8_t CmdStateMachine;
uint8_t BOTState;
uint8_t BOTStateBkp;
uint8_t* pRxTxBuff;
uint16_t DataLength;
uint8_t BOTXferErrorCount;
uint8_t BOTXferStatus;
} USBH_BOTXfer_TypeDef;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 02 июл 2018, 18:48 
Только пришел

Зарегистрирован: 25 сен 2017, 10:57
Сообщения: 22
Откуда: Украина
Kvanto
Может еще размер сектора играть роль, должен быть от 512 до 4096 байт. У меня вот с 8Кб сектором не хочет писать, хотя читает резво и бодро рапортует что сектор 512 байт. Могу выложить свой проект, но он под DiscoF4.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение USB-флешки к МК STM32 на SPL библиотеке
СообщениеДобавлено: 02 июл 2018, 18:52 
Заглядывает иногда

Зарегистрирован: 23 окт 2010, 23:56
Сообщения: 65
AlexTA писал(а):
Kvanto
Может еще размер сектора играть роль, должен быть от 512 до 4096 байт. У меня вот с 8Кб сектором не хочет писать, хотя читает резво и бодро рапортует что сектор 512 байт. Могу выложить свой проект, но он под DiscoF4.

выложите, если не затруднит, лишним не будет. Сектора к слову стояли 4096 байт. В чем-то видимо в другом дело.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 57 ]  На страницу 1, 2, 3  След.

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


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

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


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

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

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