RISC-V/V203/usb/scope/firmware/main.cpp

32 lines
1.2 KiB
C++
Raw Normal View History

2024-10-21 10:26:41 +02:00
#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
2024-10-21 12:09:29 +02:00
* počet bitů na 10, musí zůstat 12. Vstupy jsou PA2, PA3.
2024-10-21 10:26:41 +02:00
* 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í za úkol aplikace v Qt5 v adresáři software.
* */
static SampleRing ring;
static AdcClass adc (ring);
static cdc_class cdc;
2024-11-25 20:38:00 +01:00
static GpioClass power(GPIOB, 3);
2024-10-21 10:26:41 +02:00
int main () {
cdc.init();
2024-11-25 20:38:00 +01:00
power << true;
2024-10-21 10:26:41 +02:00
adc.Init();
ring += cdc;
for (;;) {
ring.pass ();
}
return 0;
}