HWA
Bare metal programming with style
sab_1.h
Go to the documentation of this file.
1 
2 /* This file is part of the HWA project.
3  * Copyright (c) 2021 Christophe Duparquet.
4  * All rights reserved. Read LICENSE.TXT for details.
5  */
6 
27 #define hw_class__sab
28 
29 /* Differences with STM32F103:
30  * cr1: over8
31  * cr3: onebit
32  */
33 
34 /* Hardware registers // Reset value
35  */
36 #define hw__sab_sr _r32, 0x00, 0x00000360, 0 // 0x00C0
37 #define hw__sab_dr _r32, 0x04, 0x000001FF, 0 // X
38 #define hw__sab_brr _r32, 0x08, 0x0000FFFF, 0 // 0
39 #define hw__sab_cr1 _r32, 0x0C, 0x0000BFFF, 0 // 0
40 #define hw__sab_cr2 _r32, 0x10, 0x00007F6F, 0 // 0
41 #define hw__sab_cr3 _r32, 0x14, 0x00000FFF, 0 // 0
42 #define hw__sab_gtpr _r32, 0x18, 0x0000FFFF, 0 // 0
43 
44 /* Logical registers
45  */
46 #define hw__sab_cts _cb1, sr, 1, 9
47 #define hw__sab_lbd _cb1, sr, 1, 8
48 #define hw__sab_txe _cb1, sr, 1, 7
49 #define hw__sab_tc _cb1, sr, 1, 6
50 #define hw__sab_rxne _cb1, sr, 1, 5
51 #define hw__sab_idle _cb1, sr, 1, 4
52 #define hw__sab_ore _cb1, sr, 1, 3
53 #define hw__sab_ne _cb1, sr, 1, 2
54 #define hw__sab_fe _cb1, sr, 1, 1
55 #define hw__sab_pe _cb1, sr, 1, 0
56 
57 #define hw__sab_divmantissa _cb1, brr, 12, 4
58 #define hw__sab_divfraction _cb1, brr, 4, 0
59 
60 #define hw__sab_over8 _cb1, cr1, 1, 15
61 #define hw__sab_ue _cb1, cr1, 1, 13
62 #define hw__sab_m _cb1, cr1, 1, 12
63 #define hw__sab_wake _cb1, cr1, 1, 11
64 #define hw__sab_pce _cb1, cr1, 1, 10
65 #define hw__sab_ps _cb1, cr1, 1, 9
66 #define hw__sab_pceps _cb1, cr1, 2, 9 /* convenient */
67 #define hw__sab_peie _cb1, cr1, 1, 8
68 #define hw__sab_txeie _cb1, cr1, 1, 7
69 #define hw__sab_tcie _cb1, cr1, 1, 6
70 #define hw__sab_rxneie _cb1, cr1, 1, 5
71 #define hw__sab_idleie _cb1, cr1, 1, 4
72 #define hw__sab_te _cb1, cr1, 1, 3
73 #define hw__sab_re _cb1, cr1, 1, 2
74 #define hw__sab_rwu _cb1, cr1, 1, 1
75 #define hw__sab_sbk _cb1, cr1, 1, 0
76 
77 #define hw__sab_linen _cb1, cr2, 1, 14
78 #define hw__sab_stop _cb1, cr2, 2, 12
79 #define hw__sab_clken _cb1, cr2, 1, 11
80 #define hw__sab_cpol _cb1, cr2, 1, 10
81 #define hw__sab_cpha _cb1, cr2, 1, 9
82 #define hw__sab_lbcl _cb1, cr2, 1, 8
83 #define hw__sab_lbdie _cb1, cr2, 1, 6
84 #define hw__sab_lbdl _cb1, cr2, 1, 5
85 #define hw__sab_add _cb1, cr2, 4, 0
86 
87 #define hw__sab_onebit _cb1, cr3, 1, 11
88 #define hw__sab_ctsie _cb1, cr3, 1, 10
89 #define hw__sab_ctse _cb1, cr3, 1, 9
90 #define hw__sab_rtse _cb1, cr3, 1, 8
91 #define hw__sab_dmat _cb1, cr3, 1, 7
92 #define hw__sab_dmar _cb1, cr3, 1, 6
93 #define hw__sab_scen _cb1, cr3, 1, 5
94 #define hw__sab_nack _cb1, cr3, 1, 4
95 #define hw__sab_hdsel _cb1, cr3, 1, 3
96 #define hw__sab_irlp _cb1, cr3, 1, 2
97 #define hw__sab_iren _cb1, cr3, 1, 1
98 #define hw__sab_eie _cb1, cr3, 1, 0
99 
100 #define hw__sab_gt _cb1, gtpr, 8, 8
101 #define hw__sab_psc _cb1, gtpr, 8, 0
102 
103 
104 #if !defined __ASSEMBLER__
105 
106 typedef struct {
107  hwa_r32_t brr ;
108  hwa_r32_t cr1 ;
109  hwa_r32_t cr2 ;
110  hwa_r32_t cr3 ;
111  hwa_r32_t gtpr ;
112 } hwa_sab_t ;
113 
114 #endif