VSF Documented
device.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18/*============================ INCLUDES ======================================*/
19
20#include "hal/vsf_hal_cfg.h"
21
22/*============================ MACROS ========================================*/
23
24#if defined(__VSF_HEADER_ONLY_SHOW_ARCH_INFO__)
25
26/*\note first define basic info for arch. */
28# define VSF_ARCH_PRI_NUM 16
29# define VSF_ARCH_PRI_BIT 4
30
31#else
32
33#ifndef __HAL_DEVICE_MT071_H__
34#define __HAL_DEVICE_MT071_H__
35
36/*============================ INCLUDES ======================================*/
37
38#include "./common.h"
40
41/*============================ MACROS ========================================*/
42
43// TODO: implement pm
44#define __SYSTEM_FREQ VSF_SYSTIMER_FREQ
45#define __PLL_FREQ_HZ __SYSTEM_FREQ
46
47#define GPIO_COUNT 7
48#define PIO0
49#define PIO0_PIN_NUM 8
50#define PIO1
51#define PIO1_PIN_NUM 8
52#define PIO2
53#define PIO2_PIN_NUM 8
54#define PIO3
55#define PIO3_PIN_NUM 8
56#define PIO4
57#define PIO4_PIN_NUM 8
58#define PIO5
59#define PIO5_PIN_NUM 8
60#define PIO6
61#define PIO6_PIN_NUM 8
62
63#define DMA_COUNT 1
64# define DMA_CHANNEL_COUNT 4
65# define DMA_CHANNEL_MAX_TRANS_SIZES \
66 1023, 511, 255, 255
67
68#define USART_MAX_PORT 1
69# define USART0_TX_DMA 0
70# define USART0_RX_DMA 1
71# define USART1_TX_DMA 2
72# define USART1_RX_DMA 3
73
74#define USB_OTG_COUNT 1
75#define USB_OTG0_IRQHandler USB_IRQHandler
76#define USB_OTG0_EP_NUMBER 8
77#define USB_OTG0_CONFIG \
78 .reg = (void *)USB_Common_Base, \
79 .sclk = SCLK_USB_IDX, \
80 .pclk = PCLK_USB_IDX, \
81 .irq = USB_IRQn,
82
83/*============================ MACROFIED FUNCTIONS ===========================*/
84
85#define __def_idx(__name, __no) VSF_MCONNECT2(__name, _IDX) = (__no)
86#define __def_msk(__name) VSF_MCONNECT2(__name, _MSK) = BIT(VSF_MCONNECT2(__name, _IDX) & 0x1F)
87
88// bit0 - bit7 : clksel
89// bit8 - bit15: clkdiv
90// bit16 - bit23: clkref
91#define __def_clk_idx(__name, __clksel, __clkdiv, __clkref) \
92 VSF_MCONNECT2(__name, _IDX) = ((__clksel) << 0) \
93 | ((__clkdiv) << 8) \
94 | ((__clkref) << 16)
95
96/*============================ TYPES =========================================*/
97
101 __def_idx(POWER_12MIRC, 0),
102 __def_idx(POWER_12MOSC, 2),
103 __def_idx(POWER_10KIRC, 3),
104};
106
110 __def_msk(POWER_12MIRC),
111 __def_msk(POWER_12MOSC),
112 __def_msk(POWER_10KIRC),
113};
115
119 VSF_PM_SLEEP = 1 << 8,
120 VSF_PM_DPD = 1 << 1,
121
125} ;
127
131 // NAME CLKSEL, CLKDIV, CLKREF
132 __def_clk_idx( PCLK_USB, 0x18, 0, 0x0F),
133 __def_clk_idx( PCLK_USART0, 0x16, 0x24, 0),
134 __def_clk_idx( PCLK_USART1, 0x16, 0x25, 0),
135 __def_clk_idx( PCLK_OUTCLK, 0x1E, 0x2B, 0),
136 __def_clk_idx( PCLK_SYSTICK, 0, 0x28, 0),
137 __def_clk_idx( PCLK_SPI0, 0, 0x29, 0),
138 __def_clk_idx( PCLK_ADC, 0, 0x2C, 0),
139 __def_clk_idx( PCLK_SPI1, 0, 0x34, 0),
140 __def_clk_idx( PCLK_DAC, 0, 0x36, 0),
141};
143
147 __def_idx( SCLK_FLASH, 0),
148 __def_idx( SCLK_RAM, 1),
149 __def_idx( SCLK_GPIO, 2),
150 __def_idx( SCLK_DMA, 3),
151 __def_idx( SCLK_USART0, 4),
152 __def_idx( SCLK_USART1, 5),
153 __def_idx( SCLK_ROM, 6),
154 __def_idx( SCLK_I2C0, 7),
155 __def_idx( SCLK_ADC, 8),
156 __def_idx( SCLK_IOCFG, 9),
157 __def_idx( SCLK_WDT, 10),
158 __def_idx( SCLK_WPWM, 12),
159 __def_idx( SCLK_SPI0, 13),
160 __def_idx( SCLK_TIMER0, 14),
161 __def_idx( SCLK_TIMER1, 15),
162 __def_idx( SCLK_ACMP, 16),
163 __def_idx( SCLK_TIMER2, 18),
164 __def_idx( SCLK_IWDG, 19),
165 __def_idx( SCLK_SPI1, 22),
166 __def_idx( SCLK_I2C1, 24),
167 __def_idx( SCLK_TIMER3, 25),
168 __def_idx( SCLK_RTC, 30),
169 __def_idx( SCLK_USB, 31),
170};
171
173 __def_msk(SCLK_FLASH),
174 __def_msk(SCLK_RAM),
175 __def_msk(SCLK_GPIO),
176 __def_msk(SCLK_DMA),
177 __def_msk(SCLK_USART0),
178 __def_msk(SCLK_USART1),
179 __def_msk(SCLK_ROM),
180 __def_msk(SCLK_I2C0),
181 __def_msk(SCLK_ADC),
182 __def_msk(SCLK_IOCFG),
183 __def_msk(SCLK_WDT),
184 __def_msk(SCLK_WPWM),
185 __def_msk(SCLK_SPI0),
186 __def_msk(SCLK_TIMER0),
187 __def_msk(SCLK_TIMER1),
188 __def_msk(SCLK_ACMP),
189 __def_msk(SCLK_TIMER2),
190 __def_msk(SCLK_IWDG),
191 __def_msk(SCLK_SPI1),
192 __def_msk(SCLK_I2C1),
193 __def_msk(SCLK_TIMER3),
194 __def_msk(SCLK_RTC),
195 __def_msk(SCLK_USB),
196};
198
205
208
213
218
221
228};
230
234};
235
236struct io_wakeup_cfg_t {
238};
240
243
244def_interface( i_pm_wakeup_t )
245 struct {
249end_def_interface( i_pm_wakeup_t )
250
251struct vsf_pm_pclk_cfg_t {
254};
255
258struct vsf_pm_mclk_cfg_t {
260 uint32_t freq;
261 uint16_t core_div[1];
263};
265
266/*============================ GLOBAL VARIABLES ==============================*/
267/*============================ LOCAL VARIABLES ===============================*/
268/*============================ PROTOTYPES ====================================*/
269
270#endif // __HAL_DEVICE_MT071_H__
271#endif // __VSF_HEADER_ONLY_SHOW_ARCH_INFO__
272/* EOF */
vsf_err_t
Definition __type.h:42
def_interface(i_adc_t) i_peripheral_t
vsf_io_port_no_t
Definition io.h:90
#define __def_idx(__name, __no)
Definition device.h:51
#define __def_msk(__name)
Definition device.h:52
#define __def_clk_idx(__name, __clksel, __clkdiv, __clkref)
Definition device.h:91
@ PLL_USB_IDX
Definition device.h:233
@ PLL_IDX
Definition device.h:232
@ VSF_PM_DPD
Definition device.h:120
end_def_interface(i_pm_wakeup_t) struct vsf_pm_pclk_cfg_t
Definition device.h:249
UseIO
Definition device.h:248
@ USART_CLKSRC_12MIRC
Definition device.h:214
@ USB_CLKSRC_12MOSC
Definition device.h:220
@ CLKSRC_12MIRC
Definition device.h:201
@ MAINCLK_CLKSRC_12MOSC
Definition device.h:211
@ MAINCLK_CLKSRC_12MIRC
Definition device.h:209
@ OUTCLK_CLKSRC_USB_PLL
Definition device.h:227
@ USART_CLKSRC_PLL
Definition device.h:215
@ CLKREF_12MOSC
Definition device.h:207
@ CLKSRC_12MOSC
Definition device.h:203
@ OUTCLK_CLKSRC_32KOSC
Definition device.h:226
@ OUTCLK_CLKSRC_12MOSC
Definition device.h:225
@ CLKREF_12MIRC
Definition device.h:206
@ CLKSRC_10KIRC
Definition device.h:204
@ OUTCLK_CLKSRC_PLL
Definition device.h:223
@ OUTCLK_CLKSRC_10KIRC
Definition device.h:224
@ MAINCLK_CLKSRC_10KIRC
Definition device.h:212
@ CLKSRC_PLL
Definition device.h:202
@ MAINCLK_CLKSRC_PLL
Definition device.h:210
@ USB_CLKSRC_12MIRC
Definition device.h:219
@ USART_CLKSRC_10KIRC
Definition device.h:217
@ OUTCLK_CLKSRC_12MIRC
Definition device.h:222
@ USART_CLKSRC_12MOSC
Definition device.h:216
unsigned short uint16_t
Definition stdint.h:7
unsigned char uint_fast8_t
Definition stdint.h:23
unsigned uint32_t
Definition stdint.h:9
unsigned int uint_fast32_t
Definition stdint.h:27
Definition pm.h:549
uint32_t dummy
Definition pm.h:550
main clock config struct
Definition vsf_template_pm.h:347
uint16_t core_div[1]
system core clock divider
Definition pm.h:571
uint32_t freq
system oscillator frequency
Definition vsf_template_pm.h:349
vsf_pm_clk_src_sel_t clk_src
main clock source
Definition vsf_template_pm.h:348
uint16_t sclk_div[1]
system sync clock divider
Definition device.h:262
Definition vsf_template_pm.h:314
uint16_t div
Definition vsf_template_pm.h:316
vsf_pm_clk_src_sel_t clk_src
Definition vsf_template_pm.h:315
void(* Enable)(void)
enable
Definition systick.h:86
bool(* Disable)(void)
disable
Definition systick.h:87
uint32_t size
Definition vsf_memfs.h:50
vsf_pm_sclk_msk_t
Definition vsf_template_pm.h:251
vsf_pm_pll_sel_t
Definition vsf_template_pm.h:374
vsf_pm_power_cfg_msk_t
Definition vsf_template_pm.h:210
vsf_pm_power_cfg_no_t
Definition vsf_template_pm.h:204
vsf_pm_pclk_no_t
Definition vsf_template_pm.h:304
vsf_pm_sclk_no_t
Definition vsf_template_pm.h:242
vsf_pm_sleep_mode_t
Definition vsf_template_pm.h:222
@ VSF_PM_POWER_OFF
Definition vsf_template_pm.h:226
@ VSF_PM_DEEP_SLEEP
Definition vsf_template_pm.h:225
@ VSF_PM_WAIT
Definition vsf_template_pm.h:223
@ VSF_PM_SLEEP
Definition vsf_template_pm.h:224
vsf_pm_clk_src_sel_t
Definition vsf_template_pm.h:266