Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

STM32F4. Урок 32 - Использование USB-OTG в режиме MSC_HOST

Данная библиотека позволяет подключить USB флешку и работать с ней через OTG порт платы Discovery. Библиотека FatFs (USB версия) дает функции, позволяющие работать с файлами на флешке.
Примечание: существует библиотека FatFs для работы с SD картами, а также библиотека SD + USB (Урок 87).

Библиотека имеет только две функции:
1. Функция инициализации, которая должна вызываться только в начале.
2. HOST_Do-функция, которая запускается циклически и возвращает статус USB порта. Статус меняется, как только будет обнаружен ключ USB флешки, доступной для работы с FatFs.
Примечание: автор проверил две флешки. После попытки работы с флешкой объемом 8GB от компании SanDisk, программа выдала ошибку "DEVICE_NOT_SUPPORTED". С второй флешкой, 4 Гб Intenso ошибки нет, без проблем можно читать и записывать файлы.
Для подключения к плате необходим переходник с USB на microUSB. (Его можно купить на eBay или Amazon).

Пример работы:

Используемые выводы:

PA9   -> USB_OTG_VBUS
PA10  -> USB_OTG_ID
PA11  -> USB_OTG_DM
PA12  -> USB_OTG_DP
PC0   -> USB_VBUS_Enable

Требуемые библиотеки:

Подключаемые модули CooCox-IDE: GPIO, MISC
Поддерживаемые библиотеки: STM32_UB_FATFS (USB-Version)

Перечисления:

typedef enum {
  USB_MSC_HOST_NO_INIT =0,   // интерфейс USB не инициализирован 
  USB_MSC_DEV_DETACHED,      // нет подключенного устройства
  USB_MSC_SPEED_ERROR,       // Скорость USB не поддерживается
  USB_MSC_DEV_NOT_SUPPORTED, // Устройство не поддерживается
  USB_MSC_DEV_WRITE_PROTECT, // Устройство защищено от записи
  USB_MSC_OVER_CURRENT,      // Перегрузка по току
  USB_MSC_DEV_CONNECTED      // Устройство подключено и готово
}USB_MSC_HOST_STATUS_t;

Функции:

void UB_USB_MSC_HOST_Init(void);                 // инициализировать USB-Host
USB_MSC_HOST_STATUS_t UB_USB_MSC_HOST_Do(void);  // проверить состояние устройства

Пример использования:

//--------------------------------------------------------------
// File     : main.c
// Datum    : 13.04.2013
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.0
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der USB-MSC-HOST-Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------

#include "main.h"
#include "stm32_ub_led.h"
#include "stm32_ub_usb_msc_host.h"

int main(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,"Test der WriteString-Funktion");
            UB_Fatfs_WriteString(&myFile,"hier Zeile zwei");
            UB_Fatfs_WriteString(&myFile,"ENDE");
            // Закрыть файл
            UB_Fatfs_CloseFile(&myFile);
          }
          // Размонтировать флешку
          UB_Fatfs_UnMount(USB_0);
        }
        UB_Led_Off(LED_RED);
      }
    }
    else {
      // Если нет доступных USB флешек
      UB_Led_Off(LED_GREEN);
    }
  }
}

В приложении проект CooCox и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.

Оригинал статьи

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (1) | Я собрал (0) | Подписаться

0
Anton #
Добрый день! Подскажите, где можно почитать поподробнее про реализацию USB OTG в режиме MSC HOST, приведенную в данном уроке, по возможности на русском?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
ELM327 OBD II — адаптер с поддержкой CAN Ветрогенератор
вверх