Ниже представлен проект недорого USB осциллографа с применением STM32 микроконтроллера. Особенности устройства:
- использование очень дешевых STM32F103 микроконтроллеров в LQFP48 корпусе.
- односторонняя печатная плата, удобная для изготовления в домашних условиях.
- выборка 2x461kSps (2x300kSps в старых версиях), 8 бит, передача данных по USB в реальном времени.
- прошивка по UART.
- диапазон рабочих напряжений 0 - 6.6 Вольт. Нестандартное входное сопротивление 20 кОм (к несчастью, большее значение вызывает помехи на АЦП. Возможно, это можно исправить использованием ОУ. Обратите внимание: сопротивление может быть увеличено при использовании новой прошивки, которая использует отдельный АЦП для каждого канала).
Сигнал 300 мВ снятый при помощи miniscope v4:
Общая стоимость компонентов не превысила 10$.
Принципиальная схема USB-осциллографа:
Печатная плата - односторонняя, размер 66мм x 36мм.
Среда разработки
Для разработки miniscope v2 необходимо было выбрать среду разработки для STM микроконтроллеров. В этом файле лежат примеры проекта для IAR, Keil, RIDE, HiTop и TrueSTUDIO. К сожалению, не один из них мне не подошел. RIDE и HiTop требуют покупки лицензии через 7 дней. Пробные версии IAR и Keil имеют ограничение на размер кода и забирают очень много дискового пространства. То же самое с TrueSTUDIO.
В результате я выбрал CooCox, дистрибутив которого весит 115 МБ и около ~ 800 МБ после установки и распространяется бесплатно.
Прошивка микроконтроллера
На плате нет JTAG/SWD разъема, так как прошивка должна быть загружена по UART. Чтобы войти в режим загрузки, нажмите и удерживайте кнопку BOOT при нажатии кнопки RESET. Программа STM "Flash Loader Demo" без проблем работает с USB-UART переходником. Нормальное напряжение на выводах микроконтроллера 5В, поэтому можно использовать 5 или 3.3В RS232-UART/USB-UART переходник.
Кнопка RESET может быть удалена - микроконтроллер переходит в режим загрузки при нажатой кнопке BOOT если USB подключен.
Так как USB подключено без 1.5 кОм подтягивающих резисторов, его необходимо заново подключить после прошивки.
Проект для тестирования микроконтроллера и зуммер: stm32scopeTest.7z
Советы по передаче данных по USB
Используйте CDC в качестве шаблона. Есть две конечных точки BULK. Для повышения скорости CDC потребуются небольшие изменения.
1. Уменьшите значение VCOMPORT_IN_FRAME_INTERVAL. Я не уверен, что значение = 1 подходит при двунаправленной передаче, поэтому я поставил значение = 2.
2. Увеличение значения USART_RX_DATA_SIZE. Я использовал 8192 байт (2 х 4 Кб), но я думаю, что существенной разницы при использовании 4096 байт.
3. Изменение Handle_USBAsynchXfer, т.к. он не будет передавать данные, если USART_Rx_Buffer будет полный. Таким образом, после каждого номера SOF будет отправлен максимальный по номеру байт.
Убедитесь, что на ПК приложение постоянно готово к приему данных. Убедитесь, что приоритет чтения для него выше, чем у других приложений. Я использовал libusb, поэтому я использовал сочетания usb_submit_async / usb_reap_async для задания очереди запросов чтения.
Я не интересовался высокой скорость передачи данных с ПК, поэтому у меня нет советов по этому поводу. Miniscope v2c оправляет данные на ПК с максимально возможной скоростью. Данные отправляемые с ПК незначительны (ID запроса, изменение аналогового усиления).
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
Микроконтроллер | STM32F10XCXT6 | 1 | STM32F103? | Поиск в магазине Отрон | ||
IC1 | Линейный регулятор | LF33 | 1 | Поиск в магазине Отрон | ||
D1-D4 | Диод Шоттки | BAT42 | 4 | Поиск в магазине Отрон | ||
C1 | Электролитический конденсатор | 10 мкФ | 1 | Поиск в магазине Отрон | ||
C2 | Электролитический конденсатор | 100 мкФ | 1 | Поиск в магазине Отрон | ||
C3, C4, C6-C9, C13 | Конденсатор | 100 нФ | 7 | Поиск в магазине Отрон | ||
C5 | Электролитический конденсатор | 22 мкФ | 1 | Поиск в магазине Отрон | ||
C10, C12 | Конденсатор | 2 | Поиск в магазине Отрон | |||
C11, C14 | Конденсатор | 47 пФ | 2 | Поиск в магазине Отрон | ||
C15, C16 | Конденсатор | 22 пФ | 2 | Поиск в магазине Отрон | ||
R1-R3, R7, R10 | Резистор | 10 кОм | 5 | Поиск в магазине Отрон | ||
R4, R8 | Резистор | 27 Ом | 2 | Поиск в магазине Отрон | ||
R5, R6 | Резистор | 100 Ом | 2 | Поиск в магазине Отрон | ||
R9 | Резистор | 1.5 кОм | 1 | Поиск в магазине Отрон | ||
Q1 | Кварц | 8 МГц | 1 | Поиск в магазине Отрон | ||
L1 | Дроссель | BL01RN1A | 1 | Поиск в магазине Отрон | ||
SG1 | Пьезоизлучатель | F/TMB | 1 | Поиск в магазине Отрон | ||
S1, S2 | Кнопка | Замыкающая | 2 | Поиск в магазине Отрон | ||
X1 | Разъём | USB | 1 | Поиск в магазине Отрон | ||
JP2 | Разъём | PLS-4 | 1 | Входы | Поиск в магазине Отрон | |
JP3 | Разъём | PLS-3 | 1 | UART | Поиск в магазине Отрон | |
Скачать список элементов (PDF)
Прикрепленные файлы:
- stm32scope.rar (729 Кб)
- miniscope_v2c_20120416.zip (65 Кб)
Комментарии (13)
|
Я собрал (0) |
Подписаться
Для добавления Вашей сборки необходима регистрация
На ней один джампер устанавливает питание. Убедитесь, что выставлено 3.3 вольта. Потом соединяете три провода: RX,TX и GND. Можно перепутать нечаянно RX и ТX. Логика включения такая: что на одном девайсе RX, то на другом TX.
2) Далее (если у вас Win) качаете Flash Loader Demo. Там будет пошаговая инструкция. Нужно будет только выбрать ваш юарт преобразователь, он будет показан как СОМ с каким-то номером и выбрать прошивку. На все вопросы отвечайте, что вы не против затереть все что на чипе.
3) Чтобы ввести устройство в бутрежим, нужно включить его с зажатой кнопкой бут.
2 а какой файл из архива указывать в flash loader demo как прошивку?
3 а зачем в бут режим грузиться?
Прошивается с помощью копеечного USB-UART на CP2102 (на нем есть выход 3.3v), распиновка GND-GND, 3.3v-3.3v, tx-A10, rx-A9. Можно использовать USB-UART на ftdi. При прошивке не забыть переткнуть перемычку, затем вернуть обратно.
Утилита для прошивки stm flash loader demonstrator.
Сама прошивка (HEX файл) есть в файлах проекта stm32scope_20121006\Debug\bin.
После прошивки можно подключать плату по USB к компьютеру. Для этого нужны драйвера (их можно взять например из файла проекта miniscope_v2c_dll_20170121\miniscope_v2c\win-driver).
Данные смотрим на Miniscope v4 (miniscope_v4_01_00\bin), для этого нужна dll, которую берем например здесь miniscope_v2c_dll_20170121\miniscope_v2c\Release_Build и кладем в miniscope_v4_01_00\bin\device и в самом miniscope_v4 выбрать эту dll.
Все файлы есть по ссылке на оригинал статьи.
Сигнальные входы A0, A1 (ограничение 3.3v).
На Win10 не работает.
Все исходники прошивки для CooCox.