blob: 02aed537bac2068b84379a4ed41e61e5315854fa (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
|
name "stm32h743"
title "STM32H743"
isa "armv7-m"
version "1.0"
author "Aidan MacDonald"
node FLASH {
title "Embedded flash memory"
addr 0x52002000
reg ACR 0x00 {
fld 5 3 WRHIGHFREQ
fld 3 0 LATENCY
}
}
node PWR {
title "Power control"
addr 0x58024800
reg CR1 0x00 {
fld 18 17 ALS
bit 16 AVDEN
fld 15 14 SVOS
bit 9 FLPS
bit 8 DBP
fld 7 5 PLS
bit 4 PVDE
bit 0 LPDS
}
reg CSR1 0x04 {
bit 16 AVDO
fld 15 14 ACTVOS
bit 13 ACTVOSRDY
bit 4 PVDO
}
reg CR3 0x0c {
bit 26 USB33RDY
bit 25 USBREGEN
bit 24 USB33DEN
bit 9 VBRS
bit 8 VBE
bit 2 SCUEN
bit 1 LDOEN
bit 0 BYPASS
}
reg D3CR 0x18 {
fld 15 14 VOS { enum VOS3 1; enum VOS2 2; enum VOS1 3; }
bit 13 VOSRDY
}
}
node RCC {
title "Reset and clock control"
addr 0x58024400
reg CR 0x00 {
bit 29 PLL3RDY
bit 28 PLL3ON
bit 27 PLL2RDY
bit 26 PLL2ON
bit 25 PLL1RDY
bit 24 PLL1ON
bit 19 HSECSSON
bit 18 HSEBYP
bit 17 HSERDY
bit 16 HSEON
bit 15 D2CKRDY
bit 14 D1CKRDY
bit 13 HSI48RDY
bit 12 HSI48ON
bit 9 CSIKERON
bit 8 CSIRDY
bit 7 CSION
bit 5 HSIDIVF
fld 4 3 HSIDIV
bit 2 HSIRDY
bit 1 HSIKERON
bit 0 HSION
}
reg CFGR 0x10 {
fld 31 29 MCO2 { enum SYSCLK 0; enum PLL2P 1; enum HSE 2; enum PLL1P 3; enum CSI 4; enum LSI 5 }
fld 28 25 MCO2PRE
fld 24 22 MCO1 { enum HSI 0; enum LSE 1; enum HSE 2; enum PLL1Q 3; enum HSI48 4 }
fld 21 18 MCO1PRE
bit 15 TIMPRE
bit 14 HRTIMSEL
fld 13 8 RTCPRE
bit 7 STOPKERWUCK
bit 6 STOPWUCK
fld 5 3 SWS
fld 2 0 SW { enum HSI 0; enum CSI 1; enum HSE 2; enum PLL1P 3; }
}
reg D1CFGR 0x18 {
fld 11 8 D1CPRE
fld 6 4 D1PPRE
fld 4 0 HPRE
}
reg D2CFGR 0x1c {
fld 10 8 D2PPRE2
fld 6 4 D2PPRE1
}
reg D3CFGR 0x20 {
fld 6 4 D3PPRE
}
reg PLLCKSELR 0x28 {
fld 25 20 DIVM3
fld 17 12 DIVM2
fld 9 4 DIVM1
fld 1 0 PLLSRC { enum HSI 0; enum CSI 1; enum HSE 2; enum NONE 3; }
}
reg PLLCFGR 0x2c {
bit 24 DIVR3EN
bit 23 DIVQ3EN
bit 22 DIVP3EN
bit 21 DIVR2EN
bit 20 DIVQ2EN
bit 19 DIVP2EN
bit 18 DIVR1EN
bit 17 DIVQ1EN
bit 16 DIVP1EN
fld 11 10 PLL3RGE { enum 1_2MHZ 0; enum 2_4MHz 1; enum 4_8MHz 2; enum 8_16MHz 3; }
bit 9 PLL3VCOSEL { enum WIDE 0; enum MEDIUM 1; }
bit 8 PLL3FRACEN
fld 7 6 PLL2RGE { enum 1_2MHZ 0; enum 2_4MHz 1; enum 4_8MHz 2; enum 8_16MHz 3; }
bit 5 PLL2VCOSEL { enum WIDE 0; enum MEDIUM 1; }
bit 4 PLL2FRACEN
fld 3 2 PLL1RGE { enum 1_2MHZ 0; enum 2_4MHz 1; enum 4_8MHz 2; enum 8_16MHz 3; }
bit 1 PLL1VCOSEL { enum WIDE 0; enum MEDIUM 1; }
bit 0 PLL1FRACEN
}
reg PLLxDIVR {
instance PLL1DIVR 0x30
instance PLL2DIVR 0x38
instance PLL3DIVR 0x40
fld 30 24 DIVR
fld 22 16 DIVQ
fld 15 9 DIVP
fld 8 0 DIVN
}
reg PLLxFRACR {
instance PLL1FRACR 0x34
instance PLL2FRACR 0x3c
instance PLL3FRACR 0x44
fld 15 3 FRACN
}
reg D1CCIPR 0x4c {
fld 29 28 CKPERSEL { enum HSI 0; enum CSI 1; enum HSE 2; }
bit 16 SDMMCSEL { enum PLL1Q 0; enum PLL2R 1; }
fld 5 4 QSPISEL { enum AHB 0; enum PLL1Q 1; enum PLL2R 2; enum PER 3; }
fld 1 0 FMCSEL { enum AHB 0; enum PLL1Q 1; enum PLL2R 2; enum PER 3; }
}
reg D2CCIP1R 0x50 {
bit 31 SWPSEL { enum APB1 0; enum HSI 1; }
fld 29 28 FDCANSEL { enum HSE 0; enum PLL1Q 1; enum PLL2Q 1; }
bit 24 DFSDM1SEL { enum APB2 0; enum SYSCLK 1; }
fld 21 20 SPDIFSEL { enum PLL1Q 0; enum PLL2R 1; enum PLL3R 2; enum HSI 3; }
fld 18 16 SPI45SEL { enum APB2 0; enum PLL2Q 1; enum PLL3Q 2; enum HSI 3;
enum CSI 4; enum HSE 5; }
fld 14 12 SPI123SEL { enum PLL1Q 0; enum PLL2P 1; enum PLL3P 2; enum I2SCKIN 3;
enum PER 4; }
fld 8 6 SAI23SEL { enum PLL1Q 0; enum PLL2P 1; enum PLL3P 2; enum I2SCKIN 4;
enum PER 4; }
fld 2 0 SAI1SEL { enum PLL1Q 0; enum PLL2P 1; enum PLL3P 2; enum I2SCKIN 4;
enum PER 4; }
}
reg D2CCIP2R 0x54 {
fld 30 28 LPTIM1SEL { enum APB1 0; enum PLL2P 1; enum PLL3R 2;
enum LSE 3; enum LSI 4; enum PER 5; }
fld 23 22 CECSEL { enum LSE 0; enum LSI 1; enum CSI 2; }
fld 21 20 USBSEL { enum DISABLE 0; enum PLL1Q 1; enum PLL3Q 2; enum HSI48 3; }
fld 13 12 I2C123SEL { enum APB1 0; enum PLL3R 1; enum HSI 2; enum CSI 3; }
fld 9 8 RNGSEL { enum HSI 0; enum PLL1Q 1; enum LSE 2; enum LSI 3; }
fld 5 3 USART16SEL { enum APB2 0; enum PLL2Q 1; enum PLL3Q 2;
enum HSI 3; enum CSI 4; enum LSE 5; }
fld 2 0 USART234578SEL { enum APB1 0; enum PLL2Q 1; enum PLL3Q 2;
enum HSI 3; enum CSI 4; enum LSE 5; }
}
reg D3CCIPR 0x58 {
fld 30 28 SPI6SEL { enum APB4 0; enum PLL2Q 1; enum PLL3Q 2;
enum HSI 3; enum CSI 4; enum HSE 5; }
fld 26 24 SAI4BSEL { enum PLL1Q 0; enum PLL2P 1; enum PLL3P 2;
enum I2S_CKIN 3; enum PER 4; }
fld 23 21 SAI4ASEL { enum PLL1Q 0; enum PLL2P 1; enum PLL3P 2;
enum I2S_CKIN 3; enum PER 4; }
fld 17 16 ADCSEL { enum PLL2P 0; enum PLL3R 1; enum PER 2; }
fld 15 13 LPTIM345SEL { enum APB4 0; enum PLL2P 1; enum PLL3R 2;
enum LSE 3; enum LSI 4; enum PER 5; }
fld 12 10 LPTIM2SEL { enum APB4 0; enum PLL2P 1; enum PLL3R 2;
enum LSE 3; enum LSI 4; enum PER 5; }
fld 9 8 I2C4SEL { enum APB4 0; enum PLL3R 1; enum HSI 2; enum CSI 3; }
fld 2 0 LPUART1SEL { enum APB4 0; enum PLL2Q 1; enum PLL3Q 2;
enum HSI 3; enum CSI 4; enum LSE 5; }
}
reg BDCR 0x70 {
bit 16 BDRST
bit 15 RTCEN
fld 9 8 RTCSEL { enum NONE 0; enum LSE 1; enum LSI 2; enum HSE 3; }
bit 6 LSECSSD
bit 5 LSECSSON
fld 4 3 LSEDRV { enum LOW 0; enum MED_LOW 1; enum MED_HIGH 2; enum HIGH 3; }
bit 2 LSEBYP
bit 1 LSERDY
bit 0 LSEON
}
reg CSR 0x74 {
bit 1 LSIRDY
bit 0 LSION
}
reg AHB3EN {
instance AHB3ENR 0xd4
instance AHB3LPENR 0xfc
# note:
# - bits 8 and 28-31 exist in AHB3LPENR only
# - all other bits are common
bit 31 AXISRAMEN
bit 30 ITCMEN
bit 29 DTCM2EN
bit 28 D1DTCM1EN
bit 16 SDMMC1EN
bit 14 QSPIEN
bit 12 FMCEN
bit 8 FLASHEN
bit 5 JPEGDECEN
bit 4 DMA2DEN
bit 0 MDMAEN
}
reg AHB4EN {
instance AHB4ENR 0xe0
instance AHB4LPENR 0x108
# note:
# - bit 29 exists in AHB4LPENR only
# - bit 25 exists in AHB4ENR only
# - all other bits are common
bit 29 SRAM4EN
bit 28 BKPRAMEN
bit 25 HSEMEN
bit 24 ADC3EN
bit 21 BDMAEN
bit 19 CRCEN
bit 10 GPIOKEN
bit 9 GPIOJEN
bit 8 GPIOIEN
bit 7 GPIOHEN
bit 6 GPIOGEN
bit 5 GPIOFEN
bit 4 GPIOEEN
bit 3 GPIODEN
bit 2 GPIOCEN
bit 1 GPIOBEN
bit 0 GPIOAEN
}
reg APB3EN {
instance APB3ENR 0xe4
instance APB3LPENR 0x10c
bit 6 WWDG1EN
bit 3 LTDCEN
}
reg APB1LEN {
instance APB1LENR 0xe8
instance APB1LLPENR 0x110
bit 31 UART8EN
bit 30 UART7EN
bit 29 DAC12EN
bit 27 CECEN
bit 23 I2C3EN
bit 22 I2C2EN
bit 21 I2C1EN
bit 20 UART5EN
bit 19 UART4EN
bit 18 USART3EN
bit 17 USART2EN
bit 16 SPDIFRXEN
bit 15 SPI3EN
bit 14 SPI2EN
bit 9 LPTIM1EN
bit 8 TIM14EN
bit 7 TIM13EN
bit 6 TIM12EN
bit 5 TIM7EN
bit 4 TIM6EN
bit 3 TIM5EN
bit 2 TIM4EN
bit 1 TIM3EN
bit 0 TIM2EN
}
reg APB1HEN {
instance APB1HENR 0xec
instance APB1HLPENR 0x114
bit 8 FDCANEN
bit 5 MDIOSEN
bit 4 OPAMPEN
bit 2 SWPEN
bit 1 CRSEN
}
reg APB2EN {
instance APB2ENR 0xf0
instance APB2LPENR 0x118
bit 29 HRTIMEN
bit 28 DFSDM1EN
bit 24 SAI3EN
bit 23 SAI2EN
bit 22 SAI1EN
bit 20 SPI5EN
bit 18 TIM17EN
bit 17 TIM16EN
bit 16 TIM15EN
bit 13 SPI4EN
bit 12 SPI1EN
bit 5 USART6EN
bit 4 USART1EN
bit 1 TIM8EN
bit 0 TIM1EN
}
reg APB4EN {
instance APB4ENR 0xf4
instance APB4LPENR 0x11c
bit 21 SAI4EN
bit 16 RTCAPBEN
bit 15 VREFEN
bit 14 COMP12EN
bit 12 LPTIM5EN
bit 11 LPTIM4EN
bit 10 LPTIM3EN
bit 9 LPTIM2EN
bit 7 I2C4EN
bit 5 SPI6EN
bit 3 LPUART1EN
bit 1 SYSCFGEN
}
}
node GPIO {
title "General-purpose I/Os"
instance 0x58020000 0x400 11
reg MODER 0x00
reg OTYPER 0x04
reg OSPEEDR 0x08
reg PUPDR 0x0c
reg IDR 0x10
reg ODR 0x14
reg BSRR 0x18
reg LCKR 0x1c
reg AFRL 0x20
reg AFRH 0x24
}
node SYSCFG {
title "System configuration controller"
addr 0x58000400
reg PWRCFG 0x2c {
bit 0 ODEN
}
}
node FMC {
title "Flexible memory controller"
addr 0x52004000
reg BCR {
instance 0x000 0x8 4
bit 31 FMCEN
fld 25 24 BMAP
bit 21 WFDIS
}
reg SDCR {
instance 0x140 0x4 2
fld 14 13 RPIPE
bit 12 RBURST
fld 11 10 SDCLK
bit 9 WP
fld 8 7 CAS
bit 6 NB
fld 5 4 MWID
fld 3 2 NR
fld 1 0 NC
}
reg SDTR {
instance 0x148 0x4 2
fld 27 24 TRCD
fld 23 20 TRP
fld 19 16 TWR
fld 15 12 TRC
fld 11 8 TRAS
fld 7 4 TXSR
fld 3 0 TMRD
}
reg SDCMR 0x150 {
fld 22 9 MRD
fld 8 5 NRFS
bit 4 CTB1
bit 3 CTB2
fld 2 0 MODE
}
reg SDRTR 0x154 {
bit 14 REIE
fld 13 1 COUNT
bit 0 CRE
}
reg SDSR 0x158 {
fld 4 3 MODES2
fld 2 1 MODES1
bit 0 RE
}
}
node RTC {
title "Real time clock"
addr 0x58004000
reg TR {
instance TR 0x00
instance TSTR 0x30
bit 22 PM
fld 21 20 HT
fld 19 16 HU
fld 14 12 MNT
fld 11 8 MNU
fld 6 4 ST
fld 3 0 SU
}
reg DR {
instance DR 0x04
instance DRTR 0x34
fld 23 20 YT
fld 19 16 YU
fld 15 13 WDU
bit 12 MT
fld 11 8 MU
fld 5 4 DT
fld 3 0 DU
}
reg CR 0x08 {
bit 24 ITSE
bit 23 COE
fld 22 21 OSEL { enum DISABLED 0; enum ALARM_A 1; enum ALARM_B 2; enum WAKEUP 3; }
bit 20 POL
bit 19 COSEL
bit 18 BKP
bit 17 SUB1H
bit 16 ADD1H
bit 15 TSIE
bit 14 WUTIE
bit 13 ALRBIE
bit 12 ALRAIE
bit 11 TSE
bit 10 WUTE
bit 9 ALRBE
bit 8 ALRAE
bit 6 FMT
bit 5 BYPSHAD
bit 4 REFCKON
bit 3 TSEDGE
bit 2 0 WUCKSEL { enum RTC_16 0; enum RTC_8 1; enum RTC_4 2; enum RTC_2 3;
enum CK_SPRE 4; enum CK_SPRE_ADDWUT 6; }
}
reg ISR 0x0c {
bit 17 ITSF
bit 16 RECALPF
bit 15 TAMP3F
bit 14 TAMP2F
bit 13 TAMP1F
bit 12 TSOVF
bit 11 TSF
bit 10 WUTF
bit 9 ALRBF
bit 8 ALRAF
bit 7 INIT
bit 6 INITF
bit 5 RSF
bit 4 INITS
bit 3 SHPF
bit 2 WUTWF
bit 1 ALRBWF
bit 0 ALRAWF
}
reg PRER 0x10 {
fld 22 16 PREDIV_A
fld 14 0 PREDIV_S
}
reg WPR 0x24 {
fld 7 0 KEY { enum KEY1 0xCA; enum KEY2 0x53; }
}
reg SSR {
instance SSR 0x28
instance TSSSR 0x38
fld 15 0 SS
}
reg OR 0x4c {
bit 1 RTC_OUT_RMP
bit 0 RTC_ALARM_TYPE { enum OPEN_DRAIN 0; enum PUSH_PULL 1; }
}
reg BKPR {
instance 0x50 0x4 32
}
}
node SPI {
title "Serial peripheral interface"
instance nochild SPI1 0x40013000
instance nochild SPI2 0x40003800
instance nochild SPI3 0x40003c00
instance nochild SPI4 0x40013400
instance nochild SPI5 0x40015000
instance nochild SPI6 0x58001400
instance floating
reg CR1 0x00 {
bit 16 IO_LOCK
bit 15 TCRCINI
bit 14 RCRCINI
bit 13 CRC33_17
bit 12 SSI
bit 11 HDDIR
bit 10 CSUSP
bit 9 CSTART
bit 8 MASRX
bit 0 SPE
}
reg CR2 0x04 {
fld 31 16 TSER
fld 15 0 TSIZE
}
reg CFG1 0x08 {
fld 30 28 MBR
bit 22 CRCEN
fld 20 16 CRCSIZE
bit 15 TXDMAEN
bit 14 RXDMAEN
fld 12 11 UDRDET
fld 10 9 UDRCFG
fld 8 5 FTHLV
fld 4 0 DSIZE
}
reg CFG2 0x0c {
bit 31 AFCNTR
bit 30 SSOM
bit 29 SSOE
bit 28 SSIOP
bit 26 SSM { enum SS_PAD 0; enum SSI_BIT 1; }
bit 25 CPOL
bit 24 CPHA
bit 23 LSBFIRST
bit 22 MASTER
fld 21 19 SP { enum MOTOROLA 0; enum TI 1; }
fld 18 17 COMM { enum DUPLEX 0; enum TXONLY 1; enum RXONLY 2; enum HALF_DUPLEX 3; }
bit 15 IOSWP
fld 7 4 MIDI
fld 3 0 MSSI
}
reg IER 0x10 {
bit 10 TSERFIE
bit 9 MODFIE
bit 8 TIFREIE
bit 7 CRCEIE
bit 6 OVRIE
bit 5 UDRIE
bit 4 TXTFIE
bit 3 EOTIE
bit 2 DXPIE
bit 1 TXPIE
bit 0 RXPIE
}
reg SR 0x14 {
fld 31 16 CTSIZE
bit 15 RXWNE
fld 14 13 RXPLVL
bit 12 TXC
bit 11 SUSP
bit 10 TSERF
bit 9 MODF
bit 8 TIFRE
bit 7 CRCE
bit 6 OVR
bit 5 UDR
bit 4 TXTF
bit 3 EOT
bit 2 DXP
bit 1 TXP
bit 0 RXP
}
reg IFCR 0x18 {
bit 11 SUSPC
bit 10 TSERFC
bit 9 MODFC
bit 8 TIFREC
bit 7 CRCEC
bit 6 OVRC
bit 5 UDRC
bit 4 TXTFC
bit 3 EOTC
}
reg 8 TXDR8 0x20
reg 16 TXDR16 0x20
reg 32 TXDR32 0x20
reg 8 RXDR8 0x30
reg 16 RXDR16 0x30
reg 32 RXDR32 0x30
reg CRCPOLY 0x40
reg TXCRC 0x44
reg RXCRC 0x48
reg UDRDR 0x4c
reg I2SCFGR 0x50 {
bit 25 MCKOE
bit 24 ODD
fld 23 16 I2SDIV
bit 14 DATFMT { enum RIGHT_ALIGNED 0; enum LEFT_ALIGNED 1; }
bit 13 WSINV
bit 12 FIXCH
bit 11 CKPOL
bit 10 CHLEN { enum 16BIT 0; enum 32BIT 1; }
fld 9 8 DATLEN { enum 16BIT 0; enum 24BIT 1; enum 32BIT 2; }
bit 7 PCMSYNC { enum SHORT 0; enum LONG 1; }
fld 5 4 I2SSTD { enum I2S 0; enum MSB_JUSTIFIED 1; enum LSB_JUSTIFIED 2; enum PCM 3; }
fld 3 1 I2SCFG { enum SLAVE_TX 0; enum SLAVE_RX 1;
enum MASTER_TX 2; enum MASTER_RX 3;
enum SLAVE_DUPLEX 4; enum MASTER_DUPLEX 5; }
bit 0 I2SMOD
}
}
|