Miniscope v2d

Niskobudżetowy oscyloskop i generator arbitralny PC/USB z mikrokontrolerem STM32F3.

Miniscope v2d jest oparty o mikrokontroler STM32F303CBT6 - układ w obudowie LQFP48 charakteryzujący się:

STM32F303CBT6
STM32F303CBT6 jest kompatybilny pinowo z STM32F103C8T6 użytym miniscope v2c. Mimo tego schemat zawiera kilka zmian mających ułatwić korzystanie z USB DFU które stało się podstawowym i jedynym sposobem ładowania firmware. Pull-up USB ma teraz możliwość programowego kontrolowania i jest także rozłączany przy użyciu przycisku reset umożliwiając re-enumerację bez fizycznego odłączania układu.

Uwaga: wydaje się, że DFU nie działa na bliźniaczej rodzinie mikrokontrolerów STM32F37x (ebrombaugh.studionebula.com).

Pełne wykorzystanie możliwości przetworników A/D STM32F30x nie jest możliwe bez użycia dodatkowych buforujących wzmacniaczy w stopniu wejściowym lub drastycznego zmniejszenia impedancji wejściowej.

miniscope v2d PCB

IDE

STM32F303 nie jest na razie (2013.04) oficjalnie wspierany przez CoIDE (użyty dla miniscope v2c) a ostatnie wersje CoIDE rozrosły się znacznie, tradycyjnie nie pozwalając na żadną instalację modułową. Z tego względu IDE zostało zmienione na darmową wersję Keil (MDK-ARM).

Hardware

Uwaga: bezpośrednie bazowanie na poniższym schemacie/PCB nie jest zalecane ze względu na brak możliwości użycia PGA w tej konfiguracji (możliwości konfiguracyjne/połączeniowe wbudowanych wzmacniaczy operacyjnych są niestety silnie ograniczone).

Schemat: miniscope_v2d.pdf

Pliki Eagle: miniscope_v2d_20130413.zip

PCB:
Miniscope v2d top side
Miniscope v2d bottom side

Firmware bez żadnych zmian (nawet bez rekompilacji) można uruchomić na zestawie STM32F3DISCOVERY (podziękowania dla Aldo za przetestowanie).

Firmware

Projekt testowy ("migająca dioda" wykorzystująca buzzer), Eclipse + gcc: STM32F3_test_20130505.7z.

Program oscyloskopu, Keil: miniscope_v2d.7z i odpowiadająca mu biblioteka dll dla miniscope v4: miniscope_v2d_dll_1ch.7z. Zakres działania programu jest ograniczony do próbkowania jednego kanału i transmisji w czasie rzeczywistym przy prędkości 750 kSps - dodatkowe możliwości STM32F3 w stosunku do STM32F1 są generalnie niewykorzystane i wersja v2c pozostaje w tym momencie prawdopodobnie lepszym wyborem.

2013.06.09: wersja dwukanałowa (2 x 428.6kSps).
miniscope_v2d_2ch_20130609.7z
miniscope_v2d_dll_2ch_20130609.7z

2013.06.15: Zmieniony dzielnik wejściowy na 27k + 22k i dostosowana do tego biblioteka. Dodany wbudowany generator przebiegów:

Firmware: miniscope_v2d_AWF_20130615.7z
Biblioteka dll: miniscope_AWF_dll_20130615.7z

Uaktualniona dll: miniscope_v2d_AWF_dll_20140103.7z (dodana generacja standardowych przebiegów jak sinus, prostokąt, trójkąt, piła, dodany tekstowy status do okna rysowania przebiegu informujący o pozycji kursora).
Miniscope v2d standard shapes waveform generator

Pliki sterownika (libusb-win32) są zawarte w archiwum dll ale użycie aplikacji Zadig jest prostsze, zwłaszcza w przypadku 64-bitowych systemów Win8/Win10:
Zadig on Windows 10

Demonstracja użycia generatora - kanał A oscyloskopu dołączony do własnego wyjścia DAC, kanał B dla odniesienia dołączony do generatora przebiegu prostokątnego:

Narzędzia uzupełniające

bin2dfu

Dostarczany przez STM DFU file manager (narzędzie do tworzenia plików DFU i operowania na nich) staje się wyjątkowo nieergonomiczny w sytuacji gdy musi być używany wielokrotnie przy generacji kolejnych wersji programu. Zastąpienie go własnym narzędziem nie jest skomplikowane - format plików DFU(Se) jest opisany w nocie UM0391. Źródła DFU file manager są też dostarczane przez STM, ale ich bezpośrednie wykorzystanie wymaga posiadania "pełnej" wersji Visual C++ z MFC. Bin2dfu jest narzędziem konsolowym umożliwiającym zautomatyzowanie tworzenia pliku DFU przy kompilacji przez dodanie stosownej reguły do makefile:

    $(PROJ_NAME).dfu: $(PROJ_NAME).bin
	     @tools/bin2dfu --i $(PROJ_NAME).bin --a 0x08000000 --o $(PROJ_NAME).dfu  
  

Parametr --a określa adres początkowy pliku binarnego. Może zaistnieć konieczność jego modyfikacji jeżeli wykorzystywany jest dodakowy (nie wbudowany w ROM jak w STM32F303) bootloader USB. Ze względu na to, że narzędzie nie było testowane poza tym projektem jego użycie nie jest zalecane jeżeli brak jest możliwości ewentualnego przywrócenia bootloadera USB.

Plik wykonywalny i źródła Code::Blocks/MinGW: bin2dfu.zip.

DFU loader

Mała modyfikacja projektu ze strony codeproject.com: ST Micro-electronics Device Firmware Upgrade (DFU/DfuSe) from C# autorstwa Marka McLeana. Posiada mniejszą funkcjonalność niż narzędzie DfuSe Demo od STM, ale jest zdecydowanie wygodniejsze przy częstym używaniu. Umożliwia automatyczne programowanie układu docelowego za każdym razem gdy zostanie on wykryty jako urządzenie klasy DFU - zostanie uruchomiony (RESET + BOOT) w trybie bootloadera.

Aplikacja wymaga dwóch bibliotek będących częścią DfuSe Demo: STDFU.dll and STTubeDevice30.dll (instalacja DfuSe Demo jest i tak wymagana ze względu na zawarte w nim sterowniki) i środowiska .net 3.5.
C# DFU loader

Plik wykonywalny z projektem Visual C# 2008: DFU Example 20130515.zip

Altertywne hardware

Pomysł Jurisa Perkonsa - ponieważ STM32F303CBT6 jest kompatybilny pinowo z STM32F103C8T6, tania płytka "blue pill" może zostać użyta po wylutowaniu STM32F103C8T6: STM32F303 blue pill
STM32F303 blue pill