Какой микроконтроллер, совместимый с Arduino, для 2 непрерывных аналоговых аудиозаписей и 2 снимков цифровых выводов каждую секунду?

Извините, если заголовок не очень хорошо сформулирован. Я новичок в электронике и пытаюсь узнать больше о встроенных системах. У меня есть небольшой проект, который требует записи аналогового аудиовхода с 8-битной частотой 40 кГц и сохранения его каждую секунду на SD-карту.

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

В идеале я хотел бы иметь возможность одновременно записывать два источника звука на частоте около 40 кГц — 16 или 24 бита было бы идеально, а также записывать два сенсорных сигнала каждую секунду.

Это устройство должно работать от батареи разумного размера не менее двух часов, а в идеале - до восьми часов.

Мне нравится идея работать на чипсете AT91SAM3X8E, но я боюсь, что это может быть излишеством для такого небольшого проекта, и нынешняя серия Cortext-M3 может быть слишком большой для этого проекта.

Поэтому мой вопрос заключается в том, подходят ли ATmega328P или ATmega2560 для таких требований — с точки зрения вычислительной мощности, или мне нужно перейти на что-то вроде AT91SAM3X8E?

, 👍0


1 ответ


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

2

Поэтому у меня вопрос: подойдет ли ATmega328P или ATmega2560 для таких требований

Нет. Ни в малейшей степени.

Ваше основное требование по сэмплированию звука, в основном, с качеством CD (или лучше) требует использования надлежащего чипа кодека, а для управления им требуется микроконтроллер с I2S. Ни в одном из 8-битных чипов AVR такого нет.

Кроме того, вам понадобится МНОГО памяти. Гораздо больше, чем у 8-битного Arduino. Для двух каналов 16-битного звука с частотой 44 100 Гц (качество CD) требуется 176 400 байт в секунду.

Вам понадобится вдвое больше.

Для непрерывной записи и сохранения данных вам потребуется DMA для выполнения записи. DMA считывает входящие данные от I2S и сохраняет их в одном буфере. Когда этот буфер заполнен, вы генерируете прерывание и переключаетесь на второй буфер. Затем вы можете сохранить первый буфер на SD - при условии, что это можно сделать менее чем за секунду. Обратите внимание, что SD-карты, управляемые SPI, как это обычно бывает на микроконтроллерах, обычно работают довольно медленно.

Итак, учитывая все это:

Мне нравится идея работать на чипсете AT91SAM3X8E, но я боюсь, что это может оказаться излишним для такого небольшого проекта

Перебор? Нет. Не подходит, так как не соответствует задаче. Да, у него есть I2S. Да, у него есть ДМА. Но у него недостаточно памяти. Только для звука вам потребуется 350 килобайт (у SAM3X8E до 100 килобайт), не говоря уже о памяти, необходимой для буферов SD-карты.

Итак, вам нужен микроконтроллер с полной поддержкой I2S, прямым доступом к памяти и объемом памяти около полумегабайта. И они не такие маленькие и дешевые, как 8-битные AVR Arduino.

,

Отлично, большое спасибо! Как вы думаете, есть ли способ записывать сэмплы во время прерывания - скажем, каждые 20 мкс, во временное быстрое, но маленькое ОЗУ, а затем записывать это на SD-карту каждую секунду. Таким образом, самому микроконтроллеру не потребуется встроенная дополнительная память., @Mahdi

Кроме того, вся идея буферизации данных заключается в том, чтобы не держать SD-карту постоянно включенной, просто для снижения энергопотребления. Если мы пока проигнорируем это, как вы думаете, mega328 может записывать данные в реальном времени на (высококачественную, быструю) SD-карту без каких-либо задержек?, @Mahdi

Что касается временного кеша, может, какая-нибудь быстрая EEPROM подойдет?, @Mahdi

Нет и нет. Вам *нужен* более мощный MCU., @Majenko

"записывать данные в реальном времени на (высококачественную, быструю) SD-карту без каких-либо задержек?" Возможная скорость SD-карты не важна, если вы используете SPI. Для достижения высоких скоростей передачи данных необходимо использовать параллельный интерфейс передачи данных. И даже с этим наиболее похожим микроконтроллером (при условии, что он у вас есть, что в целом соответствует задаче) будет узким местом. Так что возможная скорость SD-карты не имеет большого значения., @chrisl