L476RG Audio Recorder

ТИМОТЕО
Вт 12 февраля 2019 г. 12:15
Всем здравствуйте,
Основываясь на моем опыте работы с F103, решил пойти дальше и попытаться использовать L476RG в новом проекте.
Моя идея состоит в том, чтобы использовать его для записи звука с аналогового входа при относительной низкой скорости дискретиза (1 кГц) на карту microSD в течение фиксированного периода времени и спал весь другой период, они утверждают, что это лучшие варианты низкой силы и хотели бы Чтобы узнать, как его реализовать.
После поиска в последний день и не смог найти ни одного проекта, так просто решите опубликовать здесь мои вопросы.
Во -первых, кто -нибудь уже разрабатывает такое простое решение?
Прочитайте аналог с буфером и запишите его с SD - это простая задача, но использование DMA я понятия не имею, как это сделать, может кто -нибудь объяснить мне это?
Другая проблема, с которой я сталкиваюсь, - это формат, в других аудио -проектах файл записывается в формате RAW, поэтому затем преобразуется с помощью Audacity.
Что следует преобразовать и как сделать необработанный формат, чтобы использовать его последнее?
Спасибо все за ваше время.
Всего наилучшего,
Тим

Zoomx
Вт 12 февраля 2019 г. 13:58
ViewTopic.PHP?f = 3&T = 1953
Кажется, что вы не можете использовать DMA для написания SD.
Может это быть полезно
https: // www.STM32duino.com/viewtopic.PHP?f = 3&t = 1453
Я использовал эту библиотеку
https: // github.com/tmrh20/tmrpcm
С Arduino и он способен записать WAV (не забудьте включить запись!).
Если вы хотите записать как RAW, просто нанесите на SD все образцы как два байта целых числа, прочитайте его на Audacity, сообщая, что формат необработанный 16 -битный не знака, 1 кГц. Вы также должны сказать, большой ли это или маленький эндиан, может быть, анализ файла с помощью hex редактора.

ТИМОТЕО
Ср. 13 февраля 2019 г. 10:21
Привет Zoomx,
Спасибо за ответ.
Идея использования DMA заключалась в том, чтобы хранить приобретения на буфере, чтобы затем перенести в SD позже, а не используется одновременно.
Помните, что предложение использует L476RG, у которого есть огромная вспышка для буфера, было бы более чем нормально.

Уже читал это: https: // www.STM32duino.com/viewtopic.PHP?f = 3&t = 1453 и теперь нужно изучить решение.

Не понимал, как использовать библиотеку (https: // github.com/tmrh20/tmrpcm) записать, не нашел вариант включения записи?!
Не могли бы вы объяснить, пожалуйста?
Если вы хотите записать как RAW, просто нанесите на SD все образцы как два байта целых числа, прочитайте его на Audacity, сообщая, что формат необработанный 16 -битный не знака, 1 кГц. Вы также должны сказать, большой ли это или маленький эндиан, может быть, анализ файла с помощью hex редактора. Это исходная идея, но не знают, какой формат данных для отправки SD и, если потребуется пространство между значениями или запятой, не могли бы вы дать мне некоторые подсказки?

Спасибо за вашу помощь.
Всего наилучшего,
Тим

Стивестронг
Ср. 13 февраля 2019 г. 10:54
Формат данных для хранения на SD должен быть определен вашим вариантом использования. Как вы хотите экспортировать аудиоданные? На SD -карте или отправлено на ПК через сериал?
В моем приложении (аудио -образец проекта здесь: https: // github.com/stevstrong/audio-sam ... C_HOST.Ино) Я хранил данные в SD в необработанном формате и отправил данные позже на ПК.
В основном вы должны выделить огромный буфер в оперативной памяти для хранения образцов звука.
Затем, когда буфер DMA наполовину полон, вы передаете данные в SD. Когда буфер DMA завершен, вы передаете остальные данные в SD.

ТИМОТЕО
Чт 28 февраля 2019 г. 10:00 утра
Привет, Стив,

Спасибо за ответ!
Моя идея состоит в том, чтобы записать данные на SD -карте как сырой, чтобы позже открыть их в Audacity. Проблема здесь в том, что я не знаю, какой формат и файл организуют, чтобы сделать это...
Попробуйте использовать свое приложение, но получила эту ошибку:
error_recorder.png
error_recorder.PNG (9.36 киб) просмотрено 364 раза

ТИМОТЕО
Чт 28 февраля 2019 г. 10:31
Привет снова,

Нашел проблему для кода:
error_repair.png
error_repair.PNG (13.26 киб) просмотрено 362 раз

ТИМОТЕО
Чт 28 февраля 2019 г. 10:41
Привет, Zoom,

Обнаружили, что запись включает!
Это должно быть сделано в pcmconfig.h по неуклонению референтной линии.
Но не знаю, как это назвать правильно...
В TMRPCM.Файл CPP я могу видеть инструкцию, но когда он звонил, не сработал.
Можете ли вы прислать мне команду, которую вы используете для запуска и остановки?
Возможно ли использовать STM32 также?
Спасибо

Всего наилучшего,
Тим

Zoomx
Пт, 01, 2019, 9:59 утра
Есть пример, как его использовать.
Вот этот. Никогда не тестировал на STM32. Помните, что вы должны использовать микрофон с приличным усилителем, таким как дешевые, которые используют максимальный усилитель, иначе вы получите только шум. Используя Макс, вы получите шум, но не только шум!
/* WavRecAndPlay was Recording example of TRMpcm library This sketch demonstrates recording of standard WAV files that can be played on any device that supports WAVs. The recording uses a single ended input from any of the analog input pins. Uses AVCC (5V) reference currently. Requirements: Class 4 or 6 SD Card Audio Input Device (Microphone, etc) Arduino Uno,Nano, Mega, etc. Steps: 1. Edit pcmConfig.h a: On Uno or non-mega boards, #define buffSize 128. May need to increase. b: Uncomment #define ENABLE_RECORDING and #define BLOCK_COUNT 10000UL 2. Usage is as below. See https://github.com/TMRh20/TMRpcm/wiki/Advanced-Features#wiki-recording-audio for additional informaiton. Notes: Recording will not work in Multi Mode. Performance is very dependant on SD write speed, and memory used. Better performance may be seen using the SdFat library. See included example for usage. Running the Arduino from a battery or filtered power supply will reduce noise. */ #include //#include #include #include "TMRpcm.h" //#define SD_ChipSelectPin 53 //example uses hardware SS pin 53 on Mega2560 #define SD_ChipSelectPin 4 //using digital pin 4 on arduino nano 328, can use other pins TMRpcm audio; // create an object for use in this sketch void setup() { audio.speakerPin = 9; //5,6,11 or 46 on Mega, 9 on Uno, Nano, etc pinMode(10, OUTPUT); //Pin pairs: 9,10 Mega: 5-2,6-7,11-12,46-45 Serial.begin(115200); if (!SD.begin(SD_ChipSelectPin)) { return; } else { Serial.println("SD OK"); } // The audio library needs to know which CS pin to use for recording audio.CSPin = SD_ChipSelectPin; } void loop() { if (Serial.available()) { //Send commands over serial to play switch (Serial.read()) { case 'r': audio.startRecording("test.wav", 16000, A0); break; //Record at 16khz sample rate on pin A0 case 'R': audio.startRecording("test.wav", 16000, A0, 1); break; //Record, but with passthrough to speaker. case 't': audio.startRecording("test.wav", 16000, A0, 2); break; //Do not record. Output direct to speaker //Note: If samples are dropped before writing, it // will not be heard in passthrough mode case 's': audio.stopRecording("test.wav"); break; //Stop recording case 'p': audio.play("test.wav"); break; //Play the recording case '=': audio.volume(1); break; //Increase volume by 1. Does not affect recording case '-': audio.volume(0); break; //Decrease volume by 1. Does not affect recording case 'S': audio.stopPlayback(); break; //Stop all playback } } }

ТИМОТЕО
Пт, 01 марта 2019 г., 21:49
Привет Zoomx,

Спасибо за ответ.
Попробую в эти выходные.
Было бы неплохо, если бы у кого -то была рабочая версия для STM32.

Тим

Сэндрин
Сб 09 марта 2019 г. 14:40
Возможно, я неправильно понимаю, но 1 кГц? Это слишком низко, чтобы любое качество было узнаваемым, но в примере говорится, что 16 кГц?
Так или иначе, я недавно сделал проект с SD -картами, разделяющим тот же SPI, что и внешний SRAM (1 Мбит в буфер), и он работает нормально, пока вызовы отдельные.. SD -карта лучше всего работает с 512 байтовым буфером

Формат файла Google Wave. Вы должны определить, что WAV - это моно, использует (16 бит), размер блока данных (который должен быть редактированием файла SD после записи), скорость дискретизации + другие и следует за небольшим форматом Endian для данных
Макет как «рифф» «FMT» и «Данные» довольно специфичны для признания любым игроком

Zoomx
Пн 11 марта 2019 г. 9:06
В примере TMRPCM используется скорость дискретизации 16 кГц на ATMEGA328P. Качество все еще плохое, может быть, из -за шума, плохой аналогичной схемы или других причин.

Сэндрин
Пн 11 марта 2019 г., 14:50
Ой! Это довольно минимально. Вероятно, это всего лишь 10 -битная АЦП, но с надлежащей фильтрацией на воспроизведении было бы хорошо для записи голоса

Zoomx
Вторник 12 марта 2019 г. 7:54
Он записывает вав на SD, вам не нужно Arduino, чтобы услышать это.

Сэндрин
Пт 15 марта 2019 г. 13:54
я знаю это
Я смотрел на библиотеку, и кажется, что заголовок волнового файла может быть создан, но не смог выяснить, как вставлен размер, но в разделе «Размер заголовка» есть комментированный «. Я не умею читать библиотеки, хотя, вероятно, пропустил это.
Но даже с необработанным форматом, это довольно впечатляет для Attega!

Вход - выход

Miditech 4x4 Hack