31 lines
1.2 KiB
C++
31 lines
1.2 KiB
C++
#include "main.h"
|
|
/** USB osciloskop.
|
|
* Původně to byl projekt pro STM32L452, ale i na CH32V203 to celkem funguje.
|
|
* AD převodník zde je pomalejší, pro 1 kanál snese max 1 Mbps, zde 2 kanály,
|
|
* tedy 500kbps max, s tím, že doba vzorkování je ta nejmenší, tedy vstupy se
|
|
* musí krmit z co nejmenší impedance (výstup externího OZ). Dál nejde omezit
|
|
* počet bitů na 10, musí zůstat 12. Vstupy jsou PA2, PA3.
|
|
* Komunikace po USB CDC je v hexadecimálním formátu - písmenka lze snadno
|
|
* číst a propustnost celkem vyhovuje - data 2*12 bitů zaberou 6 bytů, celkem
|
|
* nic by se stejně neušetřilo, binárně by se předávaly stejně 4 byty.
|
|
* Je zde aplikován trigger, zhruba jako normálního osciloskopu, nastavuje se
|
|
* povely po USB, stejně jako časová základna. Formát povelů je patrný ze
|
|
* zdrojáků.
|
|
* Bylo jen potřeba dopsat kontinuální běh pro časy vzorkování větší než 1ms.
|
|
* Zobrazování má za úkol aplikace v Qt5 v adresáři software.
|
|
* */
|
|
static SampleRing ring;
|
|
static AdcClass adc (ring);
|
|
static cdc_class cdc;
|
|
static GpioClass power(GPIOB, 3);
|
|
|
|
int main () {
|
|
cdc.init();
|
|
power << true;
|
|
adc.Init();
|
|
ring += cdc;
|
|
for (;;) {
|
|
ring.pass ();
|
|
}
|
|
return 0;
|
|
}
|