Можно ли записать данные в файловую систему fat на SPI flash с помощью arduino?

У меня есть mp3-модуль на основе SPI flash, и мне было интересно, можно ли записать на чип флэш-памяти с помощью микроконтроллера(arduino). IC поддерживает файловые системы FAT16/FAT32. Я исследовал arduino и файловую систему fat, но все они связаны с SD-картами, которые работают по-разному, насколько я понимаю. Можно ли записать данные в файловую систему fat на SPI flash с помощью arduino?

, 👍0

Обсуждение

Разве эта прошивка SPI на этой плате уже не подключена к контроллеру платы? Я думаю, что SPI не способен работать с несколькими мастерами. Поэтому вам нужно будет отсоединить flash от контроллера платы, @chrisl

да, так и есть. но я хотел загрузить на него новый контент с помощью микроконтроллера., @user2105725

Но это означает, что первым важным вопросом является то, как взаимодействовать с микросхемой флэш-памяти, не вступая в конфликт с микроконтроллерами плат. В этот момент файловая система не имеет значения., @chrisl

Я думал, что, поскольку можно записывать файлы на чип с компьютера, можно было бы сделать то же самое с внешним MCU, @user2105725

Скорее всего, USB-порт подключается к платам MCU, которые затем, в свою очередь, подключаются через SPI к микросхеме флэш-памяти. Таким образом, для флэш-чипа это равносильно тому, записываете ли вы данные через USB или воспроизводите музыку на плате. Оба являются только коммуникациями SPI с MCU плат. Я предполагаю, что вам нужно либо извлечь флэш-чип с платы и добавить к нему какой-либо мультиплексор (чтобы вы могли переключаться между подключениями SPI к внутреннему MCU и внешнему), либо вам нужно использовать плату USB-хоста с вашим внешним MCU для записи данных через интерфейс USB., @chrisl

хммм, да, в этом есть смысл. платы USB-хостов - интересная мысль, новая концепция для меня, я изучу это.(и обновите, если есть какой-либо успех) большое спасибо за помощь., @user2105725


1 ответ


Лучший ответ:

0

Первая и самая важная проблема-это не файловая система. В настоящее время на плате USB-порт подключен к внутреннему микроконтроллеру, который, в свою очередь, подключен через SPI к микросхеме флэш-памяти. Внутренний микроконтроллер является ведущим на шине SPI. Но шина SPI не поддерживает несколько мастеров на одной шине. Поэтому простое подключение внешнего микроконтроллера к линиям SPI в качестве ведущего не сработает.

Я вижу здесь 2 возможных пути:

  • Вы можете отпаять флэш-чип от платы и добавить подходящий мультиплексорный чип, который может переключать линии SPI между двумя ведущими. Это эффективно дает вам только один мастер на шине SPI в любое время. Этот способ был бы довольно хакерским и сложным для новичка. Также может быть важно следить за емкостью шины, так как она может работать с довольно высокой скоростью. Слишком большая емкость (например, при использовании макета) может привести к ошибочной связи.

    Тогда вы могли бы воспользоваться одной из библиотек FAT. Я не знаю их подробно, но я думаю, что вы также могли бы использовать их для простого чипа флэш-памяти SPI. Вам просто нужно будет реализовать функции доступа более низкого уровня, необходимые библиотеке FAT.

  • Или вы можете попробовать использовать плату USB-хоста с внешним MCU и попытаться записать данные через USB-порт. У меня мало опыта работы с хост-платами USB, поэтому я не могу сказать вам, возможно ли и как именно это возможно с помощью доступного оборудования (на плате, скорее всего, будет реализован интерфейс USB, подобный простой флэш-флешке).

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

,

Большое спасибо, что нашли время ответить. очень признателен., @user2105725