summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2019-01-31 09:20:39 +0100
committermakefu <github@syntax-fehler.de>2019-01-31 09:20:39 +0100
commiteffe6d292725b23cf50a81c8bb524bdd46d888f9 (patch)
tree49a6d7d92b9bf0454fde8ed8fb79c4d07feb63aa
parent89cd24a83320cc130962e0ae946a1b6628e13dfc (diff)
add the disassembling dps8005 article
-rw-r--r--content/extra/dps8005/10v-off.txt393
-rw-r--r--content/extra/dps8005/10v-on.txt393
-rw-r--r--content/extra/dps8005/15v-off.txt393
-rw-r--r--content/extra/dps8005/15v-on.txt393
-rw-r--r--content/extra/dps8005/5v-off.txt393
-rw-r--r--content/extra/dps8005/5v-on.txt393
-rw-r--r--content/img/dps8005/display-bottom.jpgbin0 -> 1245478 bytes
-rw-r--r--content/img/dps8005/display-top.jpgbin0 -> 1195390 bytes
-rw-r--r--content/img/dps8005/lower-bottom.jpgbin0 -> 1517021 bytes
-rw-r--r--content/img/dps8005/lower-top.jpgbin0 -> 1245741 bytes
-rw-r--r--content/img/dps8005/upper-bottom.jpgbin0 -> 1311907 bytes
-rw-r--r--content/img/dps8005/upper-top-text.jpgbin0 -> 2048835 bytes
-rw-r--r--content/img/dps8005/upper-top.jpgbin0 -> 1656457 bytes
-rw-r--r--content/posts/disassembling-dps8005.rst94
14 files changed, 2452 insertions, 0 deletions
diff --git a/content/extra/dps8005/10v-off.txt b/content/extra/dps8005/10v-off.txt
new file mode 100644
index 0000000..73064a5
--- /dev/null
+++ b/content/extra/dps8005/10v-off.txt
@@ -0,0 +1,393 @@
+>>>> spi2
+SPI2 settings
+CR2 : 0x00000347 [0x40003800]
+CR1 : 0x00000000 [0x40003804]
+SR : 0x00000002 [0x40003808]
+DR : 0x000000ff [0x4000380c]
+CRCPR : 0x00000007 [0x40003810]
+RXCRCR : 0x00000000 [0x40003814]
+TXCRCR : 0x00000000 [0x40003818]
+
+>>>> dma
+DMA settings
+ISR : 0x00000000 [0x40020000]
+IFCR : 0x00000000 [0x40020004]
+CCR1 : 0x00000000 [0x40020008]
+CNDTR : 0x00000000 [0x40020084]
+CPAR1 : 0x00000000 [0x40020010]
+CMAR1 : 0x00000000 [0x40020014]
+CCR2 : 0x00000000 [0x4002001c]
+CNDTR : 0x00000000 [0x40020084]
+CPAR2 : 0x00000000 [0x40020024]
+CMAR2 : 0x00000000 [0x40020028]
+CCR3 : 0x00000000 [0x40020030]
+CNDTR : 0x00000000 [0x40020084]
+CPAR3 : 0x00000000 [0x40020038]
+CMAR3 : 0x00000000 [0x4002003c]
+CCR4 : 0x00000000 [0x40020044]
+CNDTR : 0x00000000 [0x40020084]
+CPAR4 : 0x00000000 [0x4002004c]
+CMAR4 : 0x00000000 [0x40020050]
+CCR5 : 0x00000000 [0x40020058]
+CNDTR : 0x00000000 [0x40020084]
+CPAR5 : 0x00000000 [0x40020060]
+CMAR5 : 0x00000000 [0x40020064]
+CCR6 : 0x00000000 [0x4002006c]
+CNDTR : 0x00000000 [0x40020084]
+CPAR6 : 0x00000000 [0x40020074]
+CMAR6 : 0x00000000 [0x40020078]
+CCR7 : 0x00000000 [0x40020080]
+CNDTR : 0x00000000 [0x40020084]
+CPAR7 : 0x00000000 [0x40020088]
+
+>>>> spi1
+SPI1 settings
+CR2 : 0x00000000 [0x40013000]
+CR1 : 0x00000000 [0x40013004]
+SR : 0x00000000 [0x40013008]
+DR : 0x00000000 [0x4001300c]
+CRCPR : 0x00000000 [0x40013010]
+RXCRCR : 0x00000000 [0x40013014]
+TXCRCR : 0x00000000 [0x40013018]
+
+>>>> tim4
+TIM4 settings
+CR1 : 0x00000081 [0x40000800]
+CR2 : 0x00000000 [0x40000804]
+SMC : 0x00000000 [0x40000808]
+DIER : 0x00000000 [0x4000080c]
+SR : 0x0000001f [0x40000810]
+EGR : 0x00000000 [0x40000814]
+CCMR1 : 0x00006800 [0x40000818]
+CCMR2 : 0x00000000 [0x4000081c]
+CCER : 0x00000010 [0x40000820]
+CNT : 0x000057ea [0x40000824]
+PSC : 0x00000000 [0x40000828]
+ARR : 0x00005dbf [0x4000082c]
+RCR : 0x00000000 [0x40000830]
+CCR1 : 0x00000000 [0x40000834]
+CCR2 : 0x00004e20 [0x40000838]
+CCR3 : 0x00000000 [0x4000083c]
+CCR4 : 0x00000000 [0x40000840]
+BDTR : 0x00000000 [0x40000844]
+DCR : 0x00000000 [0x40000848]
+DMAR : 0x00000081 [0x4000084c]
+
+>>>> dac
+DAC settings
+CR : 0x00030003 [0x40007400]
+SWTRIGR : 0x00000000 [0x40007404]
+DHR12R1 : 0x00000000 [0x40007408]
+DHR12L1 : 0x00000000 [0x4000740c]
+DHR8R1 : 0x00000000 [0x40007410]
+DHR12R2 : 0x00000000 [0x40007414]
+DHR12L2 : 0x00000000 [0x40007418]
+DHR8R2 : 0x00000000 [0x4000741c]
+DHR12RD : 0x00000000 [0x40007420]
+DHR12LD : 0x00000000 [0x40007424]
+DHR8RD : 0x00000000 [0x40007428]
+DOR1 : 0x00000000 [0x4000742c]
+DOR2 : 0x00000000 [0x40007430]
+SR : 0x00000000 [0x40007434]
+
+>>>> gpio
+// PA0 O 1 OD (50 Mhz) U7
+gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_OPENDRAIN, GPIO0);
+
+// PA1 I 1 PuPd M2 button
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO1);
+gpio_set(GPIOA, GPIO1);
+
+// PA2 I 1 PuPd SEL button
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO2);
+gpio_set(GPIOA, GPIO2);
+
+// PA3 I 1 PuPd M1 button
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO3);
+gpio_set(GPIOA, GPIO3);
+
+// PA4 I 0 An DAC1_OUT TL594.2 (1IN-)
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_ANALOG, GPIO4);
+
+// PA5 I 0 An DAC2_OUT TL594.15 (2IN-)
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_ANALOG, GPIO5);
+
+// PA6 I 1 PuPd
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO6);
+gpio_set(GPIOA, GPIO6);
+
+// PA7 I 0 An ADC1_IN7 R30-U2.7:V_OUT-B (measures Vout)
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_ANALOG, GPIO7);
+
+// PA8 O 1 PP (50 Mhz) TFT.7 (not used by TFT)
+gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO8);
+
+// PA9 O 0 AF-PP (50 Mhz)
+gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO9);
+
+// PA10 I 0 PuPd
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO10);
+gpio_clear(GPIOA, GPIO10);
+
+// PA11 O 0 AF-PP (50 Mhz)
+gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO11);
+
+// PA12 I 1 Flt
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO12);
+
+// PA13 I 0 PuPd
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO13);
+gpio_clear(GPIOA, GPIO13);
+
+// PA14 I 1 PuPd SWDCLK
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO14);
+gpio_set(GPIOA, GPIO14);
+
+// PA15 O 1 OD (50 Mhz) R41-TL594.16 (2IN+)
+gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_OPENDRAIN, GPIO15);
+
+// PB0 I 0 An ADC1_IN8 R7/R2-R14-D4 (measures Vin)
+gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_ANALOG, GPIO0);
+
+// PB1 I 0 An ADC1_IN9 R33-U2.1:V_OUT-A (measures Iout)
+gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_ANALOG, GPIO1);
+
+// PB2 I 1 Flt
+gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO2);
+
+// PB3 O 1 OD (50 Mhz) R11-R17-R25-U2.5 (V_inB+)
+gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_OPENDRAIN, GPIO3);
+
+// PB4 I 1 PuPd PWR button
+gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO4);
+gpio_set(GPIOB, GPIO4);
+
+// PB5 I 1 PuPd Rotary press
+gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO5);
+gpio_set(GPIOB, GPIO5);
+
+// PB6 I 1 Flt NC?
+gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO6);
+
+// PB7 O 0 AF-PP (50 Mhz) TIM4_CH2
+gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO7);
+
+// PB8 I 1 PuPd Rotary enc
+gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO8);
+gpio_set(GPIOB, GPIO8);
+
+// PB9 I 1 PuPd Rotary enc
+gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO9);
+gpio_set(GPIOB, GPIO9);
+
+// PB10 I 1 Flt
+gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO10);
+
+// PB11 O 1 PP (50 Mhz) nPwrEnable R29-TFT.2 (TFT_VCC)
+gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO11);
+
+// PB12 O 1 PP (50 Mhz) SPI2_NSS TFT_RESET
+gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO12);
+
+// PB13 O 1 AF-PP (50 Mhz) SPI2_SCK
+gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO13);
+
+// PB14 O 1 PP (50 Mhz) SPI2_MISO TFT_A0
+gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO14);
+
+// PB15 O 1 AF-PP (50 Mhz) SPI2_MOSI
+gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO15);
+
+// PC0 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO0);
+
+// PC1 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO1);
+
+// PC2 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO2);
+
+// PC3 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO3);
+
+// PC4 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO4);
+
+// PC5 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO5);
+
+// PC6 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO6);
+
+// PC7 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO7);
+
+// PC8 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO8);
+
+// PC9 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO9);
+
+// PC10 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO10);
+
+// PC11 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO11);
+
+// PC12 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO12);
+
+// PC13 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO13);
+
+// PC14 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO14);
+
+// PC15 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO15);
+
+// PD0 I 1 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO0);
+
+// PD1 O 1 PP (50 Mhz) U7
+gpio_set_mode(GPIOD, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO1);
+
+// PD2 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO2);
+
+// PD3 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO3);
+
+// PD4 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO4);
+
+// PD5 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO5);
+
+// PD6 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO6);
+
+// PD7 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO7);
+
+// PD8 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO8);
+
+// PD9 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO9);
+
+// PD10 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO10);
+
+// PD11 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO11);
+
+// PD12 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO12);
+
+// PD13 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO13);
+
+// PD14 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO14);
+
+// PD15 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO15);
+
+
+>>>> gpiob
+GPIOB settings
+CRL : 0xb4887400 [0x40010c00]
+CRH : 0xb3b33488 [0x40010c04]
+IDR : 0x00007ff4 [0x40010c08]
+ODR : 0x0000fb38 [0x40010c0c]
+BSRR : 0x00000000 [0x40010c10]
+BRR : 0x00000000 [0x40010c14]
+LCKR : 0x00000000 [0x40010c18]
+
+>>>> gpioc
+GPIOC settings
+CRL : 0x44444444 [0x40011000]
+CRH : 0x44444444 [0x40011004]
+IDR : 0x00000000 [0x40011008]
+ODR : 0x00000000 [0x4001100c]
+BSRR : 0x00000000 [0x40011010]
+BRR : 0x00000000 [0x40011014]
+LCKR : 0x00000000 [0x40011018]
+
+>>>> gpioa
+GPIOA settings
+CRL : 0x08008887 [0x40010800]
+CRH : 0x7884b8b3 [0x40010804]
+IDR : 0x0000534f [0x40010808]
+ODR : 0x0000a14f [0x4001080c]
+BSRR : 0x00000000 [0x40010810]
+BRR : 0x00000000 [0x40010814]
+LCKR : 0x00000000 [0x40010818]
+
+>>>> gpiod
+GPIOD settings
+CRL : 0x44444434 [0x40011400]
+CRH : 0x44444444 [0x40011404]
+IDR : 0x00000003 [0x40011408]
+ODR : 0x00000002 [0x4001140c]
+BSRR : 0x00000000 [0x40011410]
+BRR : 0x00000000 [0x40011414]
+LCKR : 0x00000000 [0x40011418]
+
+>>>> adc1
+ADC1 settings
+SR : 0x00000010 [0x40012400]
+CR1 : 0x00000000 [0x40012404]
+CR2 : 0x009e0001 [0x40012408]
+SMPR1 : 0x00000000 [0x4001240c]
+SMPR2 : 0x36c00000 [0x40012410]
+JOFR1 : 0x00000000 [0x40012414]
+JOFR2 : 0x00000000 [0x40012418]
+JOFR3 : 0x00000000 [0x4001241c]
+JOFR4 : 0x00000000 [0x40012420]
+HTR : 0x00000fff [0x40012424]
+LTR : 0x00000000 [0x40012428]
+SQR1 : 0x00000000 [0x4001242c]
+SQR2 : 0x00000000 [0x40012430]
+SQR3 : 0x00000008 [0x40012434]
+JSQR : 0x00000000 [0x40012438]
+JDR1 : 0x00000000 [0x4001243c]
+JDR2 : 0x00000000 [0x40012440]
+JDR3 : 0x00000000 [0x40012444]
+JDR4 : 0x00000000 [0x40012448]
+DR : 0x00000312 [0x4001244c]
+
+>>>> afio
+AFIO settings
+EVCR : 0x00000000 [0x40010000]
+MAPR : 0x02008000 [0x40010004]
+EXTICR1 : 0x00000000 [0x40010008]
+EXTICR2 : 0x00000011 [0x4001000c]
+EXTICR3 : 0x00000011 [0x40010010]
+EXTICR4 : 0x00000000 [0x40010014]
+MAPR2 : 0x00000000 [0x40010018]
+
+>>>> exti
+EXTI settings
+IMR : 0x0000033e [0x40010400]
+EMR : 0x00000000 [0x40010404]
+RTSR : 0x00000300 [0x40010408]
+FTSR : 0x0000033e [0x4001040c]
+SWIER : 0x00000000 [0x40010410]
+PR : 0x00000000 [0x40010414]
+
+>>>> rcc
+RCC settings
+CR : 0x03003d83 [0x40021000]
+CFGR : 0x0410000a [0x40021004]
+CIR : 0x00000000 [0x40021008]
+APB2RSTR : 0x00000000 [0x4002100c]
+APB1RSTR : 0x00000000 [0x40021010]
+AHBENR : 0x00000014 [0x40021014]
+APB2ENR : 0x00004a2d [0x40021018]
+APB1ENR : 0x20004006 [0x4002101c]
+BDCR : 0x00000000 [0x40021020]
+CSR : 0x0c000000 [0x40021024]
+CFGR2 : 0x00000000 [0x4002102c]
+
diff --git a/content/extra/dps8005/10v-on.txt b/content/extra/dps8005/10v-on.txt
new file mode 100644
index 0000000..0ae72e0
--- /dev/null
+++ b/content/extra/dps8005/10v-on.txt
@@ -0,0 +1,393 @@
+>>>> spi2
+SPI2 settings
+CR2 : 0x00000347 [0x40003800]
+CR1 : 0x00000000 [0x40003804]
+SR : 0x00000003 [0x40003808]
+DR : 0x000000ff [0x4000380c]
+CRCPR : 0x00000007 [0x40003810]
+RXCRCR : 0x00000000 [0x40003814]
+TXCRCR : 0x00000000 [0x40003818]
+
+>>>> dma
+DMA settings
+ISR : 0x00000000 [0x40020000]
+IFCR : 0x00000000 [0x40020004]
+CCR1 : 0x00000000 [0x40020008]
+CNDTR : 0x00000000 [0x40020084]
+CPAR1 : 0x00000000 [0x40020010]
+CMAR1 : 0x00000000 [0x40020014]
+CCR2 : 0x00000000 [0x4002001c]
+CNDTR : 0x00000000 [0x40020084]
+CPAR2 : 0x00000000 [0x40020024]
+CMAR2 : 0x00000000 [0x40020028]
+CCR3 : 0x00000000 [0x40020030]
+CNDTR : 0x00000000 [0x40020084]
+CPAR3 : 0x00000000 [0x40020038]
+CMAR3 : 0x00000000 [0x4002003c]
+CCR4 : 0x00000000 [0x40020044]
+CNDTR : 0x00000000 [0x40020084]
+CPAR4 : 0x00000000 [0x4002004c]
+CMAR4 : 0x00000000 [0x40020050]
+CCR5 : 0x00000000 [0x40020058]
+CNDTR : 0x00000000 [0x40020084]
+CPAR5 : 0x00000000 [0x40020060]
+CMAR5 : 0x00000000 [0x40020064]
+CCR6 : 0x00000000 [0x4002006c]
+CNDTR : 0x00000000 [0x40020084]
+CPAR6 : 0x00000000 [0x40020074]
+CMAR6 : 0x00000000 [0x40020078]
+CCR7 : 0x00000000 [0x40020080]
+CNDTR : 0x00000000 [0x40020084]
+CPAR7 : 0x00000000 [0x40020088]
+
+>>>> spi1
+SPI1 settings
+CR2 : 0x00000000 [0x40013000]
+CR1 : 0x00000000 [0x40013004]
+SR : 0x00000000 [0x40013008]
+DR : 0x00000000 [0x4001300c]
+CRCPR : 0x00000000 [0x40013010]
+RXCRCR : 0x00000000 [0x40013014]
+TXCRCR : 0x00000000 [0x40013018]
+
+>>>> tim4
+TIM4 settings
+CR1 : 0x00000081 [0x40000800]
+CR2 : 0x00000000 [0x40000804]
+SMC : 0x00000000 [0x40000808]
+DIER : 0x00000000 [0x4000080c]
+SR : 0x0000001f [0x40000810]
+EGR : 0x00000000 [0x40000814]
+CCMR1 : 0x00006800 [0x40000818]
+CCMR2 : 0x00000000 [0x4000081c]
+CCER : 0x00000010 [0x40000820]
+CNT : 0x00005091 [0x40000824]
+PSC : 0x00000000 [0x40000828]
+ARR : 0x00005dbf [0x4000082c]
+RCR : 0x00000000 [0x40000830]
+CCR1 : 0x00000000 [0x40000834]
+CCR2 : 0x00004e20 [0x40000838]
+CCR3 : 0x00000000 [0x4000083c]
+CCR4 : 0x00000000 [0x40000840]
+BDTR : 0x00000000 [0x40000844]
+DCR : 0x00000000 [0x40000848]
+DMAR : 0x00000081 [0x4000084c]
+
+>>>> dac
+DAC settings
+CR : 0x00030003 [0x40007400]
+SWTRIGR : 0x00000000 [0x40007404]
+DHR12R1 : 0x00000000 [0x40007408]
+DHR12L1 : 0x00000000 [0x4000740c]
+DHR8R1 : 0x00000000 [0x40007410]
+DHR12R2 : 0x00000e1c [0x40007414]
+DHR12L2 : 0x0000e1c0 [0x40007418]
+DHR8R2 : 0x000000e1 [0x4000741c]
+DHR12RD : 0x0e1c0000 [0x40007420]
+DHR12LD : 0xe1c00000 [0x40007424]
+DHR8RD : 0x0000e100 [0x40007428]
+DOR1 : 0x00000000 [0x4000742c]
+DOR2 : 0x00000e1c [0x40007430]
+SR : 0x00000000 [0x40007434]
+
+>>>> gpio
+// PA0 O 1 OD (50 Mhz) U7
+gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_OPENDRAIN, GPIO0);
+
+// PA1 I 1 PuPd M2 button
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO1);
+gpio_set(GPIOA, GPIO1);
+
+// PA2 I 1 PuPd SEL button
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO2);
+gpio_set(GPIOA, GPIO2);
+
+// PA3 I 1 PuPd M1 button
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO3);
+gpio_set(GPIOA, GPIO3);
+
+// PA4 I 0 An DAC1_OUT TL594.2 (1IN-)
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_ANALOG, GPIO4);
+
+// PA5 I 0 An DAC2_OUT TL594.15 (2IN-)
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_ANALOG, GPIO5);
+
+// PA6 I 1 PuPd
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO6);
+gpio_set(GPIOA, GPIO6);
+
+// PA7 I 0 An ADC1_IN7 R30-U2.7:V_OUT-B (measures Vout)
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_ANALOG, GPIO7);
+
+// PA8 O 0 PP (50 Mhz) TFT.7 (not used by TFT)
+gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO8);
+
+// PA9 O 0 AF-PP (50 Mhz)
+gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO9);
+
+// PA10 I 0 PuPd
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO10);
+gpio_clear(GPIOA, GPIO10);
+
+// PA11 O 0 AF-PP (50 Mhz)
+gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO11);
+
+// PA12 I 1 Flt
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO12);
+
+// PA13 I 0 PuPd
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO13);
+gpio_clear(GPIOA, GPIO13);
+
+// PA14 I 1 PuPd SWDCLK
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO14);
+gpio_set(GPIOA, GPIO14);
+
+// PA15 O 1 OD (50 Mhz) R41-TL594.16 (2IN+)
+gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_OPENDRAIN, GPIO15);
+
+// PB0 I 0 An ADC1_IN8 R7/R2-R14-D4 (measures Vin)
+gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_ANALOG, GPIO0);
+
+// PB1 I 0 An ADC1_IN9 R33-U2.1:V_OUT-A (measures Iout)
+gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_ANALOG, GPIO1);
+
+// PB2 I 1 Flt
+gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO2);
+
+// PB3 O 1 OD (50 Mhz) R11-R17-R25-U2.5 (V_inB+)
+gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_OPENDRAIN, GPIO3);
+
+// PB4 I 1 PuPd PWR button
+gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO4);
+gpio_set(GPIOB, GPIO4);
+
+// PB5 I 1 PuPd Rotary press
+gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO5);
+gpio_set(GPIOB, GPIO5);
+
+// PB6 I 1 Flt NC?
+gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO6);
+
+// PB7 O 0 AF-PP (50 Mhz) TIM4_CH2
+gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO7);
+
+// PB8 I 1 PuPd Rotary enc
+gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO8);
+gpio_set(GPIOB, GPIO8);
+
+// PB9 I 1 PuPd Rotary enc
+gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO9);
+gpio_set(GPIOB, GPIO9);
+
+// PB10 I 1 Flt
+gpio_set_mode(GPIOB, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO10);
+
+// PB11 O 0 PP (50 Mhz) nPwrEnable R29-TFT.2 (TFT_VCC)
+gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO11);
+
+// PB12 O 1 PP (50 Mhz) SPI2_NSS TFT_RESET
+gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO12);
+
+// PB13 O 1 AF-PP (50 Mhz) SPI2_SCK
+gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO13);
+
+// PB14 O 1 PP (50 Mhz) SPI2_MISO TFT_A0
+gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO14);
+
+// PB15 O 1 AF-PP (50 Mhz) SPI2_MOSI
+gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO15);
+
+// PC0 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO0);
+
+// PC1 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO1);
+
+// PC2 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO2);
+
+// PC3 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO3);
+
+// PC4 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO4);
+
+// PC5 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO5);
+
+// PC6 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO6);
+
+// PC7 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO7);
+
+// PC8 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO8);
+
+// PC9 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO9);
+
+// PC10 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO10);
+
+// PC11 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO11);
+
+// PC12 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO12);
+
+// PC13 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO13);
+
+// PC14 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO14);
+
+// PC15 I 0 Flt
+gpio_set_mode(GPIOC, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO15);
+
+// PD0 I 1 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO0);
+
+// PD1 O 1 PP (50 Mhz) U7
+gpio_set_mode(GPIOD, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO1);
+
+// PD2 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO2);
+
+// PD3 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO3);
+
+// PD4 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO4);
+
+// PD5 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO5);
+
+// PD6 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO6);
+
+// PD7 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO7);
+
+// PD8 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO8);
+
+// PD9 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO9);
+
+// PD10 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO10);
+
+// PD11 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO11);
+
+// PD12 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO12);
+
+// PD13 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO13);
+
+// PD14 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO14);
+
+// PD15 I 0 Flt
+gpio_set_mode(GPIOD, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO15);
+
+
+>>>> gpiob
+GPIOB settings
+CRL : 0xb4887400 [0x40010c00]
+CRH : 0xb3b33488 [0x40010c04]
+IDR : 0x000077f4 [0x40010c08]
+ODR : 0x0000f338 [0x40010c0c]
+BSRR : 0x00000000 [0x40010c10]
+BRR : 0x00000000 [0x40010c14]
+LCKR : 0x00000000 [0x40010c18]
+
+>>>> gpioc
+GPIOC settings
+CRL : 0x44444444 [0x40011000]
+CRH : 0x44444444 [0x40011004]
+IDR : 0x00000000 [0x40011008]
+ODR : 0x00000000 [0x4001100c]
+BSRR : 0x00000000 [0x40011010]
+BRR : 0x00000000 [0x40011014]
+LCKR : 0x00000000 [0x40011018]
+
+>>>> gpioa
+GPIOA settings
+CRL : 0x08008887 [0x40010800]
+CRH : 0x7884b8b3 [0x40010804]
+IDR : 0x00005a4f [0x40010808]
+ODR : 0x0000a04f [0x4001080c]
+BSRR : 0x00000000 [0x40010810]
+BRR : 0x00000000 [0x40010814]
+LCKR : 0x00000000 [0x40010818]
+
+>>>> gpiod
+GPIOD settings
+CRL : 0x44444434 [0x40011400]
+CRH : 0x44444444 [0x40011404]
+IDR : 0x00000003 [0x40011408]
+ODR : 0x00000002 [0x4001140c]
+BSRR : 0x00000000 [0x40011410]
+BRR : 0x00000000 [0x40011414]
+LCKR : 0x00000000 [0x40011418]
+
+>>>> adc1
+ADC1 settings
+SR : 0x00000010 [0x40012400]
+CR1 : 0x00000000 [0x40012404]
+CR2 : 0x009e0001 [0x40012408]
+SMPR1 : 0x00000000 [0x4001240c]
+SMPR2 : 0x36c00000 [0x40012410]
+JOFR1 : 0x00000000 [0x40012414]
+JOFR2 : 0x00000000 [0x40012418]
+JOFR3 : 0x00000000 [0x4001241c]
+JOFR4 : 0x00000000 [0x40012420]
+HTR : 0x00000fff [0x40012424]
+LTR : 0x00000000 [0x40012428]
+SQR1 : 0x00000000 [0x4001242c]
+SQR2 : 0x00000000 [0x40012430]
+SQR3 : 0x00000008 [0x40012434]
+JSQR : 0x00000000 [0x40012438]
+JDR1 : 0x00000000 [0x4001243c]
+JDR2 : 0x00000000 [0x40012440]
+JDR3 : 0x00000000 [0x40012444]
+JDR4 : 0x00000000 [0x40012448]
+DR : 0x00000313 [0x4001244c]
+
+>>>> afio
+AFIO settings
+EVCR : 0x00000000 [0x40010000]
+MAPR : 0x02008000 [0x40010004]
+EXTICR1 : 0x00000000 [0x40010008]
+EXTICR2 : 0x00000011 [0x4001000c]
+EXTICR3 : 0x00000011 [0x40010010]
+EXTICR4 : 0x00000000 [0x40010014]
+MAPR2 : 0x00000000 [0x40010018]
+
+>>>> exti
+EXTI settings
+IMR : 0x0000033e [0x40010400]
+EMR : 0x00000000 [0x40010404]
+RTSR : 0x00000300 [0x40010408]
+FTSR : 0x0000033e [0x4001040c]
+SWIER : 0x00000000 [0x40010410]
+PR : 0x00000000 [0x40010414]
+
+>>>> rcc
+RCC settings
+CR : 0x03003d83 [0x40021000]
+CFGR : 0x0410000a [0x40021004]
+CIR : 0x00000000 [0x40021008]
+APB2RSTR : 0x00000000 [0x4002100c]
+APB1RSTR : 0x00000000 [0x40021010]
+AHBENR : 0x00000014 [0x40021014]
+APB2ENR : 0x00004a2d [0x40021018]
+APB1ENR : 0x20004006 [0x4002101c]
+BDCR : 0x00000000 [0x40021020]
+CSR : 0x0c000000 [0x40021024]
+CFGR2 : 0x00000000 [0x4002102c]
+
diff --git a/content/extra/dps8005/15v-off.txt b/content/extra/dps8005/15v-off.txt
new file mode 100644
index 0000000..20e2a2e
--- /dev/null
+++ b/content/extra/dps8005/15v-off.txt
@@ -0,0 +1,393 @@
+>>>> spi2
+SPI2 settings
+CR2 : 0x00000347 [0x40003800]
+CR1 : 0x00000000 [0x40003804]
+SR : 0x00000003 [0x40003808]
+DR : 0x000000ff [0x4000380c]
+CRCPR : 0x00000007 [0x40003810]
+RXCRCR : 0x00000000 [0x40003814]
+TXCRCR : 0x00000000 [0x40003818]
+
+>>>> dma
+DMA settings
+ISR : 0x00000000 [0x40020000]
+IFCR : 0x00000000 [0x40020004]
+CCR1 : 0x00000000 [0x40020008]
+CNDTR : 0x00000000 [0x40020084]
+CPAR1 : 0x00000000 [0x40020010]
+CMAR1 : 0x00000000 [0x40020014]
+CCR2 : 0x00000000 [0x4002001c]
+CNDTR : 0x00000000 [0x40020084]
+CPAR2 : 0x00000000 [0x40020024]
+CMAR2 : 0x00000000 [0x40020028]
+CCR3 : 0x00000000 [0x40020030]
+CNDTR : 0x00000000 [0x40020084]
+CPAR3 : 0x00000000 [0x40020038]
+CMAR3 : 0x00000000 [0x4002003c]
+CCR4 : 0x00000000 [0x40020044]
+CNDTR : 0x00000000 [0x40020084]
+CPAR4 : 0x00000000 [0x4002004c]
+CMAR4 : 0x00000000 [0x40020050]
+CCR5 : 0x00000000 [0x40020058]
+CNDTR : 0x00000000 [0x40020084]
+CPAR5 : 0x00000000 [0x40020060]
+CMAR5 : 0x00000000 [0x40020064]
+CCR6 : 0x00000000 [0x4002006c]
+CNDTR : 0x00000000 [0x40020084]
+CPAR6 : 0x00000000 [0x40020074]
+CMAR6 : 0x00000000 [0x40020078]
+CCR7 : 0x00000000 [0x40020080]
+CNDTR : 0x00000000 [0x40020084]
+CPAR7 : 0x00000000 [0x40020088]
+
+>>>> spi1
+SPI1 settings
+CR2 : 0x00000000 [0x40013000]
+CR1 : 0x00000000 [0x40013004]
+SR : 0x00000000 [0x40013008]
+DR : 0x00000000 [0x4001300c]
+CRCPR : 0x00000000 [0x40013010]
+RXCRCR : 0x00000000 [0x40013014]
+TXCRCR : 0x00000000 [0x40013018]
+
+>>>> tim4
+TIM4 settings
+CR1 : 0x00000081 [0x40000800]
+CR2 : 0x00000000 [0x40000804]
+SMC : 0x00000000 [0x40000808]
+DIER : 0x00000000 [0x4000080c]
+SR : 0x0000001f [0x40000810]
+EGR : 0x00000000 [0x40000814]
+CCMR1 : 0x00006800 [0x40000818]
+CCMR2 : 0x00000000 [0x4000081c]
+CCER : 0x00000010 [0x40000820]
+CNT : 0x00004e5a [0x40000824]
+PSC : 0x00000000 [0x40000828]
+ARR : 0x00005dbf [0x4000082c]
+RCR : 0x00000000 [0x40000830]
+CCR1 : 0x00000000 [0x40000834]
+CCR2 : 0x00004e20 [0x40000838]
+CCR3 : 0x00000000 [0x4000083c]
+CCR4 : 0x00000000 [0x40000840]
+BDTR : 0x00000000 [0x40000844]
+DCR : 0x00000000 [0x40000848]
+DMAR : 0x00000081 [0x4000084c]
+
+>>>> dac
+DAC settings
+CR : 0x00030003 [0x40007400]
+SWTRIGR : 0x00000000 [0x40007404]
+DHR12R1 : 0x00000000 [0x40007408]
+DHR12L1 : 0x00000000 [0x4000740c]
+DHR8R1 : 0x00000000 [0x40007410]
+DHR12R2 : 0x00000000 [0x40007414]
+DHR12L2 : 0x00000000 [0x40007418]
+DHR8R2 : 0x00000000 [0x4000741c]
+DHR12RD : 0x00000000 [0x40007420]
+DHR12LD : 0x00000000 [0x40007424]
+DHR8RD : 0x00000000 [0x40007428]
+DOR1 : 0x00000000 [0x4000742c]
+DOR2 : 0x00000000 [0x40007430]
+SR : 0x00000000 [0x40007434]
+
+>>>> gpio
+// PA0 O 1 OD (50 Mhz) U7
+gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_OPENDRAIN, GPIO0);
+
+// PA1 I 1 PuPd M2 button
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO1);
+gpio_set(GPIOA, GPIO1);
+
+// PA2 I 1 PuPd SEL button
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO2);
+gpio_set(GPIOA, GPIO2);
+
+// PA3 I 1 PuPd M1 button
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO3);
+gpio_set(GPIOA, GPIO3);
+
+// PA4 I 0 An DAC1_OUT TL594.2 (1IN-)
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_ANALOG, GPIO4);
+
+// PA5 I 0 An DAC2_OUT TL594.15 (2IN-)
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_ANALOG, GPIO5);
+
+// PA6 I 1 PuPd
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO6);
+gpio_set(GPIOA, GPIO6);
+
+// PA7 I 0 An ADC1_IN7 R30-U2.7:V_OUT-B (measures Vout)
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_ANALOG, GPIO7);
+
+// PA8 O 0 PP (50 Mhz) TFT.7 (not used by TFT)
+gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, GPIO8);
+
+// PA9 O 0 AF-PP (50 Mhz)
+gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO9);
+
+// PA10 I 0 PuPd
+gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, GPIO10);
+gpio_clear(GPIOA, GPIO10);
+
+// PA11 O 0 AF-PP (50 Mhz)
+gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO11);
+
+// PA12 I 1 Flt