Хранение данных в SDRAM Arduino Portenta H7

Я работаю над хранением данных с АЦП Portenta H7 с высокой частотой дискретизации (>100 КСА/сек) на канал. Я использую 2 канала АЦП для своей работы. Через форум я узнал, что сериал. команда печати снижает частоту дискретизации. Поэтому одним из предложений было использовать встроенный доступный порт 8 МБ SDRAM Portenta H7 для хранения значений выборки и последующего их извлечения после периода выборки. Мое время выборки составляет 3-5 секунд, так что оно вполне укладывается в лимит памяти этой SDRAM.

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

Пожалуйста, порекомендуйте, есть ли у вас какие-либо другие идеи по управлению данными для более быстрой выборки.

Вы можете найти информацию о Portenta H7 здесь. https://store.arduino.cc/usa/portenta-h7. Portenta оснащен двухъядерным процессором STM32H747.

Спасибо вам всем.

, 👍2

Обсуждение

1. Порт имеет 8 МБ (_megabytes_, не гигабайт) SDRAM. 2. Вам не нужно делать ничего особенного для доступа к оперативной памяти. Просто создайте пару [массивов](https://www.arduino.cc/reference/en/language/variables/data-types/array/) (по одному на канал) достаточно большой, чтобы вместить ваш пакет данных. Компилятор должен выделить для них место в оперативной памяти., @Edgar Bonet


1 ответ


2
#include <SDRAM.h>

SDRAMClass ram;
uint8_t *b;
void setup() {
  ram.begin();
  b = (uint8_t *)ram.malloc(320 * 240 * sizeof(uint8_t));
}

Способ сделать это-использовать библиотеку SDRAM для порта. Выше вы видите пример массива uint8.

,