STM Урок 143. USB HS Host MSC FREERTOS. Часть 2



В предыдущей части нашего урока мы создали проект и добавили в него две задачи для работы с шиной USB и библиотекой FATFS.

 

Вернёмся в наш проект и добавим несколько глобальных указателей и переменных

 

 

Вернёмся в функцию USB_Task02 и попытаемся открыть файл. В случае неудачи выведем соответствующее сообщение в терминальную программу, в случаи удачи — другое сообщение, а затем закроем файл

 

 

Поместим накопитель в разъём кабеля USB OTG, соберём код, прошьём контроллер и посмотрим результат в терминальной программе.

Если всё пройдёт нормально, то получим следующий результат

 

 

Попробуем что-нибудь записать в наш файл, соответственно до его закрытия

 

 

А после закрытия файла, если операция записи вызвала ошибку, выведем соответствующее сообщение в терминальную программу, а если прошла успешно, то другое сообщение

 

 

Соберём код, прошьём контроллер и посмотрим сначала результат в терминальной программе

 

 

Затем извлечём из разъёма кабеля FLASH-накопитель и поместим его в USB-порт ПК. Наш файл на месте

 

 

Откроем файл и убедимся, что содержимое файла также соответствует заданному в программе

 

 

Всё сходится, отлично!

Теперь попробуем программными средствами прочитать содержимое файла.

 

 

Сначала откроем файл для чтения, сначала заново скопировав имя файла в локальный массив, иначе путь почему-то теряется. Также не забываем перед открытием закрыть файл

 

 

Добавим локальную переменную

 

 

И теперь попытаемся прочитать содержимое нашего файла

 

 

А затем сравним количество прочитанных и записанных байтов

 

 

Проверим ход операции чтения, для чего присоединим FLASH-накопитель к разъёму кабеля USB OTG, соберём код, прошьём контроллер и посмотрим результат в терминальной программе

 

Вернёмся в наш код и закомментируем пока работу с файлом USBHost1.txt

 

/*

//read and write

...

*/

state = MSC_APP_EXPLORER;

 

 

Теперь попробуем поработать с длинными именами, а также с длинными файлами (по содержимому).

Для этого скопируем на наш FLASH-накопитель ещё два файла — один с коротким именем, но с большим содержимым, а другой — также с большим содержимым, но ещё и с длинным именем

 

 

Объявим несколько глобальных неоптимизируемых переменных

 

 

Также объявим пару глобальных массивов

 

 

Добавим ещё одну функцию для чтения файлов с длинным содержимым добавим ещё одну функцию для чтения файлов с длинным содержимым

 

 

В функции USB_Task02 после закомментированного кода добавим код чтения файла с длинным содержанием, но с коротким именем

 

 

Соберём код, прошьём контроллер, вернём FLASH-Drive в USB OTG-кабель, и посмотрим результат в терминальной программе

 

 

Файл полностью считался.

Теперь попробуем аналогично прочитать файл не только с большим содержимым, но ещё и с длинным именем.

Сначала закомментируем код чтения предыдущего файла

 

/*

if(f_open(&MyFile,"0:F74x.txt",FA_READ)!=FR_OK)

...

f_close(&MyFile);

}

*/

 

Прочитаем содержимое файла в терминальную программу

 

 

Благодаря определённым изменениям в обновлённой библиотеке FATFS нам теперь не нужно проводить дополнительные мероприятия по организации дополнительного буфера для чтения файлов с длинными именами.

Соберём код, прошьём контроллер и посмотрим результат в терминальной программе

 

 

Файл также полностью прочитан.

Теперь аналогично закомментируем участок кода, связанный с чтением данного файла.

Отключим FLASH-накопитель, подключим его к ПК и скопируем на него ещё несколько файлов и папок с файлами (также и с длинными именами, но не с кириллицей в именах и расширениях, так как кириллица — это вообще отдельная и нелёгкая тема)

 

Вернёмся в код и добавим в функцию USB_Task02 несколько локальных переменных

 

 

Теперь уже в другом кейсе попробуем вывести некоторую полезную информацию о нашем FLASH-накопителе, в том числе и его файловую структуру (только корневую)

 

 

Соберём код, прошьём контроллер, присоединим FLASH-накопитель к отладочной плате с помощью кабеля USB OTG и посмотрим результат в терминальной программе

 

Вся самая важная информация о файловой системе на нашем накопителе, а также и его корневая файловая структура видна. Можно, конечно, также вывести информацию о содержимом каждой папки, и подпапки, но это мы оставим на будущее.

Итак, в данном занятии мы научились пользоваться аппаратной поддержкой шины USB HS, а именно классом USB HOST MSC, причём с использованием операционной системы реального времени FREERTOS, а также закрепили на практике данные знания при работе с реальным USB FLASH-накопителем с использованием библиотеки FATFS.

Всем спасибо за внимание!

 

 

Предыдущая часть Программирование МК STM32 Следующий урок

 

Исходный код

 

 

Отладочную плату можно приобрести здесь 32F746G-DISCOVERY

 

 

Смотреть ВИДЕОУРОК (нажмите на картинку)

 

STM USB HS Host MSC FREERTOS

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*