1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/shuai132-ScopeMCU

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Осциллограф для микроконтроллера

ScopeMCU

Oscilloscope for MCU

MCU: STM32F103C8Tx

Необходимо использовать совместно с ScopeGUI.

Снимки экрана см. в wiki.

Последние версии доступны на странице Releases.

Введение

Создать практичный виртуальный осциллограф с минимальными затратами на аппаратное обеспечение.

Это аппаратная часть, основанная на минимальной системе STM32 и не использующая внешние периферийные устройства. Можно легко перенести на другое оборудование (требуется только АЦП, таймер, последовательный порт или USB). Параметры, такие как частота дискретизации и глубина выборки, зависят от производительности чипа.

Функции

  • Точное дискретное преобразование с помощью таймера, АЦП и DMA.
  • Откалиброванные значения АЦП (используется внутренний опорный источник напряжения).
  • Плавно регулируемая частота дискретизации, максимальная частота дискретизации 1 Мвыб/с.
  • Регулируемая глубина выборки, текущая глубина 6144 (1024 * 6) точек.
  • Встроенный сигнал самотестирования (синусоида 1 кГц).
  • Несколько способов запуска (автоматический, нормальный, однократный).
  • Анализ спектра FFT (реализован на хосте).
  • Высокоскоростная передача данных через USB CDC.

Примечание:

  • Не разработана схема предварительного усилителя, используется только для сбора сигналов 0–3,3 В.
  • Для точности выборки и калибровки текущая максимальная частота дискретизации составляет 70 квыб/с.

Карта ввода-вывода

Обязательные

Контакт Назначение
PA0 Канал АЦП
PA11 USB DM USB-интерфейс
PA12 USB DP USB-интерфейс

Опциональные

Контакт Назначение
PC13 Индикаторный светодиод процесса выборки — низкий уровень
PA8 Сигнал 1 кГц для самотестирования
PA9 USART1 TX для отладки через последовательный порт
PA10 USART1 RX для отладки через последовательный порт

Перенос

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

Требуется только предоставить функции реализации для оборудования, подробности см. в ScopeCore в комментариях к публичным методам или шагам переноса.

Примечание:

  • Требуется поддержка C++11, рекомендуется использовать компилятор arm-none-eabi и cmake, протестировано на Windows, macOS и Ubuntu.
  • Чтобы упростить разработку программного обеспечения и анализ данных, структуры данных упакованы непосредственно как единицы сообщений. Обратите внимание на сохранение согласованного порядка байтов с хостом (arm, x86, arduino используют порядок байтов little endian).

Шаги переноса

  • Инициализация scope
    // В глобальной инициализации
    static const size_t MaxSn = 1024 * 6;   // Зависит от размера RAM
    static uint8_t Buffer[Message::CalcBytes(MaxSn)];
    static ScopeMCU scopeMcu(MaxSn, Buffer);
    ...

    scopeMcu.setVolLimits(0, 3300);
    scopeMcu.setFsLimits(1, 10000);
    scopeMcu.setMcuImpl(
            {
                    .sendData = [](uint8_t* data, size_t size) {
                        // Отправить данные через последовательный порт
                    },
                    .startADC = []{
                        // Начать выборку
                    },
                    .stopADC = []{
                                // Остановить выборку
                    },
                    .setSampleFs = [](uint32_t fs) {
                        // Установить частоту дискретизации, вернуть фактическую частоту дискретизации
                    },
                    .onSampling = [](bool sampling) {
                        // Можно использовать для управления состоянием индикатора
                    }
            });
  • При получении данных через последовательный порт
    scopeMcu.onRead(data, size);
  • После завершения одного преобразования АЦП
    scopeMcu.onADC(vol);

Примечание:

  • Перед запуском startADC не следует запускать onADC.

Инструменты разработки

  • STM32CubeMX
  • arm-none-eabi-gcc
  • CLion (CMake)
  • OpenOCD
  • ST-LINK

Требования к установке (для macOS)

  • Настроить OpenOCD и ST-LINK.
brew install openocd
brew install stlink
brew cask install gcc-arm-embedded

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Виртуальный осциллограф MCU-конец. Компилированный релиз смотрите в главном репозитории GitHub. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/shuai132-ScopeMCU.git
git@api.gitlife.ru:oschina-mirror/shuai132-ScopeMCU.git
oschina-mirror
shuai132-ScopeMCU
shuai132-ScopeMCU
master