VSF Documented
Main Page
Related Pages
Topics
Namespaces
Data Structures
Files
Examples
File List
Globals
source
hal
driver
Nuvoton
M480
common
spi
spi.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
#ifndef __HAL_DRIVER_NUVOTON_M480_SPI_H__
19
#define __HAL_DRIVER_NUVOTON_M480_SPI_H__
20
21
/*============================ INCLUDES ======================================*/
22
23
#include "
hal/vsf_hal_cfg.h
"
24
#include "
../../__device.h
"
25
26
#if VSF_HAL_USE_SPI == ENABLED
27
28
#include "
hal/driver/common/template/vsf_template_hal_driver.h
"
29
30
/*============================ MACROS ========================================*/
31
32
#define SPI_SSCTL_POS 21
33
34
#define VSF_SPI_CFG_REIMPLEMENT_TYPE_MODE ENABLED
35
#define VSF_SPI_CFG_REIMPLEMENT_TYPE_STATUS ENABLED
36
#define VSF_SPI_CFG_REIMPLEMENT_TYPE_IRQ_MASK ENABLED
37
38
/*============================ MACROFIED FUNCTIONS ===========================*/
39
/*============================ TYPES =========================================*/
40
41
typedef
enum
vsf_spi_irq_mask_t
{
42
VSF_SPI_IRQ_MASK_TX_CPL
= 1 << 0,
43
VSF_SPI_IRQ_MASK_RX_CPL
= 1 << 1,
// SPI completed recepiton and transmission
44
}
vsf_spi_irq_mask_t
;
45
46
typedef
enum
vsf_spi_mode_t
{
47
// CTL: [1 << 0 ~ 1 << 20]
48
VSF_SPI_MASTER
= 0x00,
49
VSF_SPI_SLAVE
= SPI_CTL_SLAVE_Msk,
50
VSF_SPI_DIR_MODE_MASK
=
VSF_SPI_SLAVE
|
VSF_SPI_MASTER
,
51
52
VSF_SPI_MODE_0
= SPI_CTL_TXNEG_Msk,
53
VSF_SPI_MODE_1
= SPI_CTL_RXNEG_Msk,
54
VSF_SPI_MODE_2
= SPI_CTL_CLKPOL_Msk | SPI_CTL_RXNEG_Msk,
55
VSF_SPI_MODE_3
= SPI_CTL_CLKPOL_Msk | SPI_CTL_TXNEG_Msk,
56
VSF_SPI_MODE_MASK
=
VSF_SPI_MODE_0
|
VSF_SPI_MODE_1
|
VSF_SPI_MODE_2
|
VSF_SPI_MODE_3
,
57
58
VSF_SPI_MSB_FIRST
= 0,
59
VSF_SPI_LSB_FIRST
= SPI_CTL_LSB_Msk,
60
VSF_SPI_BIT_ORDER_MASK
=
VSF_SPI_MSB_FIRST
|
VSF_SPI_LSB_FIRST
,
61
62
VSF_SPI_DATASIZE_8
= ( 8 << SPI_CTL_DWIDTH_Pos),
63
VSF_SPI_DATASIZE_9
= ( 9 << SPI_CTL_DWIDTH_Pos),
64
VSF_SPI_DATASIZE_10
= (10 << SPI_CTL_DWIDTH_Pos),
65
VSF_SPI_DATASIZE_11
= (11 << SPI_CTL_DWIDTH_Pos),
66
VSF_SPI_DATASIZE_12
= (12 << SPI_CTL_DWIDTH_Pos),
67
VSF_SPI_DATASIZE_13
= (13 << SPI_CTL_DWIDTH_Pos),
68
VSF_SPI_DATASIZE_14
= (14 << SPI_CTL_DWIDTH_Pos),
69
VSF_SPI_DATASIZE_15
= (15 << SPI_CTL_DWIDTH_Pos),
70
VSF_SPI_DATASIZE_16
= (16 << SPI_CTL_DWIDTH_Pos),
71
VSF_SPI_DATASIZE_17
= (17 << SPI_CTL_DWIDTH_Pos),
72
VSF_SPI_DATASIZE_18
= (18 << SPI_CTL_DWIDTH_Pos),
73
VSF_SPI_DATASIZE_19
= (19 << SPI_CTL_DWIDTH_Pos),
74
VSF_SPI_DATASIZE_20
= (20 << SPI_CTL_DWIDTH_Pos),
75
VSF_SPI_DATASIZE_21
= (21 << SPI_CTL_DWIDTH_Pos),
76
VSF_SPI_DATASIZE_22
= (22 << SPI_CTL_DWIDTH_Pos),
77
VSF_SPI_DATASIZE_23
= (23 << SPI_CTL_DWIDTH_Pos),
78
VSF_SPI_DATASIZE_24
= (24 << SPI_CTL_DWIDTH_Pos),
79
VSF_SPI_DATASIZE_25
= (25 << SPI_CTL_DWIDTH_Pos),
80
VSF_SPI_DATASIZE_26
= (26 << SPI_CTL_DWIDTH_Pos),
81
VSF_SPI_DATASIZE_27
= (27 << SPI_CTL_DWIDTH_Pos),
82
VSF_SPI_DATASIZE_28
= (28 << SPI_CTL_DWIDTH_Pos),
83
VSF_SPI_DATASIZE_29
= (29 << SPI_CTL_DWIDTH_Pos),
84
VSF_SPI_DATASIZE_30
= (30 << SPI_CTL_DWIDTH_Pos),
85
VSF_SPI_DATASIZE_31
= (31 << SPI_CTL_DWIDTH_Pos),
86
VSF_SPI_DATASIZE_32
= ( 0 << SPI_CTL_DWIDTH_Pos),
87
VSF_SPI_DATASIZE_MASK
= SPI_CTL_DWIDTH_Msk,
88
89
SPI_FULL_DUPLEX
= 0,
90
SPI_HALF_DUPLEX
= SPI_CTL_HALFDPX_Msk,
91
SPI_DUPLEX_MASK
=
SPI_HALF_DUPLEX
,
92
93
// This bit is used to select the data input/output direction
94
// in half-duplex transfer and Dual/Quad transfer
95
SPI_DATA_INPUT_DIRECTION
= 0,
96
SPI_DATA_OUTPUT_DIRECTION
= SPI_CTL_DATDIR_Msk,
97
98
SPI_RECEIVE_ONLY_MODE_DISABLED
= 0,
99
SPI_RECEIVE_ONLY_MODE_ENABLED
= SPI_CTL_RXONLY_Msk,
100
101
// SSCTL, [1 << 21 ~ 1 << 24]
102
SPI_AUTO_SLAVE_SELECTION
= SPI_SSCTL_AUTOSS_Pos +
SPI_SSCTL_POS
,
103
SPI_AUTO_SLAVE_SELECTION_MSK
= 1 << (SPI_SSCTL_AUTOSS_Pos +
SPI_SSCTL_POS
),
104
105
SPI_AUTO_SLAVE_SELECTION_DISABLE
= 0,
106
SPI_AUTO_SLAVE_SELECTION_ENABLE
=
SPI_AUTO_SLAVE_SELECTION_MSK
,
107
108
109
VSF_SPI_SLAVE_SELECTION_ACTIVE_LOW
= 0,
110
VSF_SPI_SLAVE_SELECTION_ACTIVE_HIGH
= 1 << (SPI_SSCTL_SSACTPOL_Pos +
SPI_SSCTL_POS
),
111
}
vsf_spi_mode_t
;
112
113
typedef
struct
vsf_spi_status_t
{
114
union
{
115
inherit(
vsf_peripheral_status_t
)
116
uint32_t
value
;
117
};
118
}
vsf_spi_status_t
;
119
120
/*============================ INCLUDES ======================================*/
121
122
#define VSF_SPI_CFG_DEC_PREFIX vsf_hw
123
#define VSF_SPI_CFG_DEC_UPCASE_PREFIX VSF_HW
124
#include "
hal/driver/common/spi/spi_template.h
"
125
126
/*============================ TYPES =========================================*/
127
/*============================ GLOBAL VARIABLES ==============================*/
128
/*============================ PROTOTYPES ====================================*/
129
130
#endif
131
#endif
vsf_spi_mode_t
vsf_spi_mode_t
Definition
spi.h:33
VSF_SPI_DATASIZE_31
@ VSF_SPI_DATASIZE_31
Definition
spi.h:72
VSF_SPI_SLAVE
@ VSF_SPI_SLAVE
Definition
spi.h:34
VSF_SPI_DATASIZE_16
@ VSF_SPI_DATASIZE_16
Definition
spi.h:57
VSF_SPI_DATASIZE_28
@ VSF_SPI_DATASIZE_28
Definition
spi.h:69
VSF_SPI_DATASIZE_17
@ VSF_SPI_DATASIZE_17
Definition
spi.h:58
VSF_SPI_DATASIZE_9
@ VSF_SPI_DATASIZE_9
Definition
spi.h:50
VSF_SPI_DATASIZE_18
@ VSF_SPI_DATASIZE_18
Definition
spi.h:59
VSF_SPI_DATASIZE_11
@ VSF_SPI_DATASIZE_11
Definition
spi.h:52
VSF_SPI_MODE_1
@ VSF_SPI_MODE_1
Definition
spi.h:41
VSF_SPI_DATASIZE_20
@ VSF_SPI_DATASIZE_20
Definition
spi.h:61
VSF_SPI_DATASIZE_21
@ VSF_SPI_DATASIZE_21
Definition
spi.h:62
VSF_SPI_DATASIZE_8
@ VSF_SPI_DATASIZE_8
datasize is 8 bits
Definition
spi.h:49
VSF_SPI_DATASIZE_27
@ VSF_SPI_DATASIZE_27
Definition
spi.h:68
VSF_SPI_DATASIZE_14
@ VSF_SPI_DATASIZE_14
Definition
spi.h:55
VSF_SPI_MASTER
@ VSF_SPI_MASTER
Definition
spi.h:35
VSF_SPI_DATASIZE_26
@ VSF_SPI_DATASIZE_26
Definition
spi.h:67
VSF_SPI_DATASIZE_13
@ VSF_SPI_DATASIZE_13
Definition
spi.h:54
VSF_SPI_DATASIZE_32
@ VSF_SPI_DATASIZE_32
Definition
spi.h:73
VSF_SPI_DATASIZE_12
@ VSF_SPI_DATASIZE_12
Definition
spi.h:53
VSF_SPI_DATASIZE_22
@ VSF_SPI_DATASIZE_22
Definition
spi.h:63
VSF_SPI_MODE_0
@ VSF_SPI_MODE_0
Definition
spi.h:39
VSF_SPI_DATASIZE_24
@ VSF_SPI_DATASIZE_24
Definition
spi.h:65
VSF_SPI_DATASIZE_29
@ VSF_SPI_DATASIZE_29
Definition
spi.h:70
VSF_SPI_DATASIZE_25
@ VSF_SPI_DATASIZE_25
Definition
spi.h:66
VSF_SPI_MODE_3
@ VSF_SPI_MODE_3
Definition
spi.h:45
VSF_SPI_DATASIZE_30
@ VSF_SPI_DATASIZE_30
Definition
spi.h:71
VSF_SPI_DATASIZE_19
@ VSF_SPI_DATASIZE_19
Definition
spi.h:60
VSF_SPI_DATASIZE_23
@ VSF_SPI_DATASIZE_23
Definition
spi.h:64
VSF_SPI_MODE_2
@ VSF_SPI_MODE_2
Definition
spi.h:43
VSF_SPI_DATASIZE_10
@ VSF_SPI_DATASIZE_10
Definition
spi.h:51
VSF_SPI_DATASIZE_15
@ VSF_SPI_DATASIZE_15
Definition
spi.h:56
vsf_spi_irq_mask_t
vsf_spi_irq_mask_t
Definition
spi.h:159
vsf_spi_irq_mask_t
vsf_spi_irq_mask_t
Definition
spi.h:112
VSF_SPI_IRQ_MASK_RX_CPL
@ VSF_SPI_IRQ_MASK_RX_CPL
Definition
spi.h:116
VSF_SPI_IRQ_MASK_TX_CPL
@ VSF_SPI_IRQ_MASK_TX_CPL
Definition
spi.h:115
vsf_spi_status_t
struct vsf_spi_status_t vsf_spi_status_t
vsf_spi_mode_t
vsf_spi_mode_t
Definition
spi.h:79
VSF_SPI_LSB_FIRST
@ VSF_SPI_LSB_FIRST
Definition
spi.h:83
VSF_SPI_MSB_FIRST
@ VSF_SPI_MSB_FIRST
Definition
spi.h:82
__device.h
SPI_SSCTL_POS
#define SPI_SSCTL_POS
Definition
spi.h:32
SPI_DATA_INPUT_DIRECTION
@ SPI_DATA_INPUT_DIRECTION
Definition
spi.h:95
SPI_RECEIVE_ONLY_MODE_DISABLED
@ SPI_RECEIVE_ONLY_MODE_DISABLED
Definition
spi.h:98
VSF_SPI_MODE_MASK
@ VSF_SPI_MODE_MASK
Definition
spi.h:56
VSF_SPI_SLAVE_SELECTION_ACTIVE_LOW
@ VSF_SPI_SLAVE_SELECTION_ACTIVE_LOW
Definition
spi.h:109
SPI_AUTO_SLAVE_SELECTION_MSK
@ SPI_AUTO_SLAVE_SELECTION_MSK
Definition
spi.h:103
VSF_SPI_BIT_ORDER_MASK
@ VSF_SPI_BIT_ORDER_MASK
Definition
spi.h:60
VSF_SPI_SLAVE_SELECTION_ACTIVE_HIGH
@ VSF_SPI_SLAVE_SELECTION_ACTIVE_HIGH
Definition
spi.h:110
SPI_AUTO_SLAVE_SELECTION_DISABLE
@ SPI_AUTO_SLAVE_SELECTION_DISABLE
Definition
spi.h:105
SPI_DUPLEX_MASK
@ SPI_DUPLEX_MASK
Definition
spi.h:91
SPI_DATA_OUTPUT_DIRECTION
@ SPI_DATA_OUTPUT_DIRECTION
Definition
spi.h:96
VSF_SPI_DIR_MODE_MASK
@ VSF_SPI_DIR_MODE_MASK
Definition
spi.h:50
SPI_RECEIVE_ONLY_MODE_ENABLED
@ SPI_RECEIVE_ONLY_MODE_ENABLED
Definition
spi.h:99
SPI_FULL_DUPLEX
@ SPI_FULL_DUPLEX
Definition
spi.h:89
SPI_AUTO_SLAVE_SELECTION
@ SPI_AUTO_SLAVE_SELECTION
Definition
spi.h:102
SPI_AUTO_SLAVE_SELECTION_ENABLE
@ SPI_AUTO_SLAVE_SELECTION_ENABLE
Definition
spi.h:106
VSF_SPI_DATASIZE_MASK
@ VSF_SPI_DATASIZE_MASK
Definition
spi.h:87
SPI_HALF_DUPLEX
@ SPI_HALF_DUPLEX
Definition
spi.h:90
spi_template.h
uint32_t
unsigned uint32_t
Definition
stdint.h:9
vsf_peripheral_status_t
Definition
vsf_template_hal_driver.h:197
vsf_spi_status_t
Predefined VSF SPI status that can be reimplemented in specific HAL drivers. Even if the hardware doe...
Definition
vsf_template_spi.h:719
value
vk_av_control_value_t value
Definition
vsf_audio.h:171
vsf_hal_cfg.h
vsf_template_hal_driver.h
Generated from commit:
vsfteam/vsf@ceb53fd