OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-3.0/] [packages/] [hal/] [cortexm/] [stm32/] [var/] [current/] [include/] [var_io.h] - Blame information for rev 786

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 786 skrzyp
#ifndef CYGONCE_HAL_VAR_IO_H
2
#define CYGONCE_HAL_VAR_IO_H
3
//=============================================================================
4
//
5
//      var_io.h
6
//
7
//      Variant specific registers
8
//
9
//=============================================================================
10
// ####ECOSGPLCOPYRIGHTBEGIN####                                            
11
// -------------------------------------------                              
12
// This file is part of eCos, the Embedded Configurable Operating System.   
13
// Copyright (C) 2008, 2009 Free Software Foundation, Inc.                        
14
//
15
// eCos is free software; you can redistribute it and/or modify it under    
16
// the terms of the GNU General Public License as published by the Free     
17
// Software Foundation; either version 2 or (at your option) any later      
18
// version.                                                                 
19
//
20
// eCos is distributed in the hope that it will be useful, but WITHOUT      
21
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or    
22
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License    
23
// for more details.                                                        
24
//
25
// You should have received a copy of the GNU General Public License        
26
// along with eCos; if not, write to the Free Software Foundation, Inc.,    
27
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.            
28
//
29
// As a special exception, if other files instantiate templates or use      
30
// macros or inline functions from this file, or you compile this file      
31
// and link it with other works to produce a work based on this file,       
32
// this file does not by itself cause the resulting work to be covered by   
33
// the GNU General Public License. However the source code for this file    
34
// must still be made available in accordance with section (3) of the GNU   
35
// General Public License v2.                                               
36
//
37
// This exception does not invalidate any other reasons why a work based    
38
// on this file might be covered by the GNU General Public License.         
39
// -------------------------------------------                              
40
// ####ECOSGPLCOPYRIGHTEND####                                              
41
//=============================================================================
42
//#####DESCRIPTIONBEGIN####
43
//
44
// Author(s):   nickg
45
// Date:        2008-07-30
46
// Purpose:     STM32 variant specific registers
47
// Description: 
48
// Usage:       #include <cyg/hal/var_io.h>
49
//
50
//####DESCRIPTIONEND####
51
//
52
//=============================================================================
53
 
54
#include <pkgconf/hal_cortexm_stm32.h>
55
 
56
#include <cyg/hal/plf_io.h>
57
 
58
//=============================================================================
59
// Peripherals
60
 
61
#define CYGHWR_HAL_STM32_TIM2           0x40000000
62
#define CYGHWR_HAL_STM32_TIM3           0x40000400
63
#define CYGHWR_HAL_STM32_TIM4           0x40000800
64
#define CYGHWR_HAL_STM32_TIM5           0x40000C00
65
#define CYGHWR_HAL_STM32_TIM6           0x40001000
66
#define CYGHWR_HAL_STM32_TIM7           0x40001400
67
#define CYGHWR_HAL_STM32_RTC            0x40002800
68
#define CYGHWR_HAL_STM32_WWDG           0x40002C00
69
#define CYGHWR_HAL_STM32_IWDG           0x40003000
70
#define CYGHWR_HAL_STM32_SPI2           0x40003800
71
#define CYGHWR_HAL_STM32_SPI3           0x40003C00
72
#define CYGHWR_HAL_STM32_UART2          0x40004400
73
#define CYGHWR_HAL_STM32_UART3          0x40004800
74
#define CYGHWR_HAL_STM32_UART4          0x40004C00
75
#define CYGHWR_HAL_STM32_UART5          0x40005000
76
#define CYGHWR_HAL_STM32_I2C1           0x40005400
77
#define CYGHWR_HAL_STM32_I2C2           0x40005800
78
#define CYGHWR_HAL_STM32_USB            0x40005C00
79
#define CYGHWR_HAL_STM32_USB_CAN_SRAM   0x40006000
80
#define CYGHWR_HAL_STM32_BXCAN          0x40006400
81
#define CYGHWR_HAL_STM32_BKP            0x40006C00
82
#define CYGHWR_HAL_STM32_PWR            0x40007000
83
#define CYGHWR_HAL_STM32_DAC            0x40007400
84
#define CYGHWR_HAL_STM32_AFIO           0x40010000
85
#define CYGHWR_HAL_STM32_EXTI           0x40010400
86
#define CYGHWR_HAL_STM32_GPIOA          0x40010800
87
#define CYGHWR_HAL_STM32_GPIOB          0x40010C00
88
#define CYGHWR_HAL_STM32_GPIOC          0x40011000
89
#define CYGHWR_HAL_STM32_GPIOD          0x40011400
90
#define CYGHWR_HAL_STM32_GPIOE          0x40011800
91
#define CYGHWR_HAL_STM32_GPIOF          0x40011C00
92
#define CYGHWR_HAL_STM32_GPIOG          0x40012000
93
#define CYGHWR_HAL_STM32_ADC1           0x40012400
94
#define CYGHWR_HAL_STM32_ADC2           0x40012800
95
#define CYGHWR_HAL_STM32_TIM1           0x40012C00
96
#define CYGHWR_HAL_STM32_SPI1           0x40013000
97
#define CYGHWR_HAL_STM32_TIM8           0x40013400
98
#define CYGHWR_HAL_STM32_UART1          0x40013800
99
#define CYGHWR_HAL_STM32_ADC3           0x40013C00
100
#define CYGHWR_HAL_STM32_SDIO           0x40018000
101
#define CYGHWR_HAL_STM32_DMA1           0x40020000
102
#define CYGHWR_HAL_STM32_DMA2           0x40020400
103
#define CYGHWR_HAL_STM32_RCC            0x40021000
104
#define CYGHWR_HAL_STM32_FLASH          0x40022000
105
#define CYGHWR_HAL_STM32_CRC            0x40023000
106
 
107
#define CYGHWR_HAL_STM32_FSMC           0xA0000000
108
 
109
//=============================================================================
110
// Device signature and ID registers
111
 
112
#define CYGHWR_HAL_STM32_DEV_SIG                0x1FFFF7E0
113
#define CYGHWR_HAL_STM32_DEV_SIG_RSIZE(__s)     (((__s)>>16)&0xFFFF)
114
#define CYGHWR_HAL_STM32_DEV_SIG_FSIZE(__s)     ((__s)&0xFFFF)
115
 
116
#define CYGHWR_HAL_STM32_MCU_ID                 0xe0042000
117
#define CYGHWR_HAL_STM32_MCU_ID_DEV(__x)        ((__x)&0xFFF)
118
#define CYGHWR_HAL_STM32_MCU_ID_DEV_MEDIUM      0x410
119
#define CYGHWR_HAL_STM32_MCU_ID_DEV_HIGH        0x414
120
#define CYGHWR_HAL_STM32_MCU_ID_REV(__x)        (((__x)>>16)&0xFFFF)
121
 
122
//=============================================================================
123
// RCC
124
//
125
// Not all registers are described here
126
 
127
#define CYGHWR_HAL_STM32_RCC_CR                 0x00
128
#define CYGHWR_HAL_STM32_RCC_CFGR               0x04
129
#define CYGHWR_HAL_STM32_RCC_CIR                0x08
130
#define CYGHWR_HAL_STM32_RCC_APB2RSTR           0x0C
131
#define CYGHWR_HAL_STM32_RCC_APB1RSTR           0x10
132
#define CYGHWR_HAL_STM32_RCC_AHBENR             0x14
133
#define CYGHWR_HAL_STM32_RCC_APB2ENR            0x18
134
#define CYGHWR_HAL_STM32_RCC_APB1ENR            0x1C
135
#define CYGHWR_HAL_STM32_RCC_BDCR               0x20
136
#define CYGHWR_HAL_STM32_RCC_CSR                0x24
137
 
138
#define CYGHWR_HAL_STM32_RCC_CR_HSION           BIT_(0)
139
#define CYGHWR_HAL_STM32_RCC_CR_HSIRDY          BIT_(1)
140
#define CYGHWR_HAL_STM32_RCC_CR_HSITRIM         MASK_(3,5)
141
#define CYGHWR_HAL_STM32_RCC_CR_HSICAL          MASK_(8,8)
142
#define CYGHWR_HAL_STM32_RCC_CR_HSEON           BIT_(16)
143
#define CYGHWR_HAL_STM32_RCC_CR_HSERDY          BIT_(17)
144
#define CYGHWR_HAL_STM32_RCC_CR_HSEBYP          BIT_(18)
145
#define CYGHWR_HAL_STM32_RCC_CR_CSSON           BIT_(19)
146
#define CYGHWR_HAL_STM32_RCC_CR_PLLON           BIT_(24)
147
#define CYGHWR_HAL_STM32_RCC_CR_PLLRDY          BIT_(25)
148
 
149
#define CYGHWR_HAL_STM32_RCC_CFGR_SW_HSI        VALUE_(0,0)
150
#define CYGHWR_HAL_STM32_RCC_CFGR_SW_HSE        VALUE_(0,1)
151
#define CYGHWR_HAL_STM32_RCC_CFGR_SW_PLL        VALUE_(0,2)
152
#define CYGHWR_HAL_STM32_RCC_CFGR_SW_XXX        VALUE_(0,3)
153
#define CYGHWR_HAL_STM32_RCC_CFGR_SWS_HSI       VALUE_(2,0)
154
#define CYGHWR_HAL_STM32_RCC_CFGR_SWS_HSE       VALUE_(2,1)
155
#define CYGHWR_HAL_STM32_RCC_CFGR_SWS_PLL       VALUE_(2,2)
156
#define CYGHWR_HAL_STM32_RCC_CFGR_SWS_XXX       VALUE_(2,3)
157
#define CYGHWR_HAL_STM32_RCC_CFGR_HPRE_1        VALUE_(4,0)
158
#define CYGHWR_HAL_STM32_RCC_CFGR_HPRE_2        VALUE_(4,8)
159
#define CYGHWR_HAL_STM32_RCC_CFGR_HPRE_4        VALUE_(4,9)
160
#define CYGHWR_HAL_STM32_RCC_CFGR_HPRE_8        VALUE_(4,10)
161
#define CYGHWR_HAL_STM32_RCC_CFGR_HPRE_16       VALUE_(4,11)
162
#define CYGHWR_HAL_STM32_RCC_CFGR_HPRE_64       VALUE_(4,12)
163
#define CYGHWR_HAL_STM32_RCC_CFGR_HPRE_128      VALUE_(4,13)
164
#define CYGHWR_HAL_STM32_RCC_CFGR_HPRE_256      VALUE_(4,14)
165
#define CYGHWR_HAL_STM32_RCC_CFGR_HPRE_512      VALUE_(4,15)
166
#define CYGHWR_HAL_STM32_RCC_CFGR_PPRE1_1       VALUE_(8,0)
167
#define CYGHWR_HAL_STM32_RCC_CFGR_PPRE1_2       VALUE_(8,4)
168
#define CYGHWR_HAL_STM32_RCC_CFGR_PPRE1_4       VALUE_(8,5)
169
#define CYGHWR_HAL_STM32_RCC_CFGR_PPRE1_8       VALUE_(8,6)
170
#define CYGHWR_HAL_STM32_RCC_CFGR_PPRE1_16      VALUE_(8,7)
171
#define CYGHWR_HAL_STM32_RCC_CFGR_PPRE2_1       VALUE_(11,0)
172
#define CYGHWR_HAL_STM32_RCC_CFGR_PPRE2_2       VALUE_(11,4)
173
#define CYGHWR_HAL_STM32_RCC_CFGR_PPRE2_4       VALUE_(11,5)
174
#define CYGHWR_HAL_STM32_RCC_CFGR_PPRE2_8       VALUE_(11,6)
175
#define CYGHWR_HAL_STM32_RCC_CFGR_PPRE2_16      VALUE_(11,7)
176
#define CYGHWR_HAL_STM32_RCC_CFGR_ADCPRE_2      VALUE_(14,0)
177
#define CYGHWR_HAL_STM32_RCC_CFGR_ADCPRE_4      VALUE_(14,1)
178
#define CYGHWR_HAL_STM32_RCC_CFGR_ADCPRE_6      VALUE_(14,2)
179
#define CYGHWR_HAL_STM32_RCC_CFGR_ADCPRE_8      VALUE_(14,3)
180
#define CYGHWR_HAL_STM32_RCC_CFGR_ADCPRE_XXX    VALUE_(14,3)
181
#define CYGHWR_HAL_STM32_RCC_CFGR_PLLSRC_HSI    0
182
#define CYGHWR_HAL_STM32_RCC_CFGR_PLLSRC_HSE    BIT_(16)
183
#define CYGHWR_HAL_STM32_RCC_CFGR_PLLXTPRE      BIT_(17)
184
#define CYGHWR_HAL_STM32_RCC_CFGR_PLLMUL(__x)   VALUE_(18,(__x)-2)
185
#define CYGHWR_HAL_STM32_RCC_CFGR_USBPRE        BIT_(22)
186
#define CYGHWR_HAL_STM32_RCC_CFGR_MCO_NONE      VALUE_(24,0)
187
#define CYGHWR_HAL_STM32_RCC_CFGR_MCO_SYSCLK    VALUE_(24,4)
188
#define CYGHWR_HAL_STM32_RCC_CFGR_MCO_HSI       VALUE_(24,5)
189
#define CYGHWR_HAL_STM32_RCC_CFGR_MCO_HSE       VALUE_(24,6)
190
#define CYGHWR_HAL_STM32_RCC_CFGR_MCO_PLL       VALUE_(24,7)
191
 
192
 
193
#define CYGHWR_HAL_STM32_RCC_AHBENR_DMA1        BIT_(0)
194
#define CYGHWR_HAL_STM32_RCC_AHBENR_DMA2        BIT_(1)
195
#define CYGHWR_HAL_STM32_RCC_AHBENR_SRAM        BIT_(2)
196
#define CYGHWR_HAL_STM32_RCC_AHBENR_FLITF       BIT_(4)
197
#define CYGHWR_HAL_STM32_RCC_AHBENR_CRC         BIT_(6)
198
#define CYGHWR_HAL_STM32_RCC_AHBENR_FSMC        BIT_(8)
199
#define CYGHWR_HAL_STM32_RCC_AHBENR_SDIO        BIT_(10)
200
 
201
#define CYGHWR_HAL_STM32_RCC_APB2ENR_AFIO       BIT_(0)
202
#define CYGHWR_HAL_STM32_RCC_APB2ENR_IOPA       BIT_(2)
203
#define CYGHWR_HAL_STM32_RCC_APB2ENR_IOPB       BIT_(3)
204
#define CYGHWR_HAL_STM32_RCC_APB2ENR_IOPC       BIT_(4)
205
#define CYGHWR_HAL_STM32_RCC_APB2ENR_IOPD       BIT_(5)
206
#define CYGHWR_HAL_STM32_RCC_APB2ENR_IOPE       BIT_(6)
207
#define CYGHWR_HAL_STM32_RCC_APB2ENR_IOPF       BIT_(7)
208
#define CYGHWR_HAL_STM32_RCC_APB2ENR_IOPG       BIT_(8)
209
#define CYGHWR_HAL_STM32_RCC_APB2ENR_ADC1       BIT_(9)
210
#define CYGHWR_HAL_STM32_RCC_APB2ENR_ADC2       BIT_(10)
211
#define CYGHWR_HAL_STM32_RCC_APB2ENR_TIM1       BIT_(11)
212
#define CYGHWR_HAL_STM32_RCC_APB2ENR_SPI1       BIT_(12)
213
#define CYGHWR_HAL_STM32_RCC_APB2ENR_TIM8       BIT_(13)
214
#define CYGHWR_HAL_STM32_RCC_APB2ENR_UART1      BIT_(14)
215
#define CYGHWR_HAL_STM32_RCC_APB2ENR_ADC3       BIT_(15)
216
 
217
 
218
#define CYGHWR_HAL_STM32_RCC_APB1ENR_TIM2       BIT_(0)
219
#define CYGHWR_HAL_STM32_RCC_APB1ENR_TIM3       BIT_(1)
220
#define CYGHWR_HAL_STM32_RCC_APB1ENR_TIM4       BIT_(2)
221
#define CYGHWR_HAL_STM32_RCC_APB1ENR_TIM5       BIT_(3)
222
#define CYGHWR_HAL_STM32_RCC_APB1ENR_TIM6       BIT_(4)
223
#define CYGHWR_HAL_STM32_RCC_APB1ENR_TIM7       BIT_(5)
224
#define CYGHWR_HAL_STM32_RCC_APB1ENR_WWDG       BIT_(11)
225
#define CYGHWR_HAL_STM32_RCC_APB1ENR_SPI2       BIT_(14)
226
#define CYGHWR_HAL_STM32_RCC_APB1ENR_SPI3       BIT_(15)
227
#define CYGHWR_HAL_STM32_RCC_APB1ENR_UART2      BIT_(17)
228
#define CYGHWR_HAL_STM32_RCC_APB1ENR_UART3      BIT_(18)
229
#define CYGHWR_HAL_STM32_RCC_APB1ENR_UART4      BIT_(19)
230
#define CYGHWR_HAL_STM32_RCC_APB1ENR_UART5      BIT_(20)
231
#define CYGHWR_HAL_STM32_RCC_APB1ENR_I2C1       BIT_(21)
232
#define CYGHWR_HAL_STM32_RCC_APB1ENR_I2C2       BIT_(22)
233
#define CYGHWR_HAL_STM32_RCC_APB1ENR_USB        BIT_(23)
234
#define CYGHWR_HAL_STM32_RCC_APB1ENR_CAN        BIT_(25)
235
#define CYGHWR_HAL_STM32_RCC_APB1ENR_BKP        BIT_(27)
236
#define CYGHWR_HAL_STM32_RCC_APB1ENR_PWR        BIT_(28)
237
#define CYGHWR_HAL_STM32_RCC_APB1ENR_DAC        BIT_(29)
238
 
239
#define CYGHWR_HAL_STM32_RCC_CSR_LSION          BIT_(0)
240
#define CYGHWR_HAL_STM32_RCC_CSR_LSIRDY         BIT_(1)
241
#define CYGHWR_HAL_STM32_RCC_CSR_RMVF           BIT_(24)
242
#define CYGHWR_HAL_STM32_RCC_CSR_PINRSTF        BIT_(26)
243
#define CYGHWR_HAL_STM32_RCC_CSR_PORRSTF        BIT_(27)
244
#define CYGHWR_HAL_STM32_RCC_CSR_SFTRSTF        BIT_(28)
245
#define CYGHWR_HAL_STM32_RCC_CSR_IWDGRSTF       BIT_(29)
246
#define CYGHWR_HAL_STM32_RCC_CSR_WWDGRSTF       BIT_(30)
247
#define CYGHWR_HAL_STM32_RCC_CSR_LPWRRSTF       BIT_(31)
248
 
249
#define CYGHWR_HAL_STM32_RCC_BDCR_LSEON         BIT_(0)
250
#define CYGHWR_HAL_STM32_RCC_BDCR_LSERDY        BIT_(1)
251
#define CYGHWR_HAL_STM32_RCC_BDCR_LSEBYP        BIT_(2)
252
#define CYGHWR_HAL_STM32_RCC_BDCR_RTCSEL_NO     VALUE_(8,0)
253
#define CYGHWR_HAL_STM32_RCC_BDCR_RTCSEL_LSE    VALUE_(8,1)
254
#define CYGHWR_HAL_STM32_RCC_BDCR_RTCSEL_LSI    VALUE_(8,2)
255
#define CYGHWR_HAL_STM32_RCC_BDCR_RTCSEL_HSE    VALUE_(8,3)
256
#define CYGHWR_HAL_STM32_RCC_BDCR_RTCSEL_XXX    VALUE_(8,3)
257
#define CYGHWR_HAL_STM32_RCC_BDCR_RTCEN         BIT_(15)
258
#define CYGHWR_HAL_STM32_RCC_BDCR_BDRST         BIT_(16)
259
 
260
//=============================================================================
261
// Realtime Clock
262
 
263
#define CYGHWR_HAL_STM32_RTC_CRH                0x00
264
#define CYGHWR_HAL_STM32_RTC_CRL                0x04
265
#define CYGHWR_HAL_STM32_RTC_PRLH               0x08
266
#define CYGHWR_HAL_STM32_RTC_PRLL               0x0C
267
#define CYGHWR_HAL_STM32_RTC_DIVH               0x10
268
#define CYGHWR_HAL_STM32_RTC_DIVL               0x14
269
#define CYGHWR_HAL_STM32_RTC_CNTH               0x18
270
#define CYGHWR_HAL_STM32_RTC_CNTL               0x1C
271
#define CYGHWR_HAL_STM32_RTC_ALRH               0x20
272
#define CYGHWR_HAL_STM32_RTC_ALRL               0x24
273
 
274
// CRH fields
275
 
276
#define CYGHWR_HAL_STM32_RTC_CRH_SECIE          BIT_(0)
277
#define CYGHWR_HAL_STM32_RTC_CRH_ALRIE          BIT_(1)
278
#define CYGHWR_HAL_STM32_RTC_CRH_OWIE           BIT_(2)
279
 
280
// CRL fields
281
 
282
#define CYGHWR_HAL_STM32_RTC_CRL_SECF           BIT_(0)
283
#define CYGHWR_HAL_STM32_RTC_CRL_ALRF           BIT_(1)
284
#define CYGHWR_HAL_STM32_RTC_CRL_OWF            BIT_(2)
285
#define CYGHWR_HAL_STM32_RTC_CRL_RSF            BIT_(3)
286
#define CYGHWR_HAL_STM32_RTC_CRL_CNF            BIT_(4)
287
#define CYGHWR_HAL_STM32_RTC_CRL_RTOFF          BIT_(5)
288
 
289
//=============================================================================
290
// External interrupt controller
291
 
292
#define CYGHWR_HAL_STM32_EXTI_IMR               0x00
293
#define CYGHWR_HAL_STM32_EXTI_EMR               0x04
294
#define CYGHWR_HAL_STM32_EXTI_RTSR              0x08
295
#define CYGHWR_HAL_STM32_EXTI_FTSR              0x0C
296
#define CYGHWR_HAL_STM32_EXTI_SWIER             0x10
297
#define CYGHWR_HAL_STM32_EXTI_PR                0x14
298
 
299
#define CYGHWR_HAL_STM32_EXTI_BIT(__b)          BIT_(__b)
300
 
301
//=============================================================================
302
// GPIO ports
303
 
304
#define CYGHWR_HAL_STM32_GPIO_CRL               0x00
305
#define CYGHWR_HAL_STM32_GPIO_CRH               0x04
306
#define CYGHWR_HAL_STM32_GPIO_IDR               0x08
307
#define CYGHWR_HAL_STM32_GPIO_ODR               0x0C
308
#define CYGHWR_HAL_STM32_GPIO_BSRR              0x10
309
#define CYGHWR_HAL_STM32_GPIO_BRR               0x14
310
#define CYGHWR_HAL_STM32_GPIO_LCKR              0x18
311
 
312
#define CYGHWR_HAL_STM32_GPIO_MODE_IN           VALUE_(0,0)     // Input mode
313
#define CYGHWR_HAL_STM32_GPIO_MODE_OUT_10MHZ    VALUE_(0,1)     // Output mode, max 10MHz
314
#define CYGHWR_HAL_STM32_GPIO_MODE_OUT_2MHZ     VALUE_(0,2)     // Output mode, max 2MHz
315
#define CYGHWR_HAL_STM32_GPIO_MODE_OUT_50MHZ    VALUE_(0,3)     // Output mode, max 50MHz
316
 
317
#define CYGHWR_HAL_STM32_GPIO_CNF_AIN           VALUE_(2,0)     // Analog input
318
#define CYGHWR_HAL_STM32_GPIO_CNF_FIN           VALUE_(2,1)     // Floating input
319
#define CYGHWR_HAL_STM32_GPIO_CNF_PULL          VALUE_(2,2)     // Input with pull up/down
320
#define CYGHWR_HAL_STM32_GPIO_CNF_RESV          VALUE_(2,3)     // Reserved
321
 
322
#define CYGHWR_HAL_STM32_GPIO_CNF_GPOPP         VALUE_(2,0)     // GP output push/pull
323
#define CYGHWR_HAL_STM32_GPIO_CNF_GPOOD         VALUE_(2,1)     // GP output open drain
324
#define CYGHWR_HAL_STM32_GPIO_CNF_AOPP          VALUE_(2,2)     // Alt output push/pull
325
#define CYGHWR_HAL_STM32_GPIO_CNF_AOOD          VALUE_(2,3)     // Alt output open drain
326
 
327
 
328
// Alternative, more readable, config names
329
// Inputs
330
#define CYGHWR_HAL_STM32_GPIO_CNF_ANALOG        CYGHWR_HAL_STM32_GPIO_CNF_AIN
331
#define CYGHWR_HAL_STM32_GPIO_CNF_FLOATING      CYGHWR_HAL_STM32_GPIO_CNF_FIN
332
#define CYGHWR_HAL_STM32_GPIO_CNF_PULLDOWN      (CYGHWR_HAL_STM32_GPIO_CNF_PULL)
333
#define CYGHWR_HAL_STM32_GPIO_CNF_PULLUP        (CYGHWR_HAL_STM32_GPIO_CNF_PULL|CYGHWR_HAL_STM32_GPIO_PULLUP)
334
// Outputs
335
#define CYGHWR_HAL_STM32_GPIO_CNF_OUT_OPENDRAIN CYGHWR_HAL_STM32_GPIO_CNF_GPOOD
336
#define CYGHWR_HAL_STM32_GPIO_CNF_OUT_PUSHPULL  CYGHWR_HAL_STM32_GPIO_CNF_GPOPP
337
#define CYGHWR_HAL_STM32_GPIO_CNF_ALT_OPENDRAIN CYGHWR_HAL_STM32_GPIO_CNF_AOOD
338
#define CYGHWR_HAL_STM32_GPIO_CNF_ALT_PUSHPULL  CYGHWR_HAL_STM32_GPIO_CNF_AOPP
339
 
340
 
341
// This macro packs the port number, bit number, mode and
342
// configuration for a GPIO pin into a single word. The packing puts
343
// the mode and config in the ls 5 bits, the bit number in 16:20 and
344
// the offset of the GPIO port from GPIOA in bits 8:15. The port, mode
345
// and config are only specified using the last component of the names
346
// to keep definitions short.
347
 
348
#define CYGHWR_HAL_STM32_GPIO(__port, __bit, __mode, __cnf )            \
349
            ((CYGHWR_HAL_STM32_GPIO##__port - CYGHWR_HAL_STM32_GPIOA) | \
350
             (__bit<<16) |                                              \
351
             (CYGHWR_HAL_STM32_GPIO_MODE_##__mode) |                    \
352
             (CYGHWR_HAL_STM32_GPIO_CNF_##__cnf))
353
 
354
// Macros to extract encoded values
355
#define CYGHWR_HAL_STM32_GPIO_PORT(__pin)       (CYGHWR_HAL_STM32_GPIOA+((__pin)&0x0000FF00))
356
#define CYGHWR_HAL_STM32_GPIO_BIT(__pin)        (((__pin)>>16)&0x1F)
357
#define CYGHWR_HAL_STM32_GPIO_CFG(__pin)        ((__pin)&0xF)
358
#define CYGHWR_HAL_STM32_GPIO_PULLUP            BIT_(4)
359
 
360
 
361
#define CYGHWR_HAL_STM32_GPIO_NONE      (0xFFFFFFFF)
362
 
363
// Functions and macros to configure GPIO ports.
364
 
365
__externC void hal_stm32_gpio_set( cyg_uint32 pin );
366
__externC void hal_stm32_gpio_out( cyg_uint32 pin, int val );
367
__externC void hal_stm32_gpio_in ( cyg_uint32 pin, int *val );
368
 
369
#define CYGHWR_HAL_STM32_GPIO_SET(__pin ) hal_stm32_gpio_set( __pin )
370
#define CYGHWR_HAL_STM32_GPIO_OUT(__pin, __val ) hal_stm32_gpio_out( __pin, __val )
371
#define CYGHWR_HAL_STM32_GPIO_IN(__pin,  __val ) hal_stm32_gpio_in( __pin, __val )
372
 
373
//=============================================================================
374
// Alternate I/O configuration registers.
375
 
376
#define CYGHWR_HAL_STM32_AFIO_EVCR              0x00
377
#define CYGHWR_HAL_STM32_AFIO_MAPR              0x04
378
#define CYGHWR_HAL_STM32_AFIO_EXTICR1           0x08
379
#define CYGHWR_HAL_STM32_AFIO_EXTICR2           0x0C
380
#define CYGHWR_HAL_STM32_AFIO_EXTICR3           0x10
381
#define CYGHWR_HAL_STM32_AFIO_EXTICR4           0x14
382
 
383
// The following macro allows the four ETXICR registers to be indexed
384
// as CYGHWR_HAL_STM32_AFIO_EXTICR(1) to CYGHWR_HAL_STM32_AFIO_EXTICR(4)
385
#define CYGHWR_HAL_STM32_AFIO_EXTICR(__x)       (4*((__x)-1)+0x08)
386
 
387
#define CYGHWR_HAL_STM32_AFIO_EVCR_PIN(__x)     VALUE_(0,(__x))
388
#define CYGHWR_HAL_STM32_AFIO_EVCR_PORTA        VALUE_(4,0) 
389
#define CYGHWR_HAL_STM32_AFIO_EVCR_PORTB        VALUE_(4,1) 
390
#define CYGHWR_HAL_STM32_AFIO_EVCR_PORTC        VALUE_(4,2) 
391
#define CYGHWR_HAL_STM32_AFIO_EVCR_PORTD        VALUE_(4,3) 
392
#define CYGHWR_HAL_STM32_AFIO_EVCR_PORTE        VALUE_(4,4)
393
#define CYGHWR_HAL_STM32_AFIO_EVCR_EVOE         BIT_(7) 
394
 
395
#define CYGHWR_HAL_STM32_AFIO_MAPR_SPI1_RMP     BIT_(0)
396
#define CYGHWR_HAL_STM32_AFIO_MAPR_I2C1_RMP     BIT_(1)
397
#define CYGHWR_HAL_STM32_AFIO_MAPR_URT1_RMP     BIT_(2)
398
#define CYGHWR_HAL_STM32_AFIO_MAPR_URT2_RMP     BIT_(3)
399
 
400
#define CYGHWR_HAL_STM32_AFIO_MAPR_URT3_NO_RMP  VALUE_(4,0)
401
#define CYGHWR_HAL_STM32_AFIO_MAPR_URT3_P1_RMP  VALUE_(4,1)
402
#define CYGHWR_HAL_STM32_AFIO_MAPR_URT3_FL_RMP  VALUE_(4,3)
403
 
404
#define CYGHWR_HAL_STM32_AFIO_MAPR_TIM1_NO_RMP  VALUE_(6,0)
405
#define CYGHWR_HAL_STM32_AFIO_MAPR_TIM1_P1_RMP  VALUE_(6,1)
406
#define CYGHWR_HAL_STM32_AFIO_MAPR_TIM1_FL_RMP  VALUE_(6,3)
407
 
408
#define CYGHWR_HAL_STM32_AFIO_MAPR_TIM2_NO_RMP  VALUE_(8,0)
409
#define CYGHWR_HAL_STM32_AFIO_MAPR_TIM2_P1_RMP  VALUE_(8,1)
410
#define CYGHWR_HAL_STM32_AFIO_MAPR_TIM2_P2_RMP  VALUE_(8,2)
411
#define CYGHWR_HAL_STM32_AFIO_MAPR_TIM2_FL_RMP  VALUE_(8,3)
412
 
413
#define CYGHWR_HAL_STM32_AFIO_MAPR_TIM3_NO_RMP  VALUE_(10,0)
414
#define CYGHWR_HAL_STM32_AFIO_MAPR_TIM3_P2_RMP  VALUE_(10,2)
415
#define CYGHWR_HAL_STM32_AFIO_MAPR_TIM3_FL_RMP  VALUE_(10,3)
416
 
417
#define CYGHWR_HAL_STM32_AFIO_MAPR_TIM4_RMP     BIT_(12)
418
 
419
#define CYGHWR_HAL_STM32_AFIO_MAPR_CAN_NO_RMP   VALUE_(13,0)
420
#define CYGHWR_HAL_STM32_AFIO_MAPR_CAN_FL1_RMP  VALUE_(13,2)
421
#define CYGHWR_HAL_STM32_AFIO_MAPR_CAN_FL2_RMP  VALUE_(13,3)
422
 
423
#define CYGHWR_HAL_STM32_AFIO_MAPR_PD01_RMP     BIT_(15)
424
#define CYGHWR_HAL_STM32_AFIO_MAPR_TIM5CH4_RMP  BIT_(16)
425
#define CYGHWR_HAL_STM32_AFIO_MAPR_ADC1EINJ_RMP BIT_(17)
426
#define CYGHWR_HAL_STM32_AFIO_MAPR_ADC1EREG_RMP BIT_(18)
427
#define CYGHWR_HAL_STM32_AFIO_MAPR_ADC2EINJ_RMP BIT_(19)
428
#define CYGHWR_HAL_STM32_AFIO_MAPR_ADC2EREG_RMP BIT_(20)
429
 
430
#define CYGHWR_HAL_STM32_AFIO_MAPR_SWJ_FULL     VALUE_(24,0)
431
#define CYGHWR_HAL_STM32_AFIO_MAPR_SWJ_NORST    VALUE_(24,1)
432
#define CYGHWR_HAL_STM32_AFIO_MAPR_SWJ_SWDPEN   VALUE_(24,2)
433
#define CYGHWR_HAL_STM32_AFIO_MAPR_SWJ_SWDPDIS  VALUE_(24,4)
434
#define CYGHWR_HAL_STM32_AFIO_MAPR_SWJ_MASK     VALUE_(24,7)
435
 
436
// The following macros are used to generate the bitfields for setting up
437
// external interrupts.  For example, CYGHWR_HAL_STM32_AFIO_EXTICRX_PORTC(12)
438
// will generate the bitfield which when ORed into the EXTICR4 register will
439
// set up C12 as the external interrupt pin for the EXTI12 interrupt.
440
#define CYGHWR_HAL_STM32_AFIO_EXTICRX_PORTA(__x) VALUE_(4*((__x)&3),0)
441
#define CYGHWR_HAL_STM32_AFIO_EXTICRX_PORTB(__x) VALUE_(4*((__x)&3),1)
442
#define CYGHWR_HAL_STM32_AFIO_EXTICRX_PORTC(__x) VALUE_(4*((__x)&3),2)
443
#define CYGHWR_HAL_STM32_AFIO_EXTICRX_PORTD(__x) VALUE_(4*((__x)&3),3)
444
#define CYGHWR_HAL_STM32_AFIO_EXTICRX_PORTE(__x) VALUE_(4*((__x)&3),4)
445
#define CYGHWR_HAL_STM32_AFIO_EXTICRX_PORTF(__x) VALUE_(4*((__x)&3),5)
446
#define CYGHWR_HAL_STM32_AFIO_EXTICRX_PORTG(__x) VALUE_(4*((__x)&3),6)
447
#define CYGHWR_HAL_STM32_AFIO_EXTICRX_MASK(__x)  VALUE_(4*((__x)&3),0xF)
448
 
449
//=============================================================================
450
// DMA controller register definitions.
451
 
452
#define CYGHWR_HAL_STM32_DMA_ISR                0x00
453
#define CYGHWR_HAL_STM32_DMA_IFCR               0x04
454
 
455
// The following macros allow access to the per-channel DMA registers, indexed
456
// by channel number.  Valid channel numbers are 1 to 7 for DMA1 and 1 to 5
457
// for DMA2.
458
#define CYGHWR_HAL_STM32_DMA_CCR(__x)           (0x14*(__x)-0x0C)
459
#define CYGHWR_HAL_STM32_DMA_CNDTR(__x)         (0x14*(__x)-0x08)
460
#define CYGHWR_HAL_STM32_DMA_CPAR(__x)          (0x14*(__x)-0x04)
461
#define CYGHWR_HAL_STM32_DMA_CMAR(__x)          (0x14*(__x))
462
 
463
#define CYGHWR_HAL_STM32_DMA_ISR_GIF(__x)       BIT_(4*(__x)-4)
464
#define CYGHWR_HAL_STM32_DMA_ISR_TCIF(__x)      BIT_(4*(__x)-3)
465
#define CYGHWR_HAL_STM32_DMA_ISR_HTIF(__x)      BIT_(4*(__x)-2)
466
#define CYGHWR_HAL_STM32_DMA_ISR_TEIF(__x)      BIT_(4*(__x)-1)
467
#define CYGHWR_HAL_STM32_DMA_ISR_MASK(__x)      VALUE_(4*(__x)-4,0xF)
468
 
469
#define CYGHWR_HAL_STM32_DMA_IFCR_CGIF(__x)     BIT_(4*(__x)-4)
470
#define CYGHWR_HAL_STM32_DMA_IFCR_CTCIF(__x)    BIT_(4*(__x)-3)
471
#define CYGHWR_HAL_STM32_DMA_IFCR_CHTIF(__x)    BIT_(4*(__x)-2)
472
#define CYGHWR_HAL_STM32_DMA_IFCR_CTEIF(__x)    BIT_(4*(__x)-1)
473
#define CYGHWR_HAL_STM32_DMA_IFCR_MASK(__x)     VALUE_(4*(__x)-4,0xF)
474
 
475
#define CYGHWR_HAL_STM32_DMA_CCR_EN             BIT_(0)
476
#define CYGHWR_HAL_STM32_DMA_CCR_TCIE           BIT_(1)
477
#define CYGHWR_HAL_STM32_DMA_CCR_HTIE           BIT_(2)
478
#define CYGHWR_HAL_STM32_DMA_CCR_TEIE           BIT_(3)
479
#define CYGHWR_HAL_STM32_DMA_CCR_DIR            BIT_(4)
480
#define CYGHWR_HAL_STM32_DMA_CCR_CIRC           BIT_(5)
481
#define CYGHWR_HAL_STM32_DMA_CCR_PINC           BIT_(6)
482
#define CYGHWR_HAL_STM32_DMA_CCR_MINC           BIT_(7)
483
#define CYGHWR_HAL_STM32_DMA_CCR_PSIZE8         VALUE_(8,0)
484
#define CYGHWR_HAL_STM32_DMA_CCR_PSIZE16        VALUE_(8,1)
485
#define CYGHWR_HAL_STM32_DMA_CCR_PSIZE32        VALUE_(8,2)
486
#define CYGHWR_HAL_STM32_DMA_CCR_MSIZE8         VALUE_(10,0)
487
#define CYGHWR_HAL_STM32_DMA_CCR_MSIZE16        VALUE_(10,1)
488
#define CYGHWR_HAL_STM32_DMA_CCR_MSIZE32        VALUE_(10,2)
489
#define CYGHWR_HAL_STM32_DMA_CCR_PLLOW          VALUE_(12,0)
490
#define CYGHWR_HAL_STM32_DMA_CCR_PLMEDIUM       VALUE_(12,1)
491
#define CYGHWR_HAL_STM32_DMA_CCR_PLHIGH         VALUE_(12,2)
492
#define CYGHWR_HAL_STM32_DMA_CCR_PLMAX          VALUE_(12,3)
493
#define CYGHWR_HAL_STM32_DMA_CCR_MEM2MEM        BIT_(14)
494
 
495
//=============================================================================
496
// UARTs
497
 
498
#define CYGHWR_HAL_STM32_UART_SR                0x00
499
#define CYGHWR_HAL_STM32_UART_DR                0x04
500
#define CYGHWR_HAL_STM32_UART_BRR               0x08
501
#define CYGHWR_HAL_STM32_UART_CR1               0x0C
502
#define CYGHWR_HAL_STM32_UART_CR2               0x10
503
#define CYGHWR_HAL_STM32_UART_CR3               0x14
504
#define CYGHWR_HAL_STM32_UART_GTPR              0x18
505
 
506
// SR Bits
507
 
508
#define CYGHWR_HAL_STM32_UART_SR_PE             BIT_(0)
509
#define CYGHWR_HAL_STM32_UART_SR_FE             BIT_(1)
510
#define CYGHWR_HAL_STM32_UART_SR_NE             BIT_(2)
511
#define CYGHWR_HAL_STM32_UART_SR_ORE            BIT_(3)
512
#define CYGHWR_HAL_STM32_UART_SR_IDLE           BIT_(4)
513
#define CYGHWR_HAL_STM32_UART_SR_RXNE           BIT_(5)
514
#define CYGHWR_HAL_STM32_UART_SR_TC             BIT_(6)
515
#define CYGHWR_HAL_STM32_UART_SR_TXE            BIT_(7)
516
#define CYGHWR_HAL_STM32_UART_SR_LBD            BIT_(8)
517
#define CYGHWR_HAL_STM32_UART_SR_CTS            BIT_(9)
518
 
519
// BRR bits
520
 
521
#define CYGHWR_HAL_STM32_UART_DR_DIVF(__f)      VALUE_(0,__f)
522
#define CYGHWR_HAL_STM32_UART_DR_DIVM(__m)      VALUE_(4,__m)
523
 
524
// CR1 bits
525
 
526
#define CYGHWR_HAL_STM32_UART_CR1_SBK           BIT_(0)
527
#define CYGHWR_HAL_STM32_UART_CR1_RWU           BIT_(1)
528
#define CYGHWR_HAL_STM32_UART_CR1_RE            BIT_(2)
529
#define CYGHWR_HAL_STM32_UART_CR1_TE            BIT_(3)
530
#define CYGHWR_HAL_STM32_UART_CR1_IDLEIE        BIT_(4)
531
#define CYGHWR_HAL_STM32_UART_CR1_RXNEIE        BIT_(5)
532
#define CYGHWR_HAL_STM32_UART_CR1_TCIE          BIT_(6)
533
#define CYGHWR_HAL_STM32_UART_CR1_TXEIE         BIT_(7)
534
#define CYGHWR_HAL_STM32_UART_CR1_PEIE          BIT_(8)
535
#define CYGHWR_HAL_STM32_UART_CR1_PS_EVEN       0
536
#define CYGHWR_HAL_STM32_UART_CR1_PS_ODD        BIT_(9)
537
#define CYGHWR_HAL_STM32_UART_CR1_PCE           BIT_(10)
538
#define CYGHWR_HAL_STM32_UART_CR1_WAKE          BIT_(11)
539
#define CYGHWR_HAL_STM32_UART_CR1_M_8           0
540
#define CYGHWR_HAL_STM32_UART_CR1_M_9           BIT_(12)
541
#define CYGHWR_HAL_STM32_UART_CR1_UE            BIT_(13)
542
 
543
// CR2 bits
544
 
545
#define CYGHWR_HAL_STM32_UART_CR2_ADD(__a)      VALUE_(0,__a)
546
#define CYGHWR_HAL_STM32_UART_CR2_LBDL          BIT_(5)
547
#define CYGHWR_HAL_STM32_UART_CR2_LBDIE         BIT_(6)
548
#define CYGHWR_HAL_STM32_UART_CR2_LBCL          BIT_(8)
549
#define CYGHWR_HAL_STM32_UART_CR2_CPHA          BIT_(9)
550
#define CYGHWR_HAL_STM32_UART_CR2_CPOL          BIT_(10)
551
#define CYGHWR_HAL_STM32_UART_CR2_CLKEN         BIT_(11)
552
#define CYGHWR_HAL_STM32_UART_CR2_STOP_1        VALUE_(12,0)
553
#define CYGHWR_HAL_STM32_UART_CR2_STOP_0_5      VALUE_(12,1)
554
#define CYGHWR_HAL_STM32_UART_CR2_STOP_2        VALUE_(12,2)
555
#define CYGHWR_HAL_STM32_UART_CR2_STOP_1_5      VALUE_(12,3)
556
#define CYGHWR_HAL_STM32_UART_CR2_LINEN         BIT_(14)
557
 
558
// CR3 bits
559
 
560
#define CYGHWR_HAL_STM32_UART_CR3_EIE           BIT_(0)
561
#define CYGHWR_HAL_STM32_UART_CR3_IREN          BIT_(1)
562
#define CYGHWR_HAL_STM32_UART_CR3_IRLP          BIT_(2)
563
#define CYGHWR_HAL_STM32_UART_CR3_HDSEL         BIT_(3)
564
#define CYGHWR_HAL_STM32_UART_CR3_NACK          BIT_(4)
565
#define CYGHWR_HAL_STM32_UART_CR3_SCEN          BIT_(5)
566
#define CYGHWR_HAL_STM32_UART_CR3_DMAR          BIT_(6)
567
#define CYGHWR_HAL_STM32_UART_CR3_DMAT          BIT_(7)
568
#define CYGHWR_HAL_STM32_UART_CR3_RTSE          BIT_(8)
569
#define CYGHWR_HAL_STM32_UART_CR3_CTSE          BIT_(9)
570
#define CYGHWR_HAL_STM32_UART_CR3_CTSIE         BIT_(10)
571
 
572
// GTPR fields
573
 
574
#define CYGHWR_HAL_STM32_UART_GTPR_PSC(__p)     VALUE_(0,__p)
575
#define CYGHWR_HAL_STM32_UART_GTPR_GT(__g)      VALUE_(8,__g)
576
 
577
// UART GPIO pins
578
 
579
#define CYGHWR_HAL_STM32_UART1_RX               CYGHWR_HAL_STM32_GPIO( A, 10, IN        , FLOATING      )
580
#define CYGHWR_HAL_STM32_UART1_TX               CYGHWR_HAL_STM32_GPIO( A,  9, OUT_50MHZ , ALT_PUSHPULL  )
581
#define CYGHWR_HAL_STM32_UART1_CTS              CYGHWR_HAL_STM32_GPIO( A, 11, IN        , FLOATING      )
582
#define CYGHWR_HAL_STM32_UART1_RTS              CYGHWR_HAL_STM32_GPIO( A, 12, OUT_50MHZ , OUT_PUSHPULL  )
583
 
584
#define CYGHWR_HAL_STM32_UART2_RX               CYGHWR_HAL_STM32_GPIO( A,  3, IN        , FLOATING      )
585
#define CYGHWR_HAL_STM32_UART2_TX               CYGHWR_HAL_STM32_GPIO( A,  2, OUT_50MHZ , ALT_PUSHPULL  )
586
#define CYGHWR_HAL_STM32_UART2_CTS              CYGHWR_HAL_STM32_GPIO( A,  0, IN        , FLOATING      )
587
#define CYGHWR_HAL_STM32_UART2_RTS              CYGHWR_HAL_STM32_GPIO( A,  1, OUT_50MHZ , OUT_PUSHPULL  )
588
 
589
#define CYGHWR_HAL_STM32_UART3_RX               CYGHWR_HAL_STM32_GPIO( B, 11, IN        , FLOATING      )
590
#define CYGHWR_HAL_STM32_UART3_TX               CYGHWR_HAL_STM32_GPIO( B, 10, OUT_50MHZ , ALT_PUSHPULL  )
591
#define CYGHWR_HAL_STM32_UART3_CTS              CYGHWR_HAL_STM32_GPIO( B, 13, IN        , FLOATING      )
592
#define CYGHWR_HAL_STM32_UART3_RTS              CYGHWR_HAL_STM32_GPIO( B, 14, OUT_50MHZ , OUT_PUSHPULL  )
593
 
594
#define CYGHWR_HAL_STM32_UART4_RX               CYGHWR_HAL_STM32_GPIO( C, 11, IN        , FLOATING      )
595
#define CYGHWR_HAL_STM32_UART4_TX               CYGHWR_HAL_STM32_GPIO( C, 10, OUT_50MHZ , ALT_PUSHPULL  )
596
#define CYGHWR_HAL_STM32_UART4_CTS              CYGHWR_HAL_STM32_GPIO_NONE
597
#define CYGHWR_HAL_STM32_UART4_RTS              CYGHWR_HAL_STM32_GPIO_NONE
598
 
599
#define CYGHWR_HAL_STM32_UART5_RX               CYGHWR_HAL_STM32_GPIO( C,  2, IN        , FLOATING      )
600
#define CYGHWR_HAL_STM32_UART5_TX               CYGHWR_HAL_STM32_GPIO( C, 12, OUT_50MHZ , ALT_PUSHPULL  )
601
#define CYGHWR_HAL_STM32_UART5_CTS              CYGHWR_HAL_STM32_GPIO_NONE
602
#define CYGHWR_HAL_STM32_UART5_RTS              CYGHWR_HAL_STM32_GPIO_NONE
603
 
604
#ifndef __ASSEMBLER__
605
 
606
__externC void hal_stm32_uart_setbaud( CYG_ADDRESS uart, cyg_uint32 baud );
607
 
608
#endif
609
 
610
//=============================================================================
611
// ADCs
612
 
613
#define CYGHWR_HAL_STM32_ADC_SR                 0x00
614
#define CYGHWR_HAL_STM32_ADC_CR1                0x04
615
#define CYGHWR_HAL_STM32_ADC_CR2                0x08
616
#define CYGHWR_HAL_STM32_ADC_SMPR1              0x0C
617
#define CYGHWR_HAL_STM32_ADC_SMPR2              0x10
618
#define CYGHWR_HAL_STM32_ADC_JOFR(__x)          0x14 + ((__x) << 2)
619
#define CYGHWR_HAL_STM32_ADC_HTR                0x24
620
#define CYGHWR_HAL_STM32_ADC_LTR                0x28
621
#define CYGHWR_HAL_STM32_ADC_SQR1               0x2C
622
#define CYGHWR_HAL_STM32_ADC_SQR2               0x30
623
#define CYGHWR_HAL_STM32_ADC_SQR3               0x34
624
#define CYGHWR_HAL_STM32_ADC_JSQR               0x38
625
#define CYGHWR_HAL_STM32_ADC_JDR(__x)           0x3C + ((__x) << 2)
626
#define CYGHWR_HAL_STM32_ADC_DR                 0x4C
627
 
628
// SR fields
629
 
630
#define CYGHWR_HAL_STM32_ADC_SR_AWD             BIT_(0)
631
#define CYGHWR_HAL_STM32_ADC_SR_EOC             BIT_(1)
632
#define CYGHWR_HAL_STM32_ADC_SR_JEOC            BIT_(2)
633
#define CYGHWR_HAL_STM32_ADC_SR_JSTRT           BIT_(3)
634
#define CYGHWR_HAL_STM32_ADC_SR_STRT            BIT_(4)
635
 
636
// CR1 fields
637
 
638
#define CYGHWR_HAL_STM32_ADC_CR1_AWDCH(__x)     VALUE_(0,(__x))
639
#define CYGHWR_HAL_STM32_ADC_CR1_EOCIE          BIT_(5)
640
#define CYGHWR_HAL_STM32_ADC_CR1_AWDIE          BIT_(6)
641
#define CYGHWR_HAL_STM32_ADC_CR1_JEOCIE         BIT_(7)
642
#define CYGHWR_HAL_STM32_ADC_CR1_SCAN           BIT_(8)
643
#define CYGHWR_HAL_STM32_ADC_CR1_AWDSGL         BIT_(9)
644
#define CYGHWR_HAL_STM32_ADC_CR1_JAUTO          BIT_(10)
645
#define CYGHWR_HAL_STM32_ADC_CR1_DISCEN         BIT_(11)
646
#define CYGHWR_HAL_STM32_ADC_CR1_JDISCEN        BIT_(12)
647
#define CYGHWR_HAL_STM32_ADC_CR1_DISCNUM(__x)   VALUE_(13,(__x))
648
#define CYGHWR_HAL_STM32_ADC_CR1_DUALMODE(__x)  VALUE_(16,(__x))
649
#define CYGHWR_HAL_STM32_ADC_CR1_JAWDEN         BIT_(22)
650
#define CYGHWR_HAL_STM32_ADC_CR1_AWDEN          BIT_(23)
651
 
652
// CR2 fields
653
 
654
#define CYGHWR_HAL_STM32_ADC_CR2_ADON           BIT_(0)
655
#define CYGHWR_HAL_STM32_ADC_CR2_CONT           BIT_(1)
656
#define CYGHWR_HAL_STM32_ADC_CR2_CAL            BIT_(2)
657
#define CYGHWR_HAL_STM32_ADC_CR2_RSTCAL         BIT_(3)
658
#define CYGHWR_HAL_STM32_ADC_CR2_DMA            BIT_(8)
659
#define CYGHWR_HAL_STM32_ADC_CR2_ALIGN          BIT_(11)
660
#define CYGHWR_HAL_STM32_ADC_CR2_JEXTSEL(__x)   VALUE_(12,(__x))
661
#define CYGHWR_HAL_STM32_ADC_CR2_JEXTTRIG       BIT_(15)
662
#define CYGHWR_HAL_STM32_ADC_CR2_EXTSEL(__x)    VALUE_(17,(__x))
663
#define CYGHWR_HAL_STM32_ADC_CR2_EXTTRIG        BIT_(20)
664
#define CYGHWR_HAL_STM32_ADC_CR2_JSWSTART       BIT_(21)
665
#define CYGHWR_HAL_STM32_ADC_CR2_SWSTART        BIT_(22)
666
#define CYGHWR_HAL_STM32_ADC_CR2_TSVREFE        BIT_(23)
667
 
668
// SMPRx fields
669
 
670
#define CYGHWR_HAL_STM32_ADC_SMPRx_SMP(__x, __y) VALUE_((__x) * 3, (__y))
671
 
672
// SQRx fields
673
 
674
#define CYGHWR_HAL_STM32_ADC_SQR1_L(__x)        VALUE_(20, (__x))
675
#define CYGHWR_HAL_STM32_ADC_SQRx_SQ(__x, __y)  VALUE_((__x) * 5, (__y))
676
 
677
// JSQR fields
678
 
679
#define CYGHWR_HAL_STM32_ADC_JSQR_SQ(__x, __y)  VALUE_((__x) * 5, (__y))
680
 
681
// ADC GPIO pins
682
 
683
#define CYGHWR_HAL_STM32_ADC123_IN0             CYGHWR_HAL_STM32_GPIO( A, 0,  IN, ANALOG )
684
#define CYGHWR_HAL_STM32_ADC123_IN1             CYGHWR_HAL_STM32_GPIO( A, 1,  IN, ANALOG )
685
#define CYGHWR_HAL_STM32_ADC123_IN2             CYGHWR_HAL_STM32_GPIO( A, 2,  IN, ANALOG )
686
#define CYGHWR_HAL_STM32_ADC123_IN3             CYGHWR_HAL_STM32_GPIO( A, 3,  IN, ANALOG )
687
 
688
#define CYGHWR_HAL_STM32_ADC12_IN4              CYGHWR_HAL_STM32_GPIO( A, 4,  IN, ANALOG )
689
#define CYGHWR_HAL_STM32_ADC12_IN5              CYGHWR_HAL_STM32_GPIO( A, 5,  IN, ANALOG )
690
#define CYGHWR_HAL_STM32_ADC12_IN6              CYGHWR_HAL_STM32_GPIO( A, 6,  IN, ANALOG )
691
#define CYGHWR_HAL_STM32_ADC12_IN7              CYGHWR_HAL_STM32_GPIO( A, 7,  IN, ANALOG )
692
 
693
#define CYGHWR_HAL_STM32_ADC12_IN8              CYGHWR_HAL_STM32_GPIO( B, 0,  IN, ANALOG )
694
#define CYGHWR_HAL_STM32_ADC12_IN9              CYGHWR_HAL_STM32_GPIO( B, 1,  IN, ANALOG )
695
 
696
#define CYGHWR_HAL_STM32_ADC3_IN4               CYGHWR_HAL_STM32_GPIO( F, 6,  IN, ANALOG )
697
#define CYGHWR_HAL_STM32_ADC3_IN5               CYGHWR_HAL_STM32_GPIO( F, 7,  IN, ANALOG )
698
#define CYGHWR_HAL_STM32_ADC3_IN6               CYGHWR_HAL_STM32_GPIO( F, 8,  IN, ANALOG )
699
#define CYGHWR_HAL_STM32_ADC3_IN7               CYGHWR_HAL_STM32_GPIO( F, 9,  IN, ANALOG )
700
#define CYGHWR_HAL_STM32_ADC3_IN8               CYGHWR_HAL_STM32_GPIO( F, 10, IN, ANALOG )
701
 
702
#define CYGHWR_HAL_STM32_ADC123_IN10            CYGHWR_HAL_STM32_GPIO( C, 0,  IN, ANALOG )
703
#define CYGHWR_HAL_STM32_ADC123_IN11            CYGHWR_HAL_STM32_GPIO( C, 1,  IN, ANALOG )
704
#define CYGHWR_HAL_STM32_ADC123_IN12            CYGHWR_HAL_STM32_GPIO( C, 2,  IN, ANALOG )
705
#define CYGHWR_HAL_STM32_ADC123_IN13            CYGHWR_HAL_STM32_GPIO( C, 3,  IN, ANALOG )
706
 
707
#define CYGHWR_HAL_STM32_ADC12_IN14             CYGHWR_HAL_STM32_GPIO( C, 4,  IN, ANALOG )
708
#define CYGHWR_HAL_STM32_ADC12_IN15             CYGHWR_HAL_STM32_GPIO( C, 5,  IN, ANALOG )
709
 
710
// ADC1 GPIO pin aliases
711
 
712
#define CYGHWR_HAL_STM32_ADC1_IN0               CYGHWR_HAL_STM32_ADC123_IN0
713
#define CYGHWR_HAL_STM32_ADC1_IN1               CYGHWR_HAL_STM32_ADC123_IN1
714
#define CYGHWR_HAL_STM32_ADC1_IN2               CYGHWR_HAL_STM32_ADC123_IN2
715
#define CYGHWR_HAL_STM32_ADC1_IN3               CYGHWR_HAL_STM32_ADC123_IN3
716
#define CYGHWR_HAL_STM32_ADC1_IN4               CYGHWR_HAL_STM32_ADC12_IN4
717
#define CYGHWR_HAL_STM32_ADC1_IN5               CYGHWR_HAL_STM32_ADC12_IN5
718
#define CYGHWR_HAL_STM32_ADC1_IN6               CYGHWR_HAL_STM32_ADC12_IN6
719
#define CYGHWR_HAL_STM32_ADC1_IN7               CYGHWR_HAL_STM32_ADC12_IN7
720
#define CYGHWR_HAL_STM32_ADC1_IN8               CYGHWR_HAL_STM32_ADC12_IN8
721
#define CYGHWR_HAL_STM32_ADC1_IN9               CYGHWR_HAL_STM32_ADC12_IN9
722
#define CYGHWR_HAL_STM32_ADC1_IN10              CYGHWR_HAL_STM32_ADC123_IN10
723
#define CYGHWR_HAL_STM32_ADC1_IN11              CYGHWR_HAL_STM32_ADC123_IN11
724
#define CYGHWR_HAL_STM32_ADC1_IN12              CYGHWR_HAL_STM32_ADC123_IN12
725
#define CYGHWR_HAL_STM32_ADC1_IN13              CYGHWR_HAL_STM32_ADC123_IN13
726
#define CYGHWR_HAL_STM32_ADC1_IN14              CYGHWR_HAL_STM32_ADC12_IN14
727
#define CYGHWR_HAL_STM32_ADC1_IN15              CYGHWR_HAL_STM32_ADC12_IN15
728
 
729
// ADC2 GPIO pin aliases
730
 
731
#define CYGHWR_HAL_STM32_ADC2_IN0               CYGHWR_HAL_STM32_ADC123_IN0
732
#define CYGHWR_HAL_STM32_ADC2_IN1               CYGHWR_HAL_STM32_ADC123_IN1
733
#define CYGHWR_HAL_STM32_ADC2_IN2               CYGHWR_HAL_STM32_ADC123_IN2
734
#define CYGHWR_HAL_STM32_ADC2_IN3               CYGHWR_HAL_STM32_ADC123_IN3
735
#define CYGHWR_HAL_STM32_ADC2_IN4               CYGHWR_HAL_STM32_ADC12_IN4
736
#define CYGHWR_HAL_STM32_ADC2_IN5               CYGHWR_HAL_STM32_ADC12_IN5
737
#define CYGHWR_HAL_STM32_ADC2_IN6               CYGHWR_HAL_STM32_ADC12_IN6
738
#define CYGHWR_HAL_STM32_ADC2_IN7               CYGHWR_HAL_STM32_ADC12_IN7
739
#define CYGHWR_HAL_STM32_ADC2_IN8               CYGHWR_HAL_STM32_ADC12_IN8
740
#define CYGHWR_HAL_STM32_ADC2_IN9               CYGHWR_HAL_STM32_ADC12_IN9
741
#define CYGHWR_HAL_STM32_ADC2_IN10              CYGHWR_HAL_STM32_ADC123_IN10
742
#define CYGHWR_HAL_STM32_ADC2_IN11              CYGHWR_HAL_STM32_ADC123_IN11
743
#define CYGHWR_HAL_STM32_ADC2_IN12              CYGHWR_HAL_STM32_ADC123_IN12
744
#define CYGHWR_HAL_STM32_ADC2_IN13              CYGHWR_HAL_STM32_ADC123_IN13
745
#define CYGHWR_HAL_STM32_ADC2_IN14              CYGHWR_HAL_STM32_ADC12_IN14
746
#define CYGHWR_HAL_STM32_ADC2_IN15              CYGHWR_HAL_STM32_ADC12_IN15
747
 
748
// ADC3 GPIO pin aliases
749
 
750
#define CYGHWR_HAL_STM32_ADC3_IN0               CYGHWR_HAL_STM32_ADC123_IN0
751
#define CYGHWR_HAL_STM32_ADC3_IN1               CYGHWR_HAL_STM32_ADC123_IN1
752
#define CYGHWR_HAL_STM32_ADC3_IN2               CYGHWR_HAL_STM32_ADC123_IN2
753
#define CYGHWR_HAL_STM32_ADC3_IN3               CYGHWR_HAL_STM32_ADC123_IN3
754
// Inputs 4 - 8 are already defined
755
#define CYGHWR_HAL_STM32_ADC3_IN9               CYGHWR_HAL_STM32_GPIO_NONE
756
#define CYGHWR_HAL_STM32_ADC3_IN10              CYGHWR_HAL_STM32_ADC123_IN10
757
#define CYGHWR_HAL_STM32_ADC3_IN11              CYGHWR_HAL_STM32_ADC123_IN11
758
#define CYGHWR_HAL_STM32_ADC3_IN12              CYGHWR_HAL_STM32_ADC123_IN12
759
#define CYGHWR_HAL_STM32_ADC3_IN13              CYGHWR_HAL_STM32_ADC123_IN13
760
#define CYGHWR_HAL_STM32_ADC3_IN14              CYGHWR_HAL_STM32_GPIO_NONE
761
#define CYGHWR_HAL_STM32_ADC3_IN15              CYGHWR_HAL_STM32_GPIO_NONE
762
 
763
//=============================================================================
764
// SPI interface register definitions.
765
 
766
#define CYGHWR_HAL_STM32_SPI_CR1                0x00
767
#define CYGHWR_HAL_STM32_SPI_CR2                0x04
768
#define CYGHWR_HAL_STM32_SPI_SR                 0x08
769
#define CYGHWR_HAL_STM32_SPI_DR                 0x0C
770
#define CYGHWR_HAL_STM32_SPI_CRCPR              0x10
771
#define CYGHWR_HAL_STM32_SPI_RXCRCR             0x14
772
#define CYGHWR_HAL_STM32_SPI_TXCRCR             0x18
773
#define CYGHWR_HAL_STM32_SPI_I2SCFGR            0x1C
774
#define CYGHWR_HAL_STM32_SPI_I2SPR              0x20
775
 
776
#define CYGHWR_HAL_STM32_SPI_CR1_CPHA           BIT_(0)
777
#define CYGHWR_HAL_STM32_SPI_CR1_CPOL           BIT_(1)
778
#define CYGHWR_HAL_STM32_SPI_CR1_MSTR           BIT_(2)
779
#define CYGHWR_HAL_STM32_SPI_CR1_BR(__x)        VALUE_(3,(__x))
780
#define CYGHWR_HAL_STM32_SPI_CR1_SPE            BIT_(6)
781
#define CYGHWR_HAL_STM32_SPI_CR1_LSBFIRST       BIT_(7)
782
#define CYGHWR_HAL_STM32_SPI_CR1_SSI            BIT_(8)
783
#define CYGHWR_HAL_STM32_SPI_CR1_SSM            BIT_(9)
784
#define CYGHWR_HAL_STM32_SPI_CR1_RXONLY         BIT_(10)
785
#define CYGHWR_HAL_STM32_SPI_CR1_DFF            BIT_(11)
786
#define CYGHWR_HAL_STM32_SPI_CR1_CRCNEXT        BIT_(12)
787
#define CYGHWR_HAL_STM32_SPI_CR1_CRCEN          BIT_(13)
788
#define CYGHWR_HAL_STM32_SPI_CR1_BIDIOE         BIT_(14)
789
#define CYGHWR_HAL_STM32_SPI_CR1_BIDIMODE       BIT_(15)
790
 
791
#define CYGHWR_HAL_STM32_SPI_CR2_RXDMAEN        BIT_(0)
792
#define CYGHWR_HAL_STM32_SPI_CR2_TXDMAEN        BIT_(1)
793
#define CYGHWR_HAL_STM32_SPI_CR2_SSOE           BIT_(2)
794
#define CYGHWR_HAL_STM32_SPI_CR2_ERRIE          BIT_(5)
795
#define CYGHWR_HAL_STM32_SPI_CR2_RXNEIE         BIT_(6)
796
#define CYGHWR_HAL_STM32_SPI_CR2_TXEIE          BIT_(7)
797
 
798
#define CYGHWR_HAL_STM32_SPI_SR_RXNE            BIT_(0)
799
#define CYGHWR_HAL_STM32_SPI_SR_TXE             BIT_(1)
800
#define CYGHWR_HAL_STM32_SPI_SR_CHSIDE          BIT_(2)
801
#define CYGHWR_HAL_STM32_SPI_SR_UDR             BIT_(3)
802
#define CYGHWR_HAL_STM32_SPI_SR_CRCERR          BIT_(4)
803
#define CYGHWR_HAL_STM32_SPI_SR_MODF            BIT_(5)
804
#define CYGHWR_HAL_STM32_SPI_SR_OVR             BIT_(6)
805
#define CYGHWR_HAL_STM32_SPI_SR_BSY             BIT_(7)
806
 
807
#define CYGHWR_HAL_STM32_SPI_I2SCFGR_CHLEN      BIT_(0)
808
#define CYGHWR_HAL_STM32_SPI_I2SCFGR_DATLEN16   VALUE_(1,0)
809
#define CYGHWR_HAL_STM32_SPI_I2SCFGR_DATLEN24   VALUE_(1,1)
810
#define CYGHWR_HAL_STM32_SPI_I2SCFGR_DATLEN32   VALUE_(1,2)
811
#define CYGHWR_HAL_STM32_SPI_I2SCFGR_CKPOL      BIT_(3)
812
#define CYGHWR_HAL_STM32_SPI_I2SCFGR_I2SSTDPHL  VALUE_(4,0)
813
#define CYGHWR_HAL_STM32_SPI_I2SCFGR_I2SSTDMSB  VALUE_(4,1)
814
#define CYGHWR_HAL_STM32_SPI_I2SCFGR_I2SSTDLSB  VALUE_(4,2)
815
#define CYGHWR_HAL_STM32_SPI_I2SCFGR_I2SSTDPCM  VALUE_(4,3)
816
#define CYGHWR_HAL_STM32_SPI_I2SCFGR_PCMSYNC    BIT_(7)
817
#define CYGHWR_HAL_STM32_SPI_I2SCFGR_I2SCFGST   VALUE_(8,0)
818
#define CYGHWR_HAL_STM32_SPI_I2SCFGR_I2SCFGSR   VALUE_(8,1)
819
#define CYGHWR_HAL_STM32_SPI_I2SCFGR_I2SCFGMT   VALUE_(8,2)
820
#define CYGHWR_HAL_STM32_SPI_I2SCFGR_I2SCFGMR   VALUE_(8,3)
821
#define CYGHWR_HAL_STM32_SPI_I2SCFGR_I2SE       BIT_(10)
822
#define CYGHWR_HAL_STM32_SPI_I2SCFGR_I2MOD      BIT_(11)
823
 
824
#define CYGHWR_HAL_STM32_SPI_I2SPR_I2SDIV(__x)  VALUE_(0,(__x))
825
#define CYGHWR_HAL_STM32_SPI_I2SPR_ODD          BIT_(8)
826
#define CYGHWR_HAL_STM32_SPI_I2SPR_MCKOE        BIT_(9)
827
 
828
//=============================================================================
829
// USB interface register definitions.
830
 
831
#define CYGHWR_HAL_STM32_USB_EP0R               0x00 
832
#define CYGHWR_HAL_STM32_USB_EP1R               0x04 
833
#define CYGHWR_HAL_STM32_USB_EP2R               0x08 
834
#define CYGHWR_HAL_STM32_USB_EP3R               0x0C 
835
#define CYGHWR_HAL_STM32_USB_EP4R               0x10 
836
#define CYGHWR_HAL_STM32_USB_EP5R               0x14 
837
#define CYGHWR_HAL_STM32_USB_EP6R               0x18 
838
#define CYGHWR_HAL_STM32_USB_EP7R               0x1C 
839
 
840
#define CYGHWR_HAL_STM32_USB_CNTR               0x40
841
#define CYGHWR_HAL_STM32_USB_ISTR               0x44
842
#define CYGHWR_HAL_STM32_USB_FNR                0x48
843
#define CYGHWR_HAL_STM32_USB_DADDR              0x4C
844
#define CYGHWR_HAL_STM32_USB_BTABLE             0x50
845
 
846
// The following macro allows the USB endpoint registers to be indexed as
847
// CYGHWR_HAL_STM32_USB_EPXR(0) to CYGHWR_HAL_STM32_USB_EPXR(7).
848
#define CYGHWR_HAL_STM32_USB_EPXR(__x)          ((__x)*4)
849
 
850
#define CYGHWR_HAL_STM32_USB_EPXR_EA(__x)       VALUE_(0,(__x))
851
#define CYGHWR_HAL_STM32_USB_EPXR_STATTX_DIS    VALUE_(4,0)
852
#define CYGHWR_HAL_STM32_USB_EPXR_STATTX_STALL  VALUE_(4,1)
853
#define CYGHWR_HAL_STM32_USB_EPXR_STATTX_NAK    VALUE_(4,2)
854
#define CYGHWR_HAL_STM32_USB_EPXR_STATTX_VALID  VALUE_(4,3)
855
#define CYGHWR_HAL_STM32_USB_EPXR_STATTX_MASK   VALUE_(4,3)
856
#define CYGHWR_HAL_STM32_USB_EPXR_DTOGTX        BIT_(6)
857
#define CYGHWR_HAL_STM32_USB_EPXR_SWBUFRX       BIT_(6)
858
#define CYGHWR_HAL_STM32_USB_EPXR_CTRTX         BIT_(7)
859
#define CYGHWR_HAL_STM32_USB_EPXR_EPKIND        BIT_(8)
860
#define CYGHWR_HAL_STM32_USB_EPXR_EPTYPE_BULK   VALUE_(9,0)
861
#define CYGHWR_HAL_STM32_USB_EPXR_EPTYPE_CTRL   VALUE_(9,1)
862
#define CYGHWR_HAL_STM32_USB_EPXR_EPTYPE_ISO    VALUE_(9,2)
863
#define CYGHWR_HAL_STM32_USB_EPXR_EPTYPE_INTR   VALUE_(9,3)
864
#define CYGHWR_HAL_STM32_USB_EPXR_EPTYPE_MASK   VALUE_(9,3)
865
#define CYGHWR_HAL_STM32_USB_EPXR_SETUP         BIT_(11)
866
#define CYGHWR_HAL_STM32_USB_EPXR_STATRX_DIS    VALUE_(12,0)
867
#define CYGHWR_HAL_STM32_USB_EPXR_STATRX_STALL  VALUE_(12,1)
868
#define CYGHWR_HAL_STM32_USB_EPXR_STATRX_NAK    VALUE_(12,2)
869
#define CYGHWR_HAL_STM32_USB_EPXR_STATRX_VALID  VALUE_(12,3)
870
#define CYGHWR_HAL_STM32_USB_EPXR_STATRX_MASK   VALUE_(12,3)
871
#define CYGHWR_HAL_STM32_USB_EPXR_DTOGRX        BIT_(14)
872
#define CYGHWR_HAL_STM32_USB_EPXR_SWBUFTX       BIT_(14)
873
#define CYGHWR_HAL_STM32_USB_EPXR_CTRRX         BIT_(15)
874
 
875
#define CYGHWR_HAL_STM32_USB_CNTR_FRES          BIT_(0)
876
#define CYGHWR_HAL_STM32_USB_CNTR_PDWN          BIT_(1)
877
#define CYGHWR_HAL_STM32_USB_CNTR_LPMODE        BIT_(2)
878
#define CYGHWR_HAL_STM32_USB_CNTR_FSUSP         BIT_(3)
879
#define CYGHWR_HAL_STM32_USB_CNTR_RESUME        BIT_(4)
880
#define CYGHWR_HAL_STM32_USB_CNTR_ESOFM         BIT_(8)
881
#define CYGHWR_HAL_STM32_USB_CNTR_SOFM          BIT_(9)
882
#define CYGHWR_HAL_STM32_USB_CNTR_RESETM        BIT_(10)
883
#define CYGHWR_HAL_STM32_USB_CNTR_SUSPM         BIT_(11)
884
#define CYGHWR_HAL_STM32_USB_CNTR_WKUPM         BIT_(12)
885
#define CYGHWR_HAL_STM32_USB_CNTR_ERRM          BIT_(13)
886
#define CYGHWR_HAL_STM32_USB_CNTR_PMAOVRM       BIT_(14)
887
#define CYGHWR_HAL_STM32_USB_CNTR_CTRM          BIT_(15)
888
 
889
#define CYGHWR_HAL_STM32_USB_ISTR_EPID(__x)     VALUE_(0,(__x))
890
#define CYGHWR_HAL_STM32_USB_ISTR_EPID_MASK     MASK_(0,4)
891
#define CYGHWR_HAL_STM32_USB_ISTR_DIR           BIT_(4)
892
#define CYGHWR_HAL_STM32_USB_ISTR_ESOF          BIT_(8)
893
#define CYGHWR_HAL_STM32_USB_ISTR_SOF           BIT_(9)
894
#define CYGHWR_HAL_STM32_USB_ISTR_RESET         BIT_(10)
895
#define CYGHWR_HAL_STM32_USB_ISTR_SUSP          BIT_(11)
896
#define CYGHWR_HAL_STM32_USB_ISTR_WKUP          BIT_(12)
897
#define CYGHWR_HAL_STM32_USB_ISTR_ERR           BIT_(13)
898
#define CYGHWR_HAL_STM32_USB_ISTR_PMAOVR        BIT_(14)
899
#define CYGHWR_HAL_STM32_USB_ISTR_CTR           BIT_(15)
900
 
901
#define CYGHWR_HAL_STM32_USB_FNR_FN_MASK        MASK_(0,11)
902
#define CYGHWR_HAL_STM32_USB_FNR_LSOF_LSOF0     VALUE_(11,0)
903
#define CYGHWR_HAL_STM32_USB_FNR_LSOF_LSOF1     VALUE_(11,1)
904
#define CYGHWR_HAL_STM32_USB_FNR_LSOF_LSOF2     VALUE_(11,2)
905
#define CYGHWR_HAL_STM32_USB_FNR_LSOF_LSOFN     VALUE_(11,3)
906
#define CYGHWR_HAL_STM32_USB_FNR_LSOF_MASK      MASK_(11,2)
907
#define CYGHWR_HAL_STM32_USB_FNR_LCK            BIT_(13)
908
#define CYGHWR_HAL_STM32_USB_FNR_RXDM           BIT_(14)
909
#define CYGHWR_HAL_STM32_USB_FNR_RXDP           BIT_(15)
910
 
911
#define CYGHWR_HAL_STM32_USB_DADDR_ADD(__x)     VALUE_(0,(__x))
912
#define CYGHWR_HAL_STM32_USB_DADDR_EF           BIT_(7)
913
 
914
//=============================================================================
915
// Timers
916
//
917
// This currently only defines the basic registers and functionality
918
// common to all timers.
919
 
920
#define CYGHWR_HAL_STM32_TIM_CR1                0x00
921
#define CYGHWR_HAL_STM32_TIM_CR2                0x04
922
#define CYGHWR_HAL_STM32_TIM_DIER               0x0C
923
#define CYGHWR_HAL_STM32_TIM_SR                 0x10
924
#define CYGHWR_HAL_STM32_TIM_EGR                0x14
925
#define CYGHWR_HAL_STM32_TIM_CCMR1              0x18
926
#define CYGHWR_HAL_STM32_TIM_CCMR2              0x1C
927
#define CYGHWR_HAL_STM32_TIM_CCER               0x20
928
#define CYGHWR_HAL_STM32_TIM_CNT                0x24
929
#define CYGHWR_HAL_STM32_TIM_PSC                0x28
930
#define CYGHWR_HAL_STM32_TIM_ARR                0x2C
931
#define CYGHWR_HAL_STM32_TIM_CCR1               0x34
932
#define CYGHWR_HAL_STM32_TIM_CCR2               0x38
933
#define CYGHWR_HAL_STM32_TIM_CCR3               0x3C
934
#define CYGHWR_HAL_STM32_TIM_CCR4               0x40
935
 
936
#define CYGHWR_HAL_STM32_TIM_CR1_CEN            BIT_(0)
937
#define CYGHWR_HAL_STM32_TIM_CR1_UDIS           BIT_(1)
938
#define CYGHWR_HAL_STM32_TIM_CR1_URS            BIT_(2)
939
#define CYGHWR_HAL_STM32_TIM_CR1_OPM            BIT_(3)
940
#define CYGHWR_HAL_STM32_TIM_CR1_DIR            BIT_(4)
941
#define CYGHWR_HAL_STM32_TIM_CR1_ARPE           BIT_(7)
942
#define CYGHWR_HAL_STM32_TIM_CR1_CKD_1          VALUE_(8,0)
943
#define CYGHWR_HAL_STM32_TIM_CR1_CKD_2          VALUE_(8,1)
944
#define CYGHWR_HAL_STM32_TIM_CR1_CKD_4          VALUE_(8,2)
945
#define CYGHWR_HAL_STM32_TIM_CR1_CKD_XXX        VALUE_(8,3)
946
 
947
#define CYGHWR_HAL_STM32_TIM_CR2_MMS_RESET      VALUE_(4,0)
948
#define CYGHWR_HAL_STM32_TIM_CR2_MMS_ENABLE     VALUE_(4,1)
949
#define CYGHWR_HAL_STM32_TIM_CR2_MMS_UPDATE     VALUE_(4,2)
950
 
951
#define CYGHWR_HAL_STM32_TIM_DIER_UIE           BIT_(0)
952
#define CYGHWR_HAL_STM32_TIM_DIER_UDE           BIT_(8)
953
 
954
#define CYGHWR_HAL_STM32_TIM_SR_UIF             BIT_(0)
955
 
956
#define CYGHWR_HAL_STM32_TIM_EGR_UG             BIT_(0)
957
 
958
#ifndef __ASSEMBLER__
959
 
960
__externC cyg_uint32 hal_stm32_timer_clock( CYG_ADDRESS base );
961
 
962
#endif
963
 
964
//=============================================================================
965
// Flash controller
966
 
967
#define CYGHWR_HAL_STM32_FLASH_ACR              0x00
968
#define CYGHWR_HAL_STM32_FLASH_KEYR             0x04
969
#define CYGHWR_HAL_STM32_FLASH_OPTKEYR          0x08
970
#define CYGHWR_HAL_STM32_FLASH_SR               0x0C
971
#define CYGHWR_HAL_STM32_FLASH_CR               0x10
972
#define CYGHWR_HAL_STM32_FLASH_AR               0x14
973
#define CYGHWR_HAL_STM32_FLASH_OBR              0x1C
974
#define CYGHWR_HAL_STM32_FLASH_WRPR             0x20
975
 
976
// Key values
977
 
978
#define CYGHWR_HAL_STM32_FLASH_KEYR_KEY1        0x45670123
979
#define CYGHWR_HAL_STM32_FLASH_KEYR_KEY2        0xCDEF89AB
980
 
981
// ACR fields
982
 
983
#define CYGHWR_HAL_STM32_FLASH_ACR_LATENCY(__x) VALUE_(0,__x)
984
#define CYGHWR_HAL_STM32_FLASH_ACR_HLFCYA       BIT_(3)
985
#define CYGHWR_HAL_STM32_FLASH_ACR_PRFTBE       BIT_(4)
986
#define CYGHWR_HAL_STM32_FLASH_ACR_PRFTBS       BIT_(5)
987
 
988
// SR fields
989
 
990
#define CYGHWR_HAL_STM32_FLASH_SR_BSY           BIT_(0)
991
#define CYGHWR_HAL_STM32_FLASH_SR_PGERR         BIT_(2)
992
#define CYGHWR_HAL_STM32_FLASH_SR_WRPRTERR      BIT_(4)
993
#define CYGHWR_HAL_STM32_FLASH_SR_EOP           BIT_(5)
994
 
995
// CR fields
996
 
997
#define CYGHWR_HAL_STM32_FLASH_CR_PG            BIT_(0)
998
#define CYGHWR_HAL_STM32_FLASH_CR_PER           BIT_(1)
999
#define CYGHWR_HAL_STM32_FLASH_CR_MER           BIT_(2)
1000
#define CYGHWR_HAL_STM32_FLASH_CR_OPTPG         BIT_(4)
1001
#define CYGHWR_HAL_STM32_FLASH_CR_OPTER         BIT_(5)
1002
#define CYGHWR_HAL_STM32_FLASH_CR_STRT          BIT_(6)
1003
#define CYGHWR_HAL_STM32_FLASH_CR_LOCK          BIT_(7)
1004
#define CYGHWR_HAL_STM32_FLASH_CR_OPTWRE        BIT_(9)
1005
#define CYGHWR_HAL_STM32_FLASH_CR_ERRIE         BIT_(10)
1006
#define CYGHWR_HAL_STM32_FLASH_CR_EOPIE         BIT_(12)
1007
 
1008
// OBR fields
1009
 
1010
#define CYGHWR_HAL_STM32_FLASH_OBR_OPTERR       BIT_(0)
1011
#define CYGHWR_HAL_STM32_FLASH_OBR_RDPRT        BIT_(1)
1012
#define CYGHWR_HAL_STM32_FLASH_OBR_WDG_SW       BIT_(2)
1013
#define CYGHWR_HAL_STM32_FLASH_OBR_nRST_STOP    BIT_(3)
1014
#define CYGHWR_HAL_STM32_FLASH_OBR_nRST_STDBY   BIT_(4)
1015
 
1016
//=============================================================================
1017
// Power control
1018
 
1019
#define CYGHWR_HAL_STM32_PWR_CR                 0x00
1020
#define CYGHWR_HAL_STM32_PWR_CSR                0x04
1021
 
1022
// CR fields
1023
 
1024
#define CYGHWR_HAL_STM32_PWR_CR_LPDS            BIT_(0)
1025
#define CYGHWR_HAL_STM32_PWR_CR_PDDS            BIT_(1)
1026
#define CYGHWR_HAL_STM32_PWR_CR_CWUF            BIT_(2)
1027
#define CYGHWR_HAL_STM32_PWR_CR_CSBF            BIT_(3)
1028
#define CYGHWR_HAL_STM32_PWR_CR_PVDE            BIT_(4)
1029
#define CYGHWR_HAL_STM32_PWR_CR_PLS_XXX         VALUE_(5,7)
1030
#define CYGHWR_HAL_STM32_PWR_CR_DBP             BIT_(8)
1031
 
1032
// CSR fields
1033
 
1034
#define CYGHWR_HAL_STM32_PWR_CSR_WUF            BIT_(0)
1035
#define CYGHWR_HAL_STM32_PWR_CSR_SBF            BIT_(1)
1036
#define CYGHWR_HAL_STM32_PWR_CSR_PVDO           BIT_(2)
1037
#define CYGHWR_HAL_STM32_PWR_CSR_EWUP           BIT_(8)
1038
 
1039
// Functions and macros to reset the backup domain as well as
1040
// enable/disable backup domain write protection.
1041
 
1042
#ifndef __ASSEMBLER__
1043
 
1044
__externC void hal_stm32_bd_protect( int protect );
1045
 
1046
#endif
1047
 
1048
#define CYGHWR_HAL_STM32_BD_RESET()                                         \
1049
    CYG_MACRO_START                                                         \
1050
    HAL_WRITE_UINT32(CYGHWR_HAL_STM32_RCC+CYGHWR_HAL_STM32_RCC_BDCR,        \
1051
                     CYGHWR_HAL_STM32_RCC_BDCR_BDRST);                      \
1052
    HAL_WRITE_UINT32(CYGHWR_HAL_STM32_RCC+CYGHWR_HAL_STM32_RCC_BDCR, 0);    \
1053
    CYG_MACRO_END
1054
 
1055
#define CYGHWR_HAL_STM32_BD_PROTECT(__protect )                         \
1056
    hal_stm32_bd_protect( __protect )
1057
 
1058
//=============================================================================
1059
// FSMC
1060
//
1061
// These registers are usually set up in hal_system_init() using direct
1062
// binary values. Hence we don't define all the fields here (of which
1063
// there are many).
1064
 
1065
#define CYGHWR_HAL_STM32_FSMC_BCR1              0x00
1066
#define CYGHWR_HAL_STM32_FSMC_BTR1              0x04
1067
#define CYGHWR_HAL_STM32_FSMC_BCR2              0x08
1068
#define CYGHWR_HAL_STM32_FSMC_BTR2              0x0C
1069
#define CYGHWR_HAL_STM32_FSMC_BCR3              0x10
1070
#define CYGHWR_HAL_STM32_FSMC_BTR3              0x14
1071
#define CYGHWR_HAL_STM32_FSMC_BCR4              0x18
1072
#define CYGHWR_HAL_STM32_FSMC_BTR4              0x1C
1073
 
1074
#define CYGHWR_HAL_STM32_FSMC_BWTR1             0x104
1075
#define CYGHWR_HAL_STM32_FSMC_BWTR2             0x10C
1076
#define CYGHWR_HAL_STM32_FSMC_BWTR3             0x114
1077
#define CYGHWR_HAL_STM32_FSMC_BWTR4             0x11C
1078
 
1079
#define CYGHWR_HAL_STM32_FSMC_PCR2              0x60
1080
#define CYGHWR_HAL_STM32_FSMC_SR2               0x64
1081
#define CYGHWR_HAL_STM32_FSMC_PMEM2             0x68
1082
#define CYGHWR_HAL_STM32_FSMC_PATT2             0x6C
1083
#define CYGHWR_HAL_STM32_FSMC_ECCR2             0x74
1084
 
1085
#define CYGHWR_HAL_STM32_FSMC_PCR3              0x80
1086
#define CYGHWR_HAL_STM32_FSMC_SR3               0x84
1087
#define CYGHWR_HAL_STM32_FSMC_PMEM3             0x88
1088
#define CYGHWR_HAL_STM32_FSMC_PATT3             0x8C
1089
#define CYGHWR_HAL_STM32_FSMC_ECCR3             0x94
1090
 
1091
#define CYGHWR_HAL_STM32_FSMC_PCR4              0xC0
1092
#define CYGHWR_HAL_STM32_FSMC_SR4               0xC4
1093
#define CYGHWR_HAL_STM32_FSMC_PMEM4             0xC8
1094
#define CYGHWR_HAL_STM32_FSMC_PATT4             0xCC
1095
 
1096
#define CYGHWR_HAL_STM32_FSMC_PIO4              0xB0
1097
 
1098
 
1099
#define CYGHWR_HAL_STM32_FSMC_BANK2_BASE        0x70000000
1100
#define CYGHWR_HAL_STM32_FSMC_BANK3_BASE        0x80000000
1101
#define CYGHWR_HAL_STM32_FSMC_BANK4_BASE        0x90000000
1102
 
1103
#define CYGHWR_HAL_STM32_FSMC_BANK_CMD          0x10000
1104
#define CYGHWR_HAL_STM32_FSMC_BANK_ADDR         0x20000
1105
 
1106
// PCR fields
1107
 
1108
#define CYGHWR_HAL_STM32_FSMC_PCR_PWAITEN       BIT_(1)
1109
#define CYGHWR_HAL_STM32_FSMC_PCR_PBKEN         BIT_(2)
1110
#define CYGHWR_HAL_STM32_FSMC_PCR_PTYP_NAND     BIT_(3)
1111
#define CYGHWR_HAL_STM32_FSMC_PCR_PWID_8        VALUE_(4,0)
1112
#define CYGHWR_HAL_STM32_FSMC_PCR_PWID_16       VALUE_(4,1)
1113
#define CYGHWR_HAL_STM32_FSMC_PCR_ECCEN         BIT_(6)
1114
#define CYGHWR_HAL_STM32_FSMC_PCR_ADLOW         BIT_(8)
1115
#define CYGHWR_HAL_STM32_FSMC_PCR_TCLR(__x)     VALUE_(9,__x)
1116
#define CYGHWR_HAL_STM32_FSMC_PCR_TAR(__x)      VALUE_(13,__x)
1117
#define CYGHWR_HAL_STM32_FSMC_PCR_ECCPS_256     VALUE_(17,0)
1118
#define CYGHWR_HAL_STM32_FSMC_PCR_ECCPS_512     VALUE_(17,1)
1119
#define CYGHWR_HAL_STM32_FSMC_PCR_ECCPS_1024    VALUE_(17,2)
1120
#define CYGHWR_HAL_STM32_FSMC_PCR_ECCPS_2048    VALUE_(17,3)
1121
#define CYGHWR_HAL_STM32_FSMC_PCR_ECCPS_4096    VALUE_(17,4)
1122
#define CYGHWR_HAL_STM32_FSMC_PCR_ECCPS_8192    VALUE_(17,5)
1123
 
1124
// SR fields
1125
 
1126
#define CYGHWR_HAL_STM32_FSMC_SR_IRS            BIT_(0)
1127
#define CYGHWR_HAL_STM32_FSMC_SR_ILS            BIT_(1)
1128
#define CYGHWR_HAL_STM32_FSMC_SR_IFS            BIT_(2)
1129
#define CYGHWR_HAL_STM32_FSMC_SR_IREN           BIT_(3)
1130
#define CYGHWR_HAL_STM32_FSMC_SR_ILEN           BIT_(4)
1131
#define CYGHWR_HAL_STM32_FSMC_SR_IFEN           BIT_(5)
1132
#define CYGHWR_HAL_STM32_FSMC_SR_FEMPT          BIT_(6)
1133
 
1134
//-----------------------------------------------------------------------------
1135
// end of var_io.h
1136
#endif // CYGONCE_HAL_VAR_IO_H

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.