Это видео недоступно.
Сожалеем об этом.
Файловый менеджер на микроконтроллере: stm32 + sd-card spi + st7789 + кнопки
HTML-код
- Опубликовано: 7 июн 2022
- Файловый менеджер на микроконтроллере? Легко. В этом видео на основе ранее написанных модулей, библиотек и драйверов для подключения SD-карты, дисплея и кнопок напишем свой простой файловый менеджер, который позволит наглядно выбирать файлы в каталогах SD-карты для последующей работы с ними.
Основные возможности файлового менеджера:
- вывод менеджера в окне, параметры (координата верхнего левого угла, ширина и высота окна, шрифт, цвет) которого задает пользователь;
- "умное" сокращение имен файлов и каталогов, если они не помещаются в окне;
- нет ограничений на количество файлов и подкаталогов в каталоге;
- запоминание позиции курсора в вышестоящем каталоге и восстановление этой позиции при возврате на него с вложенного подкаталога;
- вывод иконок (значков) файлов и каталогов в зависимости от типа файла, определяемого расширением;
- поддержка вложенных каталогов с уровнем вложенности, ограниченным только размером оперативной памяти микроконтроллера.
Скачать проект можно по ссылке: github.com/vad...
Поддержать канал:
donate.qiwi.co...
yoomoney.ru/to...
Покупал на Алиэкспресс:
программатор ST-Link alii.pub/6fdujg
плата разработки stm32f401ccu6 alii.pub/6fdumy
плата разработки stm32f411ceu6 alii.pub/6fduop
аудио-ЦАП pcm5102a alii.pub/6fdurf
макетная плата alii.pub/6fduuq
провода для макетной платы alii.pub/6fduwo
3.2" дисплей с тачскрином ILI9341 spi alii.pub/6fdvcf
1.3" дисплей ST7789 spi alii.pub/6fdvks
модуль микро SD карты alii.pub/6fdvoh
stm32, stm32 file manager, sd-card stm32, spi stm32, st7789, stm32 st7789, stm32 buttons, кнопки stm32, stm32 файловый менеджер
#stm32
#программирование
Проект доступен для скачивания по ссылке: github.com/vadrov/stm32-filemanager-sd-fatfs-display-buttons
Подключение дисплея st7789 по spi c dma на CMSIS и LL рассмотрено в видео ruclips.net/video/8tIJ16riJqo/видео.html
Подключение SD-карты по spi с dma на CMSIS и LL рассмотрено в видео ruclips.net/video/z99bLhlnukM/видео.html
Подключение кнопок на таймере с прерыванием на CMSIS и LL с устранением дребезга, автоповтором и буферов ввода (прямо как на PC 😉) рассмотрено в видео ruclips.net/video/e-w5HS75neg/видео.html
Файловый менеджер (структура и код) рассмотрен в видео ruclips.net/video/4c_PwnasQvs/видео.html
Подключение аудио-цап (audio dac) по интерфейсу i2s на CMSIS и LL рассмотрено в видео ruclips.net/video/p0IhX-XiiiQ/видео.html
К каждому из перечисленных видео есть ссылка в описании на проект для скачивания.
Поддержать канал:
donate.qiwi.com/payin/VadRov
yoomoney.ru/to/4100117522443917
Покупал на Алиэкспресс:
программатор ST-Link alii.pub/6fdujg
плата разработки stm32f401ccu6 alii.pub/6fdumy
плата разработки stm32f411ceu6 alii.pub/6fduop
аудио-ЦАП pcm5102a alii.pub/6fdurf
макетная плата alii.pub/6fduuq
провода для макетной платы alii.pub/6fduwo
3.2" дисплей с тачскрином ILI9341 spi alii.pub/6fdvcf
1.3" дисплей ST7789 spi alii.pub/6fdvks
модуль микро SD карты alii.pub/6fdvoh
Поганый ютуб прятал Вас тщательно .Я рад что обнаружил Ваш канал
Просто супер! Дисплей кнопки и SD-карта есть. Фактически это база для любого устройства автоматизации. Думаю, для полного счастья нужна еще RTOS, чтобы легче было прикручивать разные девайсы и организовывать их взаимодействие.
Благодарю за нужный контент.
Thank You VADROV
Спасибо! В моём приборе (на канале есть видео) тоже есть реализация файлового менеджера. Пока что простенькая. Ух, запарился я с ней :) Буду изучать теперь и вашу реализацию.
Большое спасибо!
Попробовал на F103 (правда SD без DMA).
1. При использовании FatFS опции USE_LNF вылетает HardFault_Handler... (хз, может что-то недонастроил), без LNF стабильней работает.
2. Почему-то с подключенным отладчиком (ST-LINK) не работает часть кнопок (пробовал менять выводы), без отладчика - норм.
3. Иногда случались фейлы инициализации SD (либо она не успевала включиться (при первой подаче питания), либо случалось какое-то подвисание, хз), возможно нужно предусмотреть хард-резет на такой случай.
4. Ну и самое пока непонятное: на одной из флешек (новая SDSQUNR-032G-ZN3MN) filemanager не видит части папок и файлов. Причем сперва вроде как видел, потом я подредактировал файлы (названия не менял) и все, пропали. На других устройствах все файлы/папки нормально работают и отображаются и редактируются. Файлы не скрытые, не системные (да и в коде выключил их скрытие).
Потом создавал новый файлы - он их видит (старые пропавшие нет), потом что-то совсем сломалось, и теперь видит только два файла.
Ни старые ни новые не видит совсем (только два файла в корне). На других устройствах все ок, т.е. проблема не во флешке.
Попробуйте внести изменения в код (файл user_diskio_spi.c):
1. Функция spi_rw :
static BYTE spi_rw(BYTE wval)
{
*((volatile uint8_t *)&SPI_SD->DR) = wval;
while(!(SPI_SD->SR & SPI_SR_RXNE)) ;
while (SPI_SD->SR & SPI_SR_BSY) ;
return SPI_SD->DR;
}
2. Функция spi_r_multi:
static void spi_r_multi(BYTE *rval, uint16_t cnt)
{
uint8_t* pRxData = (uint8_t*)rval;
uint16_t txCnt = cnt;
while(txCnt > 0)
{
*((volatile uint8_t *)&SPI_SD->DR) = 0xFF;
txCnt--;
while(!(SPI_SD->SR & SPI_SR_RXNE));
*pRxData = *((volatile uint8_t *)&SPI_SD->DR);
pRxData++;
}
while (SPI_SD->SR & SPI_SR_BSY) ;
}
3. Добавьте в самый конец функции SPI_DMA_TransmitReceive строчку:
while (SPI_SD->SR & SPI_SR_BSY) ; //ждем когда SPI освободится
С DMA там все просто. Можете посмотреть код драйвера дисплея для F103 и сделать по аналогии.
Обновил FatFS и Filemanager из последних исходников - заработало, файлы вернулись :)
А есть какие-то рекомендации по продлению жизни microsd? Например, при постоянной записи нескольких байт (в один лог-файл) есть ли смысл в предварительной буферизации и т.п.?
Действенная рекомендация: использовать карту значительно большего объема, чем требуется.
И, естественно, необходимо сократить количество обращений к карте для записи данных, используя для этого по мере возможности соответствующий RAM-буфер, по мере заполнения которого записывать данные на карту.
проблема однако у меня, флешка не переициалируется, только если физически разамкнуть контакты, и кнопку резет делать, то появлется видится мк , как так сделать, что бы на горячею можно было переподключать? и ещё вопрос, куда вожней чем первый, в высокоуровненневых языках я не спец (да и в других не особо ))))поробую описать что мне нужно, как это можно было бы разрешить . Вот функция
fres = f_open(&fil, "Xman.bin", FA_READ);
if(fres != FR_OK)
{
printf("File opening Error : (%i)
", fres);
break;
}
//если файл есть то читаем
f_gets(buf, sizeof(buf), &fil);
sizeof(buf) - это сколько прочитать
а вот как указать с кого одреса нужно начать считывать?
Уменя двоичный файл, он весит 8 мешков, его надо на другую шлешку перекинуть, нужно сделать промежуточный буфер, на pic я там на асм всё по байту перекинул , бы и проблем нет. А тут какая то засада для меня.
FRESULT f_lseek (
FIL* FileObject, /* Указатель на структуру файлового объекта */
DWORD Offset /* Смещение по файлу относительно начала в байтах */
);
Good ща попробую.@@VadRov
Что-то подсказывает мне, что будет куда удобнее организовать управление Вашим менеджером энкодером с кнопкой на оси. Как предложение добавить в обработчик менеджера таймер для энкодера или пины GPIO для программной реализации обработчика энкодера.
Можно реализовать и с touch. Все на усмотрение пользователя. Это просто простейший пример использования для демонстрации работы связки различной периферии МК и внешних устройств.
@@VadRov Конечно можно, только тач на таких экранах, как в библиотеке - очень спорное решение с точки зрения удобства эксплуатации... Решающую роль для удобства играет размер экрана и вполне может быть, что монохромный графический дисплей, в том же бюджете, но большего размера будет предпочтительнее.
Имею желание попробовать реализовать .. потому вопрос.
Сможет ли Ваша графическая библиотека обеспечить работу монохромного графического LCD по SPI без глобальной переделки функций графической библиотеки? Все же она заточена под работу с цветом., но очень привлекает лаконичностью и стилем кода. 💪 Или разумнее прикрутить готовую стороннюю библиотеку монохромного lcd непосредственно к Вашему менеджеру. Какой путь выбрать?
@@kokotmkokot4926, однозначно сказать не могу, как Вам поступить. Если использовать стороннюю библиотеку, то просто придется переписать/дописать и т.п. либо адаптировать имеющиеся в библиотеке аналоги функций: DrawIcon, LCD_WriteString, LCD_FillWindow, LCD_DrawRectangle, LCD_DrawFilledRectangle.
Если использовать мою библиотеку, то, во-первых, придется написать драйвер под требуемый контроллер; во-вторых, модернизировать механизм работы с цветом. Это несложно, но первый путь короче. Естественно, в первом случае также придется немного вникнуть в код сторонней библиотеки. Лично я люблю "изобретать велосипеды". 😉
@@VadRov спасибо !
Забрал сегодня картридеры. Запустил Ваш проект файлового менеджера на 411. Шикарно все отрабатывает. Поставил бы 10 лайков за такой прекрасный проект!