1 /**
2  * \file
3  *
4  * \brief Component description for SERCOM
5  *
6  * Copyright (c) 2017 Microchip Technology Inc.
7  *
8  * \asf_license_start
9  *
10  * \page License
11  *
12  * SPDX-License-Identifier: Apache-2.0
13  *
14  * Licensed under the Apache License, Version 2.0 (the "License"); you may
15  * not use this file except in compliance with the License.
16  * You may obtain a copy of the Licence at
17  *
18  * http://www.apache.org/licenses/LICENSE-2.0
19  *
20  * Unless required by applicable law or agreed to in writing, software
21  * distributed under the License is distributed on an AS IS BASIS, WITHOUT
22  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23  * See the License for the specific language governing permissions and
24  * limitations under the License.
25  *
26  * \asf_license_stop
27  *
28  */
29 
30 #ifndef _SAMD20_SERCOM_COMPONENT_
31 #define _SAMD20_SERCOM_COMPONENT_
32 
33 /* ========================================================================== */
34 /**  SOFTWARE API DEFINITION FOR SERCOM */
35 /* ========================================================================== */
36 /** \addtogroup SAMD20_SERCOM Serial Communication Interface */
37 /*@{*/
38 
39 #define SERCOM_U2201
40 #define REV_SERCOM                  0x102
41 
42 /* -------- SERCOM_I2CM_CTRLA : (SERCOM Offset: 0x00) (R/W 32) I2CM I2CM Control A -------- */
43 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
44 typedef union {
45   struct {
46     uint32_t SWRST:1;          /*!< bit:      0  Software Reset                     */
47     uint32_t ENABLE:1;         /*!< bit:      1  Enable                             */
48     uint32_t MODE:3;           /*!< bit:  2.. 4  Operating Mode                     */
49     uint32_t :2;               /*!< bit:  5.. 6  Reserved                           */
50     uint32_t RUNSTDBY:1;       /*!< bit:      7  Run in Standby                     */
51     uint32_t :8;               /*!< bit:  8..15  Reserved                           */
52     uint32_t PINOUT:1;         /*!< bit:     16  Pin Usage                          */
53     uint32_t :3;               /*!< bit: 17..19  Reserved                           */
54     uint32_t SDAHOLD:2;        /*!< bit: 20..21  SDA Hold Time                      */
55     uint32_t :6;               /*!< bit: 22..27  Reserved                           */
56     uint32_t INACTOUT:2;       /*!< bit: 28..29  Inactive Time-out                  */
57     uint32_t LOWTOUT:1;        /*!< bit:     30  SCL Low Time-out                   */
58     uint32_t :1;               /*!< bit:     31  Reserved                           */
59   } bit;                       /*!< Structure used for bit  access                  */
60   uint32_t reg;                /*!< Type      used for register access              */
61 } SERCOM_I2CM_CTRLA_Type;
62 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
63 
64 #define SERCOM_I2CM_CTRLA_OFFSET    0x00         /**< \brief (SERCOM_I2CM_CTRLA offset) I2CM Control A */
65 #define SERCOM_I2CM_CTRLA_RESETVALUE _U_(0x00000000) /**< \brief (SERCOM_I2CM_CTRLA reset_value) I2CM Control A */
66 
67 #define SERCOM_I2CM_CTRLA_SWRST_Pos 0            /**< \brief (SERCOM_I2CM_CTRLA) Software Reset */
68 #define SERCOM_I2CM_CTRLA_SWRST     (_U_(0x1) << SERCOM_I2CM_CTRLA_SWRST_Pos)
69 #define SERCOM_I2CM_CTRLA_ENABLE_Pos 1            /**< \brief (SERCOM_I2CM_CTRLA) Enable */
70 #define SERCOM_I2CM_CTRLA_ENABLE    (_U_(0x1) << SERCOM_I2CM_CTRLA_ENABLE_Pos)
71 #define SERCOM_I2CM_CTRLA_MODE_Pos  2            /**< \brief (SERCOM_I2CM_CTRLA) Operating Mode */
72 #define SERCOM_I2CM_CTRLA_MODE_Msk  (_U_(0x7) << SERCOM_I2CM_CTRLA_MODE_Pos)
73 #define SERCOM_I2CM_CTRLA_MODE(value) (SERCOM_I2CM_CTRLA_MODE_Msk & ((value) << SERCOM_I2CM_CTRLA_MODE_Pos))
74 #define   SERCOM_I2CM_CTRLA_MODE_USART_EXT_CLK_Val _U_(0x0)   /**< \brief (SERCOM_I2CM_CTRLA) USART mode with external clock */
75 #define   SERCOM_I2CM_CTRLA_MODE_USART_INT_CLK_Val _U_(0x1)   /**< \brief (SERCOM_I2CM_CTRLA) USART mode with internal clock */
76 #define   SERCOM_I2CM_CTRLA_MODE_SPI_SLAVE_Val _U_(0x2)   /**< \brief (SERCOM_I2CM_CTRLA) SPI mode with external clock */
77 #define   SERCOM_I2CM_CTRLA_MODE_SPI_MASTER_Val _U_(0x3)   /**< \brief (SERCOM_I2CM_CTRLA) SPI mode with internal clock */
78 #define   SERCOM_I2CM_CTRLA_MODE_I2C_SLAVE_Val _U_(0x4)   /**< \brief (SERCOM_I2CM_CTRLA) I2C mode with external clock */
79 #define   SERCOM_I2CM_CTRLA_MODE_I2C_MASTER_Val _U_(0x5)   /**< \brief (SERCOM_I2CM_CTRLA) I2C mode with internal clock */
80 #define SERCOM_I2CM_CTRLA_MODE_USART_EXT_CLK (SERCOM_I2CM_CTRLA_MODE_USART_EXT_CLK_Val << SERCOM_I2CM_CTRLA_MODE_Pos)
81 #define SERCOM_I2CM_CTRLA_MODE_USART_INT_CLK (SERCOM_I2CM_CTRLA_MODE_USART_INT_CLK_Val << SERCOM_I2CM_CTRLA_MODE_Pos)
82 #define SERCOM_I2CM_CTRLA_MODE_SPI_SLAVE (SERCOM_I2CM_CTRLA_MODE_SPI_SLAVE_Val << SERCOM_I2CM_CTRLA_MODE_Pos)
83 #define SERCOM_I2CM_CTRLA_MODE_SPI_MASTER (SERCOM_I2CM_CTRLA_MODE_SPI_MASTER_Val << SERCOM_I2CM_CTRLA_MODE_Pos)
84 #define SERCOM_I2CM_CTRLA_MODE_I2C_SLAVE (SERCOM_I2CM_CTRLA_MODE_I2C_SLAVE_Val << SERCOM_I2CM_CTRLA_MODE_Pos)
85 #define SERCOM_I2CM_CTRLA_MODE_I2C_MASTER (SERCOM_I2CM_CTRLA_MODE_I2C_MASTER_Val << SERCOM_I2CM_CTRLA_MODE_Pos)
86 #define SERCOM_I2CM_CTRLA_RUNSTDBY_Pos 7            /**< \brief (SERCOM_I2CM_CTRLA) Run in Standby */
87 #define SERCOM_I2CM_CTRLA_RUNSTDBY  (_U_(0x1) << SERCOM_I2CM_CTRLA_RUNSTDBY_Pos)
88 #define SERCOM_I2CM_CTRLA_PINOUT_Pos 16           /**< \brief (SERCOM_I2CM_CTRLA) Pin Usage */
89 #define SERCOM_I2CM_CTRLA_PINOUT    (_U_(0x1) << SERCOM_I2CM_CTRLA_PINOUT_Pos)
90 #define SERCOM_I2CM_CTRLA_SDAHOLD_Pos 20           /**< \brief (SERCOM_I2CM_CTRLA) SDA Hold Time */
91 #define SERCOM_I2CM_CTRLA_SDAHOLD_Msk (_U_(0x3) << SERCOM_I2CM_CTRLA_SDAHOLD_Pos)
92 #define SERCOM_I2CM_CTRLA_SDAHOLD(value) (SERCOM_I2CM_CTRLA_SDAHOLD_Msk & ((value) << SERCOM_I2CM_CTRLA_SDAHOLD_Pos))
93 #define SERCOM_I2CM_CTRLA_INACTOUT_Pos 28           /**< \brief (SERCOM_I2CM_CTRLA) Inactive Time-out */
94 #define SERCOM_I2CM_CTRLA_INACTOUT_Msk (_U_(0x3) << SERCOM_I2CM_CTRLA_INACTOUT_Pos)
95 #define SERCOM_I2CM_CTRLA_INACTOUT(value) (SERCOM_I2CM_CTRLA_INACTOUT_Msk & ((value) << SERCOM_I2CM_CTRLA_INACTOUT_Pos))
96 #define SERCOM_I2CM_CTRLA_LOWTOUT_Pos 30           /**< \brief (SERCOM_I2CM_CTRLA) SCL Low Time-out */
97 #define SERCOM_I2CM_CTRLA_LOWTOUT   (_U_(0x1) << SERCOM_I2CM_CTRLA_LOWTOUT_Pos)
98 #define SERCOM_I2CM_CTRLA_MASK      _U_(0x7031009F) /**< \brief (SERCOM_I2CM_CTRLA) MASK Register */
99 
100 /* -------- SERCOM_I2CS_CTRLA : (SERCOM Offset: 0x00) (R/W 32) I2CS I2CS Control A -------- */
101 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
102 typedef union {
103   struct {
104     uint32_t SWRST:1;          /*!< bit:      0  Software Reset                     */
105     uint32_t ENABLE:1;         /*!< bit:      1  Enable                             */
106     uint32_t MODE:3;           /*!< bit:  2.. 4  Operating Mode                     */
107     uint32_t :2;               /*!< bit:  5.. 6  Reserved                           */
108     uint32_t RUNSTDBY:1;       /*!< bit:      7  Run in Standby                     */
109     uint32_t :8;               /*!< bit:  8..15  Reserved                           */
110     uint32_t PINOUT:1;         /*!< bit:     16  Pin Usage                          */
111     uint32_t :3;               /*!< bit: 17..19  Reserved                           */
112     uint32_t SDAHOLD:2;        /*!< bit: 20..21  SDA Hold Time                      */
113     uint32_t :8;               /*!< bit: 22..29  Reserved                           */
114     uint32_t LOWTOUT:1;        /*!< bit:     30  SCL Low Time-out                   */
115     uint32_t :1;               /*!< bit:     31  Reserved                           */
116   } bit;                       /*!< Structure used for bit  access                  */
117   uint32_t reg;                /*!< Type      used for register access              */
118 } SERCOM_I2CS_CTRLA_Type;
119 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
120 
121 #define SERCOM_I2CS_CTRLA_OFFSET    0x00         /**< \brief (SERCOM_I2CS_CTRLA offset) I2CS Control A */
122 #define SERCOM_I2CS_CTRLA_RESETVALUE _U_(0x00000000) /**< \brief (SERCOM_I2CS_CTRLA reset_value) I2CS Control A */
123 
124 #define SERCOM_I2CS_CTRLA_SWRST_Pos 0            /**< \brief (SERCOM_I2CS_CTRLA) Software Reset */
125 #define SERCOM_I2CS_CTRLA_SWRST     (_U_(0x1) << SERCOM_I2CS_CTRLA_SWRST_Pos)
126 #define SERCOM_I2CS_CTRLA_ENABLE_Pos 1            /**< \brief (SERCOM_I2CS_CTRLA) Enable */
127 #define SERCOM_I2CS_CTRLA_ENABLE    (_U_(0x1) << SERCOM_I2CS_CTRLA_ENABLE_Pos)
128 #define SERCOM_I2CS_CTRLA_MODE_Pos  2            /**< \brief (SERCOM_I2CS_CTRLA) Operating Mode */
129 #define SERCOM_I2CS_CTRLA_MODE_Msk  (_U_(0x7) << SERCOM_I2CS_CTRLA_MODE_Pos)
130 #define SERCOM_I2CS_CTRLA_MODE(value) (SERCOM_I2CS_CTRLA_MODE_Msk & ((value) << SERCOM_I2CS_CTRLA_MODE_Pos))
131 #define   SERCOM_I2CS_CTRLA_MODE_USART_EXT_CLK_Val _U_(0x0)   /**< \brief (SERCOM_I2CS_CTRLA) USART mode with external clock */
132 #define   SERCOM_I2CS_CTRLA_MODE_USART_INT_CLK_Val _U_(0x1)   /**< \brief (SERCOM_I2CS_CTRLA) USART mode with internal clock */
133 #define   SERCOM_I2CS_CTRLA_MODE_SPI_SLAVE_Val _U_(0x2)   /**< \brief (SERCOM_I2CS_CTRLA) SPI mode with external clock */
134 #define   SERCOM_I2CS_CTRLA_MODE_SPI_MASTER_Val _U_(0x3)   /**< \brief (SERCOM_I2CS_CTRLA) SPI mode with internal clock */
135 #define   SERCOM_I2CS_CTRLA_MODE_I2C_SLAVE_Val _U_(0x4)   /**< \brief (SERCOM_I2CS_CTRLA) I2C mode with external clock */
136 #define   SERCOM_I2CS_CTRLA_MODE_I2C_MASTER_Val _U_(0x5)   /**< \brief (SERCOM_I2CS_CTRLA) I2C mode with internal clock */
137 #define SERCOM_I2CS_CTRLA_MODE_USART_EXT_CLK (SERCOM_I2CS_CTRLA_MODE_USART_EXT_CLK_Val << SERCOM_I2CS_CTRLA_MODE_Pos)
138 #define SERCOM_I2CS_CTRLA_MODE_USART_INT_CLK (SERCOM_I2CS_CTRLA_MODE_USART_INT_CLK_Val << SERCOM_I2CS_CTRLA_MODE_Pos)
139 #define SERCOM_I2CS_CTRLA_MODE_SPI_SLAVE (SERCOM_I2CS_CTRLA_MODE_SPI_SLAVE_Val << SERCOM_I2CS_CTRLA_MODE_Pos)
140 #define SERCOM_I2CS_CTRLA_MODE_SPI_MASTER (SERCOM_I2CS_CTRLA_MODE_SPI_MASTER_Val << SERCOM_I2CS_CTRLA_MODE_Pos)
141 #define SERCOM_I2CS_CTRLA_MODE_I2C_SLAVE (SERCOM_I2CS_CTRLA_MODE_I2C_SLAVE_Val << SERCOM_I2CS_CTRLA_MODE_Pos)
142 #define SERCOM_I2CS_CTRLA_MODE_I2C_MASTER (SERCOM_I2CS_CTRLA_MODE_I2C_MASTER_Val << SERCOM_I2CS_CTRLA_MODE_Pos)
143 #define SERCOM_I2CS_CTRLA_RUNSTDBY_Pos 7            /**< \brief (SERCOM_I2CS_CTRLA) Run in Standby */
144 #define SERCOM_I2CS_CTRLA_RUNSTDBY  (_U_(0x1) << SERCOM_I2CS_CTRLA_RUNSTDBY_Pos)
145 #define SERCOM_I2CS_CTRLA_PINOUT_Pos 16           /**< \brief (SERCOM_I2CS_CTRLA) Pin Usage */
146 #define SERCOM_I2CS_CTRLA_PINOUT    (_U_(0x1) << SERCOM_I2CS_CTRLA_PINOUT_Pos)
147 #define SERCOM_I2CS_CTRLA_SDAHOLD_Pos 20           /**< \brief (SERCOM_I2CS_CTRLA) SDA Hold Time */
148 #define SERCOM_I2CS_CTRLA_SDAHOLD_Msk (_U_(0x3) << SERCOM_I2CS_CTRLA_SDAHOLD_Pos)
149 #define SERCOM_I2CS_CTRLA_SDAHOLD(value) (SERCOM_I2CS_CTRLA_SDAHOLD_Msk & ((value) << SERCOM_I2CS_CTRLA_SDAHOLD_Pos))
150 #define   SERCOM_I2CS_CTRLA_SDAHOLD_DIS_Val _U_(0x0)   /**< \brief (SERCOM_I2CS_CTRLA) Disabled */
151 #define   SERCOM_I2CS_CTRLA_SDAHOLD_75_Val _U_(0x1)   /**< \brief (SERCOM_I2CS_CTRLA) 50-100 ns hold time */
152 #define   SERCOM_I2CS_CTRLA_SDAHOLD_450_Val _U_(0x2)   /**< \brief (SERCOM_I2CS_CTRLA) 300-600 ns hold time */
153 #define   SERCOM_I2CS_CTRLA_SDAHOLD_600_Val _U_(0x3)   /**< \brief (SERCOM_I2CS_CTRLA) 400-800 ns hold time */
154 #define SERCOM_I2CS_CTRLA_SDAHOLD_DIS (SERCOM_I2CS_CTRLA_SDAHOLD_DIS_Val << SERCOM_I2CS_CTRLA_SDAHOLD_Pos)
155 #define SERCOM_I2CS_CTRLA_SDAHOLD_75 (SERCOM_I2CS_CTRLA_SDAHOLD_75_Val << SERCOM_I2CS_CTRLA_SDAHOLD_Pos)
156 #define SERCOM_I2CS_CTRLA_SDAHOLD_450 (SERCOM_I2CS_CTRLA_SDAHOLD_450_Val << SERCOM_I2CS_CTRLA_SDAHOLD_Pos)
157 #define SERCOM_I2CS_CTRLA_SDAHOLD_600 (SERCOM_I2CS_CTRLA_SDAHOLD_600_Val << SERCOM_I2CS_CTRLA_SDAHOLD_Pos)
158 #define SERCOM_I2CS_CTRLA_LOWTOUT_Pos 30           /**< \brief (SERCOM_I2CS_CTRLA) SCL Low Time-out */
159 #define SERCOM_I2CS_CTRLA_LOWTOUT   (_U_(0x1) << SERCOM_I2CS_CTRLA_LOWTOUT_Pos)
160 #define SERCOM_I2CS_CTRLA_MASK      _U_(0x4031009F) /**< \brief (SERCOM_I2CS_CTRLA) MASK Register */
161 
162 /* -------- SERCOM_SPI_CTRLA : (SERCOM Offset: 0x00) (R/W 32) SPI SPI Control A -------- */
163 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
164 typedef union {
165   struct {
166     uint32_t SWRST:1;          /*!< bit:      0  Software Reset                     */
167     uint32_t ENABLE:1;         /*!< bit:      1  Enable                             */
168     uint32_t MODE:3;           /*!< bit:  2.. 4  Operating Mode                     */
169     uint32_t :2;               /*!< bit:  5.. 6  Reserved                           */
170     uint32_t RUNSTDBY:1;       /*!< bit:      7  Run In Standby                     */
171     uint32_t IBON:1;           /*!< bit:      8  Immediate Buffer Overflow Notification */
172     uint32_t :7;               /*!< bit:  9..15  Reserved                           */
173     uint32_t DOPO:2;           /*!< bit: 16..17  Data Out Pinout                    */
174     uint32_t :2;               /*!< bit: 18..19  Reserved                           */
175     uint32_t DIPO:2;           /*!< bit: 20..21  Data In Pinout                     */
176     uint32_t :2;               /*!< bit: 22..23  Reserved                           */
177     uint32_t FORM:4;           /*!< bit: 24..27  Frame Format                       */
178     uint32_t CPHA:1;           /*!< bit:     28  Clock Phase                        */
179     uint32_t CPOL:1;           /*!< bit:     29  Clock Polarity                     */
180     uint32_t DORD:1;           /*!< bit:     30  Data Order                         */
181     uint32_t :1;               /*!< bit:     31  Reserved                           */
182   } bit;                       /*!< Structure used for bit  access                  */
183   uint32_t reg;                /*!< Type      used for register access              */
184 } SERCOM_SPI_CTRLA_Type;
185 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
186 
187 #define SERCOM_SPI_CTRLA_OFFSET     0x00         /**< \brief (SERCOM_SPI_CTRLA offset) SPI Control A */
188 #define SERCOM_SPI_CTRLA_RESETVALUE _U_(0x00000000) /**< \brief (SERCOM_SPI_CTRLA reset_value) SPI Control A */
189 
190 #define SERCOM_SPI_CTRLA_SWRST_Pos  0            /**< \brief (SERCOM_SPI_CTRLA) Software Reset */
191 #define SERCOM_SPI_CTRLA_SWRST      (_U_(0x1) << SERCOM_SPI_CTRLA_SWRST_Pos)
192 #define SERCOM_SPI_CTRLA_ENABLE_Pos 1            /**< \brief (SERCOM_SPI_CTRLA) Enable */
193 #define SERCOM_SPI_CTRLA_ENABLE     (_U_(0x1) << SERCOM_SPI_CTRLA_ENABLE_Pos)
194 #define SERCOM_SPI_CTRLA_MODE_Pos   2            /**< \brief (SERCOM_SPI_CTRLA) Operating Mode */
195 #define SERCOM_SPI_CTRLA_MODE_Msk   (_U_(0x7) << SERCOM_SPI_CTRLA_MODE_Pos)
196 #define SERCOM_SPI_CTRLA_MODE(value) (SERCOM_SPI_CTRLA_MODE_Msk & ((value) << SERCOM_SPI_CTRLA_MODE_Pos))
197 #define   SERCOM_SPI_CTRLA_MODE_USART_EXT_CLK_Val _U_(0x0)   /**< \brief (SERCOM_SPI_CTRLA) USART mode with external clock */
198 #define   SERCOM_SPI_CTRLA_MODE_USART_INT_CLK_Val _U_(0x1)   /**< \brief (SERCOM_SPI_CTRLA) USART mode with internal clock */
199 #define   SERCOM_SPI_CTRLA_MODE_SPI_SLAVE_Val _U_(0x2)   /**< \brief (SERCOM_SPI_CTRLA) SPI mode with external clock */
200 #define   SERCOM_SPI_CTRLA_MODE_SPI_MASTER_Val _U_(0x3)   /**< \brief (SERCOM_SPI_CTRLA) SPI mode with internal clock */
201 #define   SERCOM_SPI_CTRLA_MODE_I2C_SLAVE_Val _U_(0x4)   /**< \brief (SERCOM_SPI_CTRLA) I2C mode with external clock */
202 #define   SERCOM_SPI_CTRLA_MODE_I2C_MASTER_Val _U_(0x5)   /**< \brief (SERCOM_SPI_CTRLA) I2C mode with internal clock */
203 #define SERCOM_SPI_CTRLA_MODE_USART_EXT_CLK (SERCOM_SPI_CTRLA_MODE_USART_EXT_CLK_Val << SERCOM_SPI_CTRLA_MODE_Pos)
204 #define SERCOM_SPI_CTRLA_MODE_USART_INT_CLK (SERCOM_SPI_CTRLA_MODE_USART_INT_CLK_Val << SERCOM_SPI_CTRLA_MODE_Pos)
205 #define SERCOM_SPI_CTRLA_MODE_SPI_SLAVE (SERCOM_SPI_CTRLA_MODE_SPI_SLAVE_Val << SERCOM_SPI_CTRLA_MODE_Pos)
206 #define SERCOM_SPI_CTRLA_MODE_SPI_MASTER (SERCOM_SPI_CTRLA_MODE_SPI_MASTER_Val << SERCOM_SPI_CTRLA_MODE_Pos)
207 #define SERCOM_SPI_CTRLA_MODE_I2C_SLAVE (SERCOM_SPI_CTRLA_MODE_I2C_SLAVE_Val << SERCOM_SPI_CTRLA_MODE_Pos)
208 #define SERCOM_SPI_CTRLA_MODE_I2C_MASTER (SERCOM_SPI_CTRLA_MODE_I2C_MASTER_Val << SERCOM_SPI_CTRLA_MODE_Pos)
209 #define SERCOM_SPI_CTRLA_RUNSTDBY_Pos 7            /**< \brief (SERCOM_SPI_CTRLA) Run In Standby */
210 #define SERCOM_SPI_CTRLA_RUNSTDBY   (_U_(0x1) << SERCOM_SPI_CTRLA_RUNSTDBY_Pos)
211 #define SERCOM_SPI_CTRLA_IBON_Pos   8            /**< \brief (SERCOM_SPI_CTRLA) Immediate Buffer Overflow Notification */
212 #define SERCOM_SPI_CTRLA_IBON       (_U_(0x1) << SERCOM_SPI_CTRLA_IBON_Pos)
213 #define SERCOM_SPI_CTRLA_DOPO_Pos   16           /**< \brief (SERCOM_SPI_CTRLA) Data Out Pinout */
214 #define SERCOM_SPI_CTRLA_DOPO_Msk   (_U_(0x3) << SERCOM_SPI_CTRLA_DOPO_Pos)
215 #define SERCOM_SPI_CTRLA_DOPO(value) (SERCOM_SPI_CTRLA_DOPO_Msk & ((value) << SERCOM_SPI_CTRLA_DOPO_Pos))
216 #define SERCOM_SPI_CTRLA_DIPO_Pos   20           /**< \brief (SERCOM_SPI_CTRLA) Data In Pinout */
217 #define SERCOM_SPI_CTRLA_DIPO_Msk   (_U_(0x3) << SERCOM_SPI_CTRLA_DIPO_Pos)
218 #define SERCOM_SPI_CTRLA_DIPO(value) (SERCOM_SPI_CTRLA_DIPO_Msk & ((value) << SERCOM_SPI_CTRLA_DIPO_Pos))
219 #define SERCOM_SPI_CTRLA_FORM_Pos   24           /**< \brief (SERCOM_SPI_CTRLA) Frame Format */
220 #define SERCOM_SPI_CTRLA_FORM_Msk   (_U_(0xF) << SERCOM_SPI_CTRLA_FORM_Pos)
221 #define SERCOM_SPI_CTRLA_FORM(value) (SERCOM_SPI_CTRLA_FORM_Msk & ((value) << SERCOM_SPI_CTRLA_FORM_Pos))
222 #define   SERCOM_SPI_CTRLA_FORM_SPI_Val   _U_(0x0)   /**< \brief (SERCOM_SPI_CTRLA) SPI frame */
223 #define   SERCOM_SPI_CTRLA_FORM_SPI_ADDR_Val _U_(0x2)   /**< \brief (SERCOM_SPI_CTRLA) SPI frame with address */
224 #define SERCOM_SPI_CTRLA_FORM_SPI   (SERCOM_SPI_CTRLA_FORM_SPI_Val << SERCOM_SPI_CTRLA_FORM_Pos)
225 #define SERCOM_SPI_CTRLA_FORM_SPI_ADDR (SERCOM_SPI_CTRLA_FORM_SPI_ADDR_Val << SERCOM_SPI_CTRLA_FORM_Pos)
226 #define SERCOM_SPI_CTRLA_CPHA_Pos   28           /**< \brief (SERCOM_SPI_CTRLA) Clock Phase */
227 #define SERCOM_SPI_CTRLA_CPHA       (_U_(0x1) << SERCOM_SPI_CTRLA_CPHA_Pos)
228 #define SERCOM_SPI_CTRLA_CPOL_Pos   29           /**< \brief (SERCOM_SPI_CTRLA) Clock Polarity */
229 #define SERCOM_SPI_CTRLA_CPOL       (_U_(0x1) << SERCOM_SPI_CTRLA_CPOL_Pos)
230 #define SERCOM_SPI_CTRLA_DORD_Pos   30           /**< \brief (SERCOM_SPI_CTRLA) Data Order */
231 #define SERCOM_SPI_CTRLA_DORD       (_U_(0x1) << SERCOM_SPI_CTRLA_DORD_Pos)
232 #define SERCOM_SPI_CTRLA_MASK       _U_(0x7F33019F) /**< \brief (SERCOM_SPI_CTRLA) MASK Register */
233 
234 /* -------- SERCOM_USART_CTRLA : (SERCOM Offset: 0x00) (R/W 32) USART USART Control A -------- */
235 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
236 typedef union {
237   struct {
238     uint32_t SWRST:1;          /*!< bit:      0  Software Reset                     */
239     uint32_t ENABLE:1;         /*!< bit:      1  Enable                             */
240     uint32_t MODE:3;           /*!< bit:  2.. 4  Operating Mode                     */
241     uint32_t :2;               /*!< bit:  5.. 6  Reserved                           */
242     uint32_t RUNSTDBY:1;       /*!< bit:      7  Run In Standby                     */
243     uint32_t IBON:1;           /*!< bit:      8  Immediate Buffer Overflow Notification */
244     uint32_t :7;               /*!< bit:  9..15  Reserved                           */
245     uint32_t TXPO:1;           /*!< bit:     16  Transmit Data Pinout               */
246     uint32_t :3;               /*!< bit: 17..19  Reserved                           */
247     uint32_t RXPO:2;           /*!< bit: 20..21  Receive Data Pinout                */
248     uint32_t :2;               /*!< bit: 22..23  Reserved                           */
249     uint32_t FORM:4;           /*!< bit: 24..27  Frame Format                       */
250     uint32_t CMODE:1;          /*!< bit:     28  Communication Mode                 */
251     uint32_t CPOL:1;           /*!< bit:     29  Clock Polarity                     */
252     uint32_t DORD:1;           /*!< bit:     30  Data Order                         */
253     uint32_t :1;               /*!< bit:     31  Reserved                           */
254   } bit;                       /*!< Structure used for bit  access                  */
255   uint32_t reg;                /*!< Type      used for register access              */
256 } SERCOM_USART_CTRLA_Type;
257 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
258 
259 #define SERCOM_USART_CTRLA_OFFSET   0x00         /**< \brief (SERCOM_USART_CTRLA offset) USART Control A */
260 #define SERCOM_USART_CTRLA_RESETVALUE _U_(0x00000000) /**< \brief (SERCOM_USART_CTRLA reset_value) USART Control A */
261 
262 #define SERCOM_USART_CTRLA_SWRST_Pos 0            /**< \brief (SERCOM_USART_CTRLA) Software Reset */
263 #define SERCOM_USART_CTRLA_SWRST    (_U_(0x1) << SERCOM_USART_CTRLA_SWRST_Pos)
264 #define SERCOM_USART_CTRLA_ENABLE_Pos 1            /**< \brief (SERCOM_USART_CTRLA) Enable */
265 #define SERCOM_USART_CTRLA_ENABLE   (_U_(0x1) << SERCOM_USART_CTRLA_ENABLE_Pos)
266 #define SERCOM_USART_CTRLA_MODE_Pos 2            /**< \brief (SERCOM_USART_CTRLA) Operating Mode */
267 #define SERCOM_USART_CTRLA_MODE_Msk (_U_(0x7) << SERCOM_USART_CTRLA_MODE_Pos)
268 #define SERCOM_USART_CTRLA_MODE(value) (SERCOM_USART_CTRLA_MODE_Msk & ((value) << SERCOM_USART_CTRLA_MODE_Pos))
269 #define   SERCOM_USART_CTRLA_MODE_USART_EXT_CLK_Val _U_(0x0)   /**< \brief (SERCOM_USART_CTRLA) USART mode with external clock */
270 #define   SERCOM_USART_CTRLA_MODE_USART_INT_CLK_Val _U_(0x1)   /**< \brief (SERCOM_USART_CTRLA) USART mode with internal clock */
271 #define   SERCOM_USART_CTRLA_MODE_SPI_SLAVE_Val _U_(0x2)   /**< \brief (SERCOM_USART_CTRLA) SPI mode with external clock */
272 #define   SERCOM_USART_CTRLA_MODE_SPI_MASTER_Val _U_(0x3)   /**< \brief (SERCOM_USART_CTRLA) SPI mode with internal clock */
273 #define   SERCOM_USART_CTRLA_MODE_I2C_SLAVE_Val _U_(0x4)   /**< \brief (SERCOM_USART_CTRLA) I2C mode with external clock */
274 #define   SERCOM_USART_CTRLA_MODE_I2C_MASTER_Val _U_(0x5)   /**< \brief (SERCOM_USART_CTRLA) I2C mode with internal clock */
275 #define SERCOM_USART_CTRLA_MODE_USART_EXT_CLK (SERCOM_USART_CTRLA_MODE_USART_EXT_CLK_Val << SERCOM_USART_CTRLA_MODE_Pos)
276 #define SERCOM_USART_CTRLA_MODE_USART_INT_CLK (SERCOM_USART_CTRLA_MODE_USART_INT_CLK_Val << SERCOM_USART_CTRLA_MODE_Pos)
277 #define SERCOM_USART_CTRLA_MODE_SPI_SLAVE (SERCOM_USART_CTRLA_MODE_SPI_SLAVE_Val << SERCOM_USART_CTRLA_MODE_Pos)
278 #define SERCOM_USART_CTRLA_MODE_SPI_MASTER (SERCOM_USART_CTRLA_MODE_SPI_MASTER_Val << SERCOM_USART_CTRLA_MODE_Pos)
279 #define SERCOM_USART_CTRLA_MODE_I2C_SLAVE (SERCOM_USART_CTRLA_MODE_I2C_SLAVE_Val << SERCOM_USART_CTRLA_MODE_Pos)
280 #define SERCOM_USART_CTRLA_MODE_I2C_MASTER (SERCOM_USART_CTRLA_MODE_I2C_MASTER_Val << SERCOM_USART_CTRLA_MODE_Pos)
281 #define SERCOM_USART_CTRLA_RUNSTDBY_Pos 7            /**< \brief (SERCOM_USART_CTRLA) Run In Standby */
282 #define SERCOM_USART_CTRLA_RUNSTDBY (_U_(0x1) << SERCOM_USART_CTRLA_RUNSTDBY_Pos)
283 #define SERCOM_USART_CTRLA_IBON_Pos 8            /**< \brief (SERCOM_USART_CTRLA) Immediate Buffer Overflow Notification */
284 #define SERCOM_USART_CTRLA_IBON     (_U_(0x1) << SERCOM_USART_CTRLA_IBON_Pos)
285 #define SERCOM_USART_CTRLA_TXPO_Pos 16           /**< \brief (SERCOM_USART_CTRLA) Transmit Data Pinout */
286 #define SERCOM_USART_CTRLA_TXPO     (_U_(0x1) << SERCOM_USART_CTRLA_TXPO_Pos)
287 #define   SERCOM_USART_CTRLA_TXPO_PAD0_Val _U_(0x0)   /**< \brief (SERCOM_USART_CTRLA) TXD at PAD0, XCK at PAD1 */
288 #define   SERCOM_USART_CTRLA_TXPO_PAD2_Val _U_(0x1)   /**< \brief (SERCOM_USART_CTRLA) TXD at PAD2, XCK at PAD3 */
289 #define SERCOM_USART_CTRLA_TXPO_PAD0 (SERCOM_USART_CTRLA_TXPO_PAD0_Val << SERCOM_USART_CTRLA_TXPO_Pos)
290 #define SERCOM_USART_CTRLA_TXPO_PAD2 (SERCOM_USART_CTRLA_TXPO_PAD2_Val << SERCOM_USART_CTRLA_TXPO_Pos)
291 #define SERCOM_USART_CTRLA_RXPO_Pos 20           /**< \brief (SERCOM_USART_CTRLA) Receive Data Pinout */
292 #define SERCOM_USART_CTRLA_RXPO_Msk (_U_(0x3) << SERCOM_USART_CTRLA_RXPO_Pos)
293 #define SERCOM_USART_CTRLA_RXPO(value) (SERCOM_USART_CTRLA_RXPO_Msk & ((value) << SERCOM_USART_CTRLA_RXPO_Pos))
294 #define   SERCOM_USART_CTRLA_RXPO_PAD0_Val _U_(0x0)   /**< \brief (SERCOM_USART_CTRLA) SERCOM_PAD0 */
295 #define   SERCOM_USART_CTRLA_RXPO_PAD1_Val _U_(0x1)   /**< \brief (SERCOM_USART_CTRLA) SERCOM_PAD1 */
296 #define   SERCOM_USART_CTRLA_RXPO_PAD2_Val _U_(0x2)   /**< \brief (SERCOM_USART_CTRLA) SERCOM_PAD2 */
297 #define   SERCOM_USART_CTRLA_RXPO_PAD3_Val _U_(0x3)   /**< \brief (SERCOM_USART_CTRLA) SERCOM_PAD3 */
298 #define SERCOM_USART_CTRLA_RXPO_PAD0 (SERCOM_USART_CTRLA_RXPO_PAD0_Val << SERCOM_USART_CTRLA_RXPO_Pos)
299 #define SERCOM_USART_CTRLA_RXPO_PAD1 (SERCOM_USART_CTRLA_RXPO_PAD1_Val << SERCOM_USART_CTRLA_RXPO_Pos)
300 #define SERCOM_USART_CTRLA_RXPO_PAD2 (SERCOM_USART_CTRLA_RXPO_PAD2_Val << SERCOM_USART_CTRLA_RXPO_Pos)
301 #define SERCOM_USART_CTRLA_RXPO_PAD3 (SERCOM_USART_CTRLA_RXPO_PAD3_Val << SERCOM_USART_CTRLA_RXPO_Pos)
302 #define SERCOM_USART_CTRLA_FORM_Pos 24           /**< \brief (SERCOM_USART_CTRLA) Frame Format */
303 #define SERCOM_USART_CTRLA_FORM_Msk (_U_(0xF) << SERCOM_USART_CTRLA_FORM_Pos)
304 #define SERCOM_USART_CTRLA_FORM(value) (SERCOM_USART_CTRLA_FORM_Msk & ((value) << SERCOM_USART_CTRLA_FORM_Pos))
305 #define   SERCOM_USART_CTRLA_FORM_0_Val   _U_(0x0)   /**< \brief (SERCOM_USART_CTRLA) USART frame */
306 #define   SERCOM_USART_CTRLA_FORM_1_Val   _U_(0x1)   /**< \brief (SERCOM_USART_CTRLA) USART frame with parity */
307 #define SERCOM_USART_CTRLA_FORM_0   (SERCOM_USART_CTRLA_FORM_0_Val << SERCOM_USART_CTRLA_FORM_Pos)
308 #define SERCOM_USART_CTRLA_FORM_1   (SERCOM_USART_CTRLA_FORM_1_Val << SERCOM_USART_CTRLA_FORM_Pos)
309 #define SERCOM_USART_CTRLA_CMODE_Pos 28           /**< \brief (SERCOM_USART_CTRLA) Communication Mode */
310 #define SERCOM_USART_CTRLA_CMODE    (_U_(0x1) << SERCOM_USART_CTRLA_CMODE_Pos)
311 #define SERCOM_USART_CTRLA_CPOL_Pos 29           /**< \brief (SERCOM_USART_CTRLA) Clock Polarity */
312 #define SERCOM_USART_CTRLA_CPOL     (_U_(0x1) << SERCOM_USART_CTRLA_CPOL_Pos)
313 #define SERCOM_USART_CTRLA_DORD_Pos 30           /**< \brief (SERCOM_USART_CTRLA) Data Order */
314 #define SERCOM_USART_CTRLA_DORD     (_U_(0x1) << SERCOM_USART_CTRLA_DORD_Pos)
315 #define SERCOM_USART_CTRLA_MASK     _U_(0x7F31019F) /**< \brief (SERCOM_USART_CTRLA) MASK Register */
316 
317 /* -------- SERCOM_I2CM_CTRLB : (SERCOM Offset: 0x04) (R/W 32) I2CM I2CM Control B -------- */
318 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
319 typedef union {
320   struct {
321     uint32_t :8;               /*!< bit:  0.. 7  Reserved                           */
322     uint32_t SMEN:1;           /*!< bit:      8  Smart Mode Enable                  */
323     uint32_t QCEN:1;           /*!< bit:      9  Quick Command Enable               */
324     uint32_t :6;               /*!< bit: 10..15  Reserved                           */
325     uint32_t CMD:2;            /*!< bit: 16..17  Command                            */
326     uint32_t ACKACT:1;         /*!< bit:     18  Acknowledge Action                 */
327     uint32_t :13;              /*!< bit: 19..31  Reserved                           */
328   } bit;                       /*!< Structure used for bit  access                  */
329   uint32_t reg;                /*!< Type      used for register access              */
330 } SERCOM_I2CM_CTRLB_Type;
331 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
332 
333 #define SERCOM_I2CM_CTRLB_OFFSET    0x04         /**< \brief (SERCOM_I2CM_CTRLB offset) I2CM Control B */
334 #define SERCOM_I2CM_CTRLB_RESETVALUE _U_(0x00000000) /**< \brief (SERCOM_I2CM_CTRLB reset_value) I2CM Control B */
335 
336 #define SERCOM_I2CM_CTRLB_SMEN_Pos  8            /**< \brief (SERCOM_I2CM_CTRLB) Smart Mode Enable */
337 #define SERCOM_I2CM_CTRLB_SMEN      (_U_(0x1) << SERCOM_I2CM_CTRLB_SMEN_Pos)
338 #define SERCOM_I2CM_CTRLB_QCEN_Pos  9            /**< \brief (SERCOM_I2CM_CTRLB) Quick Command Enable */
339 #define SERCOM_I2CM_CTRLB_QCEN      (_U_(0x1) << SERCOM_I2CM_CTRLB_QCEN_Pos)
340 #define SERCOM_I2CM_CTRLB_CMD_Pos   16           /**< \brief (SERCOM_I2CM_CTRLB) Command */
341 #define SERCOM_I2CM_CTRLB_CMD_Msk   (_U_(0x3) << SERCOM_I2CM_CTRLB_CMD_Pos)
342 #define SERCOM_I2CM_CTRLB_CMD(value) (SERCOM_I2CM_CTRLB_CMD_Msk & ((value) << SERCOM_I2CM_CTRLB_CMD_Pos))
343 #define SERCOM_I2CM_CTRLB_ACKACT_Pos 18           /**< \brief (SERCOM_I2CM_CTRLB) Acknowledge Action */
344 #define SERCOM_I2CM_CTRLB_ACKACT    (_U_(0x1) << SERCOM_I2CM_CTRLB_ACKACT_Pos)
345 #define SERCOM_I2CM_CTRLB_MASK      _U_(0x00070300) /**< \brief (SERCOM_I2CM_CTRLB) MASK Register */
346 
347 /* -------- SERCOM_I2CS_CTRLB : (SERCOM Offset: 0x04) (R/W 32) I2CS I2CS Control B -------- */
348 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
349 typedef union {
350   struct {
351     uint32_t :8;               /*!< bit:  0.. 7  Reserved                           */
352     uint32_t SMEN:1;           /*!< bit:      8  Smart Mode Enable                  */
353     uint32_t :5;               /*!< bit:  9..13  Reserved                           */
354     uint32_t AMODE:2;          /*!< bit: 14..15  Address Mode                       */
355     uint32_t CMD:2;            /*!< bit: 16..17  Command                            */
356     uint32_t ACKACT:1;         /*!< bit:     18  Acknowledge Action                 */
357     uint32_t :13;              /*!< bit: 19..31  Reserved                           */
358   } bit;                       /*!< Structure used for bit  access                  */
359   uint32_t reg;                /*!< Type      used for register access              */
360 } SERCOM_I2CS_CTRLB_Type;
361 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
362 
363 #define SERCOM_I2CS_CTRLB_OFFSET    0x04         /**< \brief (SERCOM_I2CS_CTRLB offset) I2CS Control B */
364 #define SERCOM_I2CS_CTRLB_RESETVALUE _U_(0x00000000) /**< \brief (SERCOM_I2CS_CTRLB reset_value) I2CS Control B */
365 
366 #define SERCOM_I2CS_CTRLB_SMEN_Pos  8            /**< \brief (SERCOM_I2CS_CTRLB) Smart Mode Enable */
367 #define SERCOM_I2CS_CTRLB_SMEN      (_U_(0x1) << SERCOM_I2CS_CTRLB_SMEN_Pos)
368 #define SERCOM_I2CS_CTRLB_AMODE_Pos 14           /**< \brief (SERCOM_I2CS_CTRLB) Address Mode */
369 #define SERCOM_I2CS_CTRLB_AMODE_Msk (_U_(0x3) << SERCOM_I2CS_CTRLB_AMODE_Pos)
370 #define SERCOM_I2CS_CTRLB_AMODE(value) (SERCOM_I2CS_CTRLB_AMODE_Msk & ((value) << SERCOM_I2CS_CTRLB_AMODE_Pos))
371 #define SERCOM_I2CS_CTRLB_CMD_Pos   16           /**< \brief (SERCOM_I2CS_CTRLB) Command */
372 #define SERCOM_I2CS_CTRLB_CMD_Msk   (_U_(0x3) << SERCOM_I2CS_CTRLB_CMD_Pos)
373 #define SERCOM_I2CS_CTRLB_CMD(value) (SERCOM_I2CS_CTRLB_CMD_Msk & ((value) << SERCOM_I2CS_CTRLB_CMD_Pos))
374 #define SERCOM_I2CS_CTRLB_ACKACT_Pos 18           /**< \brief (SERCOM_I2CS_CTRLB) Acknowledge Action */
375 #define SERCOM_I2CS_CTRLB_ACKACT    (_U_(0x1) << SERCOM_I2CS_CTRLB_ACKACT_Pos)
376 #define SERCOM_I2CS_CTRLB_MASK      _U_(0x0007C100) /**< \brief (SERCOM_I2CS_CTRLB) MASK Register */
377 
378 /* -------- SERCOM_SPI_CTRLB : (SERCOM Offset: 0x04) (R/W 32) SPI SPI Control B -------- */
379 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
380 typedef union {
381   struct {
382     uint32_t CHSIZE:3;         /*!< bit:  0.. 2  Character Size                     */
383     uint32_t :3;               /*!< bit:  3.. 5  Reserved                           */
384     uint32_t PLOADEN:1;        /*!< bit:      6  Slave Data Preload Enable          */
385     uint32_t :7;               /*!< bit:  7..13  Reserved                           */
386     uint32_t AMODE:2;          /*!< bit: 14..15  Address Mode                       */
387     uint32_t :1;               /*!< bit:     16  Reserved                           */
388     uint32_t RXEN:1;           /*!< bit:     17  Receiver Enable                    */
389     uint32_t :14;              /*!< bit: 18..31  Reserved                           */
390   } bit;                       /*!< Structure used for bit  access                  */
391   uint32_t reg;                /*!< Type      used for register access              */
392 } SERCOM_SPI_CTRLB_Type;
393 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
394 
395 #define SERCOM_SPI_CTRLB_OFFSET     0x04         /**< \brief (SERCOM_SPI_CTRLB offset) SPI Control B */
396 #define SERCOM_SPI_CTRLB_RESETVALUE _U_(0x00000000) /**< \brief (SERCOM_SPI_CTRLB reset_value) SPI Control B */
397 
398 #define SERCOM_SPI_CTRLB_CHSIZE_Pos 0            /**< \brief (SERCOM_SPI_CTRLB) Character Size */
399 #define SERCOM_SPI_CTRLB_CHSIZE_Msk (_U_(0x7) << SERCOM_SPI_CTRLB_CHSIZE_Pos)
400 #define SERCOM_SPI_CTRLB_CHSIZE(value) (SERCOM_SPI_CTRLB_CHSIZE_Msk & ((value) << SERCOM_SPI_CTRLB_CHSIZE_Pos))
401 #define SERCOM_SPI_CTRLB_PLOADEN_Pos 6            /**< \brief (SERCOM_SPI_CTRLB) Slave Data Preload Enable */
402 #define SERCOM_SPI_CTRLB_PLOADEN    (_U_(0x1) << SERCOM_SPI_CTRLB_PLOADEN_Pos)
403 #define SERCOM_SPI_CTRLB_AMODE_Pos  14           /**< \brief (SERCOM_SPI_CTRLB) Address Mode */
404 #define SERCOM_SPI_CTRLB_AMODE_Msk  (_U_(0x3) << SERCOM_SPI_CTRLB_AMODE_Pos)
405 #define SERCOM_SPI_CTRLB_AMODE(value) (SERCOM_SPI_CTRLB_AMODE_Msk & ((value) << SERCOM_SPI_CTRLB_AMODE_Pos))
406 #define   SERCOM_SPI_CTRLB_AMODE_MASK_Val _U_(0x0)   /**< \brief (SERCOM_SPI_CTRLB) ADDRMASK is used as a mask to the ADDR register. */
407 #define   SERCOM_SPI_CTRLB_AMODE_2ADDR_Val _U_(0x1)   /**< \brief (SERCOM_SPI_CTRLB) The slave responds to the 2 unique addresses in ADDR and ADDRMASK. */
408 #define   SERCOM_SPI_CTRLB_AMODE_RANGE_Val _U_(0x2)   /**< \brief (SERCOM_SPI_CTRLB) The slave responds to the range of addresses between and including ADDR and ADDRMASK. ADDR is the upper limit. */
409 #define SERCOM_SPI_CTRLB_AMODE_MASK (SERCOM_SPI_CTRLB_AMODE_MASK_Val << SERCOM_SPI_CTRLB_AMODE_Pos)
410 #define SERCOM_SPI_CTRLB_AMODE_2ADDR (SERCOM_SPI_CTRLB_AMODE_2ADDR_Val << SERCOM_SPI_CTRLB_AMODE_Pos)
411 #define SERCOM_SPI_CTRLB_AMODE_RANGE (SERCOM_SPI_CTRLB_AMODE_RANGE_Val << SERCOM_SPI_CTRLB_AMODE_Pos)
412 #define SERCOM_SPI_CTRLB_RXEN_Pos   17           /**< \brief (SERCOM_SPI_CTRLB) Receiver Enable */
413 #define SERCOM_SPI_CTRLB_RXEN       (_U_(0x1) << SERCOM_SPI_CTRLB_RXEN_Pos)
414 #define SERCOM_SPI_CTRLB_MASK       _U_(0x0002C047) /**< \brief (SERCOM_SPI_CTRLB) MASK Register */
415 
416 /* -------- SERCOM_USART_CTRLB : (SERCOM Offset: 0x04) (R/W 32) USART USART Control B -------- */
417 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
418 typedef union {
419   struct {
420     uint32_t CHSIZE:3;         /*!< bit:  0.. 2  Character Size                     */
421     uint32_t :3;               /*!< bit:  3.. 5  Reserved                           */
422     uint32_t SBMODE:1;         /*!< bit:      6  Stop Bit Mode                      */
423     uint32_t :2;               /*!< bit:  7.. 8  Reserved                           */
424     uint32_t SFDE:1;           /*!< bit:      9  Start of Frame Detection Enable    */
425     uint32_t :3;               /*!< bit: 10..12  Reserved                           */
426     uint32_t PMODE:1;          /*!< bit:     13  Parity Mode                        */
427     uint32_t :2;               /*!< bit: 14..15  Reserved                           */
428     uint32_t TXEN:1;           /*!< bit:     16  Transmitter Enable                 */
429     uint32_t RXEN:1;           /*!< bit:     17  Receiver Enable                    */
430     uint32_t :14;              /*!< bit: 18..31  Reserved                           */
431   } bit;                       /*!< Structure used for bit  access                  */
432   uint32_t reg;                /*!< Type      used for register access              */
433 } SERCOM_USART_CTRLB_Type;
434 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
435 
436 #define SERCOM_USART_CTRLB_OFFSET   0x04         /**< \brief (SERCOM_USART_CTRLB offset) USART Control B */
437 #define SERCOM_USART_CTRLB_RESETVALUE _U_(0x00000000) /**< \brief (SERCOM_USART_CTRLB reset_value) USART Control B */
438 
439 #define SERCOM_USART_CTRLB_CHSIZE_Pos 0            /**< \brief (SERCOM_USART_CTRLB) Character Size */
440 #define SERCOM_USART_CTRLB_CHSIZE_Msk (_U_(0x7) << SERCOM_USART_CTRLB_CHSIZE_Pos)
441 #define SERCOM_USART_CTRLB_CHSIZE(value) (SERCOM_USART_CTRLB_CHSIZE_Msk & ((value) << SERCOM_USART_CTRLB_CHSIZE_Pos))
442 #define SERCOM_USART_CTRLB_SBMODE_Pos 6            /**< \brief (SERCOM_USART_CTRLB) Stop Bit Mode */
443 #define SERCOM_USART_CTRLB_SBMODE   (_U_(0x1) << SERCOM_USART_CTRLB_SBMODE_Pos)
444 #define SERCOM_USART_CTRLB_SFDE_Pos 9            /**< \brief (SERCOM_USART_CTRLB) Start of Frame Detection Enable */
445 #define SERCOM_USART_CTRLB_SFDE     (_U_(0x1) << SERCOM_USART_CTRLB_SFDE_Pos)
446 #define SERCOM_USART_CTRLB_PMODE_Pos 13           /**< \brief (SERCOM_USART_CTRLB) Parity Mode */
447 #define SERCOM_USART_CTRLB_PMODE    (_U_(0x1) << SERCOM_USART_CTRLB_PMODE_Pos)
448 #define SERCOM_USART_CTRLB_TXEN_Pos 16           /**< \brief (SERCOM_USART_CTRLB) Transmitter Enable */
449 #define SERCOM_USART_CTRLB_TXEN     (_U_(0x1) << SERCOM_USART_CTRLB_TXEN_Pos)
450 #define SERCOM_USART_CTRLB_RXEN_Pos 17           /**< \brief (SERCOM_USART_CTRLB) Receiver Enable */
451 #define SERCOM_USART_CTRLB_RXEN     (_U_(0x1) << SERCOM_USART_CTRLB_RXEN_Pos)
452 #define SERCOM_USART_CTRLB_MASK     _U_(0x00032247) /**< \brief (SERCOM_USART_CTRLB) MASK Register */
453 
454 /* -------- SERCOM_I2CM_DBGCTRL : (SERCOM Offset: 0x08) (R/W  8) I2CM I2CM Debug Control -------- */
455 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
456 typedef union {
457   struct {
458     uint8_t  DBGSTOP:1;        /*!< bit:      0  Debug Stop Mode                    */
459     uint8_t  :7;               /*!< bit:  1.. 7  Reserved                           */
460   } bit;                       /*!< Structure used for bit  access                  */
461   uint8_t reg;                 /*!< Type      used for register access              */
462 } SERCOM_I2CM_DBGCTRL_Type;
463 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
464 
465 #define SERCOM_I2CM_DBGCTRL_OFFSET  0x08         /**< \brief (SERCOM_I2CM_DBGCTRL offset) I2CM Debug Control */
466 #define SERCOM_I2CM_DBGCTRL_RESETVALUE _U_(0x00)    /**< \brief (SERCOM_I2CM_DBGCTRL reset_value) I2CM Debug Control */
467 
468 #define SERCOM_I2CM_DBGCTRL_DBGSTOP_Pos 0            /**< \brief (SERCOM_I2CM_DBGCTRL) Debug Stop Mode */
469 #define SERCOM_I2CM_DBGCTRL_DBGSTOP (_U_(0x1) << SERCOM_I2CM_DBGCTRL_DBGSTOP_Pos)
470 #define SERCOM_I2CM_DBGCTRL_MASK    _U_(0x01)    /**< \brief (SERCOM_I2CM_DBGCTRL) MASK Register */
471 
472 /* -------- SERCOM_SPI_DBGCTRL : (SERCOM Offset: 0x08) (R/W  8) SPI SPI Debug Control -------- */
473 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
474 typedef union {
475   struct {
476     uint8_t  DBGSTOP:1;        /*!< bit:      0  Debug Stop Mode                    */
477     uint8_t  :7;               /*!< bit:  1.. 7  Reserved                           */
478   } bit;                       /*!< Structure used for bit  access                  */
479   uint8_t reg;                 /*!< Type      used for register access              */
480 } SERCOM_SPI_DBGCTRL_Type;
481 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
482 
483 #define SERCOM_SPI_DBGCTRL_OFFSET   0x08         /**< \brief (SERCOM_SPI_DBGCTRL offset) SPI Debug Control */
484 #define SERCOM_SPI_DBGCTRL_RESETVALUE _U_(0x00)    /**< \brief (SERCOM_SPI_DBGCTRL reset_value) SPI Debug Control */
485 
486 #define SERCOM_SPI_DBGCTRL_DBGSTOP_Pos 0            /**< \brief (SERCOM_SPI_DBGCTRL) Debug Stop Mode */
487 #define SERCOM_SPI_DBGCTRL_DBGSTOP  (_U_(0x1) << SERCOM_SPI_DBGCTRL_DBGSTOP_Pos)
488 #define SERCOM_SPI_DBGCTRL_MASK     _U_(0x01)    /**< \brief (SERCOM_SPI_DBGCTRL) MASK Register */
489 
490 /* -------- SERCOM_USART_DBGCTRL : (SERCOM Offset: 0x08) (R/W  8) USART USART Debug Control -------- */
491 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
492 typedef union {
493   struct {
494     uint8_t  DBGSTOP:1;        /*!< bit:      0  Debug Stop Mode                    */
495     uint8_t  :7;               /*!< bit:  1.. 7  Reserved                           */
496   } bit;                       /*!< Structure used for bit  access                  */
497   uint8_t reg;                 /*!< Type      used for register access              */
498 } SERCOM_USART_DBGCTRL_Type;
499 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
500 
501 #define SERCOM_USART_DBGCTRL_OFFSET 0x08         /**< \brief (SERCOM_USART_DBGCTRL offset) USART Debug Control */
502 #define SERCOM_USART_DBGCTRL_RESETVALUE _U_(0x00)    /**< \brief (SERCOM_USART_DBGCTRL reset_value) USART Debug Control */
503 
504 #define SERCOM_USART_DBGCTRL_DBGSTOP_Pos 0            /**< \brief (SERCOM_USART_DBGCTRL) Debug Stop Mode */
505 #define SERCOM_USART_DBGCTRL_DBGSTOP (_U_(0x1) << SERCOM_USART_DBGCTRL_DBGSTOP_Pos)
506 #define SERCOM_USART_DBGCTRL_MASK   _U_(0x01)    /**< \brief (SERCOM_USART_DBGCTRL) MASK Register */
507 
508 /* -------- SERCOM_I2CM_BAUD : (SERCOM Offset: 0x0A) (R/W 16) I2CM I2CM Baud Rate -------- */
509 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
510 typedef union {
511   struct {
512     uint16_t BAUD:8;           /*!< bit:  0.. 7  Master Baud Rate                   */
513     uint16_t BAUDLOW:8;        /*!< bit:  8..15  Master Baud Rate Low               */
514   } bit;                       /*!< Structure used for bit  access                  */
515   uint16_t reg;                /*!< Type      used for register access              */
516 } SERCOM_I2CM_BAUD_Type;
517 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
518 
519 #define SERCOM_I2CM_BAUD_OFFSET     0x0A         /**< \brief (SERCOM_I2CM_BAUD offset) I2CM Baud Rate */
520 #define SERCOM_I2CM_BAUD_RESETVALUE _U_(0x0000)  /**< \brief (SERCOM_I2CM_BAUD reset_value) I2CM Baud Rate */
521 
522 #define SERCOM_I2CM_BAUD_BAUD_Pos   0            /**< \brief (SERCOM_I2CM_BAUD) Master Baud Rate */
523 #define SERCOM_I2CM_BAUD_BAUD_Msk   (_U_(0xFF) << SERCOM_I2CM_BAUD_BAUD_Pos)
524 #define SERCOM_I2CM_BAUD_BAUD(value) (SERCOM_I2CM_BAUD_BAUD_Msk & ((value) << SERCOM_I2CM_BAUD_BAUD_Pos))
525 #define SERCOM_I2CM_BAUD_BAUDLOW_Pos 8            /**< \brief (SERCOM_I2CM_BAUD) Master Baud Rate Low */
526 #define SERCOM_I2CM_BAUD_BAUDLOW_Msk (_U_(0xFF) << SERCOM_I2CM_BAUD_BAUDLOW_Pos)
527 #define SERCOM_I2CM_BAUD_BAUDLOW(value) (SERCOM_I2CM_BAUD_BAUDLOW_Msk & ((value) << SERCOM_I2CM_BAUD_BAUDLOW_Pos))
528 #define SERCOM_I2CM_BAUD_MASK       _U_(0xFFFF)  /**< \brief (SERCOM_I2CM_BAUD) MASK Register */
529 
530 /* -------- SERCOM_SPI_BAUD : (SERCOM Offset: 0x0A) (R/W  8) SPI SPI Baud Rate -------- */
531 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
532 typedef union {
533   struct {
534     uint8_t  BAUD:8;           /*!< bit:  0.. 7  Baud Register                      */
535   } bit;                       /*!< Structure used for bit  access                  */
536   uint8_t reg;                 /*!< Type      used for register access              */
537 } SERCOM_SPI_BAUD_Type;
538 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
539 
540 #define SERCOM_SPI_BAUD_OFFSET      0x0A         /**< \brief (SERCOM_SPI_BAUD offset) SPI Baud Rate */
541 #define SERCOM_SPI_BAUD_RESETVALUE  _U_(0x00)    /**< \brief (SERCOM_SPI_BAUD reset_value) SPI Baud Rate */
542 
543 #define SERCOM_SPI_BAUD_BAUD_Pos    0            /**< \brief (SERCOM_SPI_BAUD) Baud Register */
544 #define SERCOM_SPI_BAUD_BAUD_Msk    (_U_(0xFF) << SERCOM_SPI_BAUD_BAUD_Pos)
545 #define SERCOM_SPI_BAUD_BAUD(value) (SERCOM_SPI_BAUD_BAUD_Msk & ((value) << SERCOM_SPI_BAUD_BAUD_Pos))
546 #define SERCOM_SPI_BAUD_MASK        _U_(0xFF)    /**< \brief (SERCOM_SPI_BAUD) MASK Register */
547 
548 /* -------- SERCOM_USART_BAUD : (SERCOM Offset: 0x0A) (R/W 16) USART USART Baud -------- */
549 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
550 typedef union {
551   struct {
552     uint16_t BAUD:16;          /*!< bit:  0..15  Baud Value                         */
553   } bit;                       /*!< Structure used for bit  access                  */
554   uint16_t reg;                /*!< Type      used for register access              */
555 } SERCOM_USART_BAUD_Type;
556 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
557 
558 #define SERCOM_USART_BAUD_OFFSET    0x0A         /**< \brief (SERCOM_USART_BAUD offset) USART Baud */
559 #define SERCOM_USART_BAUD_RESETVALUE _U_(0x0000)  /**< \brief (SERCOM_USART_BAUD reset_value) USART Baud */
560 
561 #define SERCOM_USART_BAUD_BAUD_Pos  0            /**< \brief (SERCOM_USART_BAUD) Baud Value */
562 #define SERCOM_USART_BAUD_BAUD_Msk  (_U_(0xFFFF) << SERCOM_USART_BAUD_BAUD_Pos)
563 #define SERCOM_USART_BAUD_BAUD(value) (SERCOM_USART_BAUD_BAUD_Msk & ((value) << SERCOM_USART_BAUD_BAUD_Pos))
564 #define SERCOM_USART_BAUD_MASK      _U_(0xFFFF)  /**< \brief (SERCOM_USART_BAUD) MASK Register */
565 
566 /* -------- SERCOM_I2CM_INTENCLR : (SERCOM Offset: 0x0C) (R/W  8) I2CM I2CM Interrupt Enable Clear -------- */
567 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
568 typedef union {
569   struct {
570     uint8_t  MB:1;             /*!< bit:      0  Master on Bus Interrupt Enable     */
571     uint8_t  SB:1;             /*!< bit:      1  Slave on Bus Interrupt Enable      */
572     uint8_t  :6;               /*!< bit:  2.. 7  Reserved                           */
573   } bit;                       /*!< Structure used for bit  access                  */
574   uint8_t reg;                 /*!< Type      used for register access              */
575 } SERCOM_I2CM_INTENCLR_Type;
576 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
577 
578 #define SERCOM_I2CM_INTENCLR_OFFSET 0x0C         /**< \brief (SERCOM_I2CM_INTENCLR offset) I2CM Interrupt Enable Clear */
579 #define SERCOM_I2CM_INTENCLR_RESETVALUE _U_(0x00)    /**< \brief (SERCOM_I2CM_INTENCLR reset_value) I2CM Interrupt Enable Clear */
580 
581 #define SERCOM_I2CM_INTENCLR_MB_Pos 0            /**< \brief (SERCOM_I2CM_INTENCLR) Master on Bus Interrupt Enable */
582 #define SERCOM_I2CM_INTENCLR_MB     (_U_(0x1) << SERCOM_I2CM_INTENCLR_MB_Pos)
583 #define SERCOM_I2CM_INTENCLR_SB_Pos 1            /**< \brief (SERCOM_I2CM_INTENCLR) Slave on Bus Interrupt Enable */
584 #define SERCOM_I2CM_INTENCLR_SB     (_U_(0x1) << SERCOM_I2CM_INTENCLR_SB_Pos)
585 #define SERCOM_I2CM_INTENCLR_MASK   _U_(0x03)    /**< \brief (SERCOM_I2CM_INTENCLR) MASK Register */
586 
587 /* -------- SERCOM_I2CS_INTENCLR : (SERCOM Offset: 0x0C) (R/W  8) I2CS I2CS Interrupt Enable Clear -------- */
588 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
589 typedef union {
590   struct {
591     uint8_t  PREC:1;           /*!< bit:      0  Stop Received Interrupt Enable     */
592     uint8_t  AMATCH:1;         /*!< bit:      1  Address Match Interrupt Enable     */
593     uint8_t  DRDY:1;           /*!< bit:      2  Data Ready Interrupt Enable        */
594     uint8_t  :5;               /*!< bit:  3.. 7  Reserved                           */
595   } bit;                       /*!< Structure used for bit  access                  */
596   uint8_t reg;                 /*!< Type      used for register access              */
597 } SERCOM_I2CS_INTENCLR_Type;
598 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
599 
600 #define SERCOM_I2CS_INTENCLR_OFFSET 0x0C         /**< \brief (SERCOM_I2CS_INTENCLR offset) I2CS Interrupt Enable Clear */
601 #define SERCOM_I2CS_INTENCLR_RESETVALUE _U_(0x00)    /**< \brief (SERCOM_I2CS_INTENCLR reset_value) I2CS Interrupt Enable Clear */
602 
603 #define SERCOM_I2CS_INTENCLR_PREC_Pos 0            /**< \brief (SERCOM_I2CS_INTENCLR) Stop Received Interrupt Enable */
604 #define SERCOM_I2CS_INTENCLR_PREC   (_U_(0x1) << SERCOM_I2CS_INTENCLR_PREC_Pos)
605 #define SERCOM_I2CS_INTENCLR_AMATCH_Pos 1            /**< \brief (SERCOM_I2CS_INTENCLR) Address Match Interrupt Enable */
606 #define SERCOM_I2CS_INTENCLR_AMATCH (_U_(0x1) << SERCOM_I2CS_INTENCLR_AMATCH_Pos)
607 #define SERCOM_I2CS_INTENCLR_DRDY_Pos 2            /**< \brief (SERCOM_I2CS_INTENCLR) Data Ready Interrupt Enable */
608 #define SERCOM_I2CS_INTENCLR_DRDY   (_U_(0x1) << SERCOM_I2CS_INTENCLR_DRDY_Pos)
609 #define SERCOM_I2CS_INTENCLR_MASK   _U_(0x07)    /**< \brief (SERCOM_I2CS_INTENCLR) MASK Register */
610 
611 /* -------- SERCOM_SPI_INTENCLR : (SERCOM Offset: 0x0C) (R/W  8) SPI SPI Interrupt Enable Clear -------- */
612 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
613 typedef union {
614   struct {
615     uint8_t  DRE:1;            /*!< bit:      0  Data Register Empty Interrupt Enable */
616     uint8_t  TXC:1;            /*!< bit:      1  Transmit Complete Interrupt Enable */
617     uint8_t  RXC:1;            /*!< bit:      2  Receive Complete Interrupt Enable  */
618     uint8_t  :5;               /*!< bit:  3.. 7  Reserved                           */
619   } bit;                       /*!< Structure used for bit  access                  */
620   uint8_t reg;                 /*!< Type      used for register access              */
621 } SERCOM_SPI_INTENCLR_Type;
622 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
623 
624 #define SERCOM_SPI_INTENCLR_OFFSET  0x0C         /**< \brief (SERCOM_SPI_INTENCLR offset) SPI Interrupt Enable Clear */
625 #define SERCOM_SPI_INTENCLR_RESETVALUE _U_(0x00)    /**< \brief (SERCOM_SPI_INTENCLR reset_value) SPI Interrupt Enable Clear */
626 
627 #define SERCOM_SPI_INTENCLR_DRE_Pos 0            /**< \brief (SERCOM_SPI_INTENCLR) Data Register Empty Interrupt Enable */
628 #define SERCOM_SPI_INTENCLR_DRE     (_U_(0x1) << SERCOM_SPI_INTENCLR_DRE_Pos)
629 #define SERCOM_SPI_INTENCLR_TXC_Pos 1            /**< \brief (SERCOM_SPI_INTENCLR) Transmit Complete Interrupt Enable */
630 #define SERCOM_SPI_INTENCLR_TXC     (_U_(0x1) << SERCOM_SPI_INTENCLR_TXC_Pos)
631 #define SERCOM_SPI_INTENCLR_RXC_Pos 2            /**< \brief (SERCOM_SPI_INTENCLR) Receive Complete Interrupt Enable */
632 #define SERCOM_SPI_INTENCLR_RXC     (_U_(0x1) << SERCOM_SPI_INTENCLR_RXC_Pos)
633 #define SERCOM_SPI_INTENCLR_MASK    _U_(0x07)    /**< \brief (SERCOM_SPI_INTENCLR) MASK Register */
634 
635 /* -------- SERCOM_USART_INTENCLR : (SERCOM Offset: 0x0C) (R/W  8) USART USART Interrupt Enable Clear -------- */
636 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
637 typedef union {
638   struct {
639     uint8_t  DRE:1;            /*!< bit:      0  Data Register Empty Interrupt Enable */
640     uint8_t  TXC:1;            /*!< bit:      1  Transmit Complete Interrupt Enable */
641     uint8_t  RXC:1;            /*!< bit:      2  Receive Complete Interrupt Enable  */
642     uint8_t  RXS:1;            /*!< bit:      3  Receive Start Interrupt Disable    */
643     uint8_t  :4;               /*!< bit:  4.. 7  Reserved                           */
644   } bit;                       /*!< Structure used for bit  access                  */
645   uint8_t reg;                 /*!< Type      used for register access              */
646 } SERCOM_USART_INTENCLR_Type;
647 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
648 
649 #define SERCOM_USART_INTENCLR_OFFSET 0x0C         /**< \brief (SERCOM_USART_INTENCLR offset) USART Interrupt Enable Clear */
650 #define SERCOM_USART_INTENCLR_RESETVALUE _U_(0x00)    /**< \brief (SERCOM_USART_INTENCLR reset_value) USART Interrupt Enable Clear */
651 
652 #define SERCOM_USART_INTENCLR_DRE_Pos 0            /**< \brief (SERCOM_USART_INTENCLR) Data Register Empty Interrupt Enable */
653 #define SERCOM_USART_INTENCLR_DRE   (_U_(0x1) << SERCOM_USART_INTENCLR_DRE_Pos)
654 #define SERCOM_USART_INTENCLR_TXC_Pos 1            /**< \brief (SERCOM_USART_INTENCLR) Transmit Complete Interrupt Enable */
655 #define SERCOM_USART_INTENCLR_TXC   (_U_(0x1) << SERCOM_USART_INTENCLR_TXC_Pos)
656 #define SERCOM_USART_INTENCLR_RXC_Pos 2            /**< \brief (SERCOM_USART_INTENCLR) Receive Complete Interrupt Enable */
657 #define SERCOM_USART_INTENCLR_RXC   (_U_(0x1) << SERCOM_USART_INTENCLR_RXC_Pos)
658 #define SERCOM_USART_INTENCLR_RXS_Pos 3            /**< \brief (SERCOM_USART_INTENCLR) Receive Start Interrupt Disable */
659 #define SERCOM_USART_INTENCLR_RXS   (_U_(0x1) << SERCOM_USART_INTENCLR_RXS_Pos)
660 #define SERCOM_USART_INTENCLR_MASK  _U_(0x0F)    /**< \brief (SERCOM_USART_INTENCLR) MASK Register */
661 
662 /* -------- SERCOM_I2CM_INTENSET : (SERCOM Offset: 0x0D) (R/W  8) I2CM I2CM Interrupt Enable Set -------- */
663 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
664 typedef union {
665   struct {
666     uint8_t  MB:1;             /*!< bit:      0  Master on Bus Interrupt Enable     */
667     uint8_t  SB:1;             /*!< bit:      1  Slave on Bus Interrupt Enable      */
668     uint8_t  :6;               /*!< bit:  2.. 7  Reserved                           */
669   } bit;                       /*!< Structure used for bit  access                  */
670   uint8_t reg;                 /*!< Type      used for register access              */
671 } SERCOM_I2CM_INTENSET_Type;
672 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
673 
674 #define SERCOM_I2CM_INTENSET_OFFSET 0x0D         /**< \brief (SERCOM_I2CM_INTENSET offset) I2CM Interrupt Enable Set */
675 #define SERCOM_I2CM_INTENSET_RESETVALUE _U_(0x00)    /**< \brief (SERCOM_I2CM_INTENSET reset_value) I2CM Interrupt Enable Set */
676 
677 #define SERCOM_I2CM_INTENSET_MB_Pos 0            /**< \brief (SERCOM_I2CM_INTENSET) Master on Bus Interrupt Enable */
678 #define SERCOM_I2CM_INTENSET_MB     (_U_(0x1) << SERCOM_I2CM_INTENSET_MB_Pos)
679 #define SERCOM_I2CM_INTENSET_SB_Pos 1            /**< \brief (SERCOM_I2CM_INTENSET) Slave on Bus Interrupt Enable */
680 #define SERCOM_I2CM_INTENSET_SB     (_U_(0x1) << SERCOM_I2CM_INTENSET_SB_Pos)
681 #define SERCOM_I2CM_INTENSET_MASK   _U_(0x03)    /**< \brief (SERCOM_I2CM_INTENSET) MASK Register */
682 
683 /* -------- SERCOM_I2CS_INTENSET : (SERCOM Offset: 0x0D) (R/W  8) I2CS I2CS Interrupt Enable Set -------- */
684 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
685 typedef union {
686   struct {
687     uint8_t  PREC:1;           /*!< bit:      0  Stop Received Interrupt Enable     */
688     uint8_t  AMATCH:1;         /*!< bit:      1  Address Match Interrupt Enable     */
689     uint8_t  DRDY:1;           /*!< bit:      2  Data Ready Interrupt Enable        */
690     uint8_t  :5;               /*!< bit:  3.. 7  Reserved                           */
691   } bit;                       /*!< Structure used for bit  access                  */
692   uint8_t reg;                 /*!< Type      used for register access              */
693 } SERCOM_I2CS_INTENSET_Type;
694 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
695 
696 #define SERCOM_I2CS_INTENSET_OFFSET 0x0D         /**< \brief (SERCOM_I2CS_INTENSET offset) I2CS Interrupt Enable Set */
697 #define SERCOM_I2CS_INTENSET_RESETVALUE _U_(0x00)    /**< \brief (SERCOM_I2CS_INTENSET reset_value) I2CS Interrupt Enable Set */
698 
699 #define SERCOM_I2CS_INTENSET_PREC_Pos 0            /**< \brief (SERCOM_I2CS_INTENSET) Stop Received Interrupt Enable */
700 #define SERCOM_I2CS_INTENSET_PREC   (_U_(0x1) << SERCOM_I2CS_INTENSET_PREC_Pos)
701 #define SERCOM_I2CS_INTENSET_AMATCH_Pos 1            /**< \brief (SERCOM_I2CS_INTENSET) Address Match Interrupt Enable */
702 #define SERCOM_I2CS_INTENSET_AMATCH (_U_(0x1) << SERCOM_I2CS_INTENSET_AMATCH_Pos)
703 #define SERCOM_I2CS_INTENSET_DRDY_Pos 2            /**< \brief (SERCOM_I2CS_INTENSET) Data Ready Interrupt Enable */
704 #define SERCOM_I2CS_INTENSET_DRDY   (_U_(0x1) << SERCOM_I2CS_INTENSET_DRDY_Pos)
705 #define SERCOM_I2CS_INTENSET_MASK   _U_(0x07)    /**< \brief (SERCOM_I2CS_INTENSET) MASK Register */
706 
707 /* -------- SERCOM_SPI_INTENSET : (SERCOM Offset: 0x0D) (R/W  8) SPI SPI Interrupt Enable Set -------- */
708 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
709 typedef union {
710   struct {
711     uint8_t  DRE:1;            /*!< bit:      0  Data Register Empty Interrupt Enable */
712     uint8_t  TXC:1;            /*!< bit:      1  Transmit Complete Interrupt Enable */
713     uint8_t  RXC:1;            /*!< bit:      2  Receive Complete Interrupt Enable  */
714     uint8_t  :5;               /*!< bit:  3.. 7  Reserved                           */
715   } bit;                       /*!< Structure used for bit  access                  */
716   uint8_t reg;                 /*!< Type      used for register access              */
717 } SERCOM_SPI_INTENSET_Type;
718 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
719 
720 #define SERCOM_SPI_INTENSET_OFFSET  0x0D         /**< \brief (SERCOM_SPI_INTENSET offset) SPI Interrupt Enable Set */
721 #define SERCOM_SPI_INTENSET_RESETVALUE _U_(0x00)    /**< \brief (SERCOM_SPI_INTENSET reset_value) SPI Interrupt Enable Set */
722 
723 #define SERCOM_SPI_INTENSET_DRE_Pos 0            /**< \brief (SERCOM_SPI_INTENSET) Data Register Empty Interrupt Enable */
724 #define SERCOM_SPI_INTENSET_DRE     (_U_(0x1) << SERCOM_SPI_INTENSET_DRE_Pos)
725 #define SERCOM_SPI_INTENSET_TXC_Pos 1            /**< \brief (SERCOM_SPI_INTENSET) Transmit Complete Interrupt Enable */
726 #define SERCOM_SPI_INTENSET_TXC     (_U_(0x1) << SERCOM_SPI_INTENSET_TXC_Pos)
727 #define SERCOM_SPI_INTENSET_RXC_Pos 2            /**< \brief (SERCOM_SPI_INTENSET) Receive Complete Interrupt Enable */
728 #define SERCOM_SPI_INTENSET_RXC     (_U_(0x1) << SERCOM_SPI_INTENSET_RXC_Pos)
729 #define SERCOM_SPI_INTENSET_MASK    _U_(0x07)    /**< \brief (SERCOM_SPI_INTENSET) MASK Register */
730 
731 /* -------- SERCOM_USART_INTENSET : (SERCOM Offset: 0x0D) (R/W  8) USART USART Interrupt Enable Set -------- */
732 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
733 typedef union {
734   struct {
735     uint8_t  DRE:1;            /*!< bit:      0  Data Register Empty Interrupt Enable */
736     uint8_t  TXC:1;            /*!< bit:      1  Transmit Complete Interrupt Enable */
737     uint8_t  RXC:1;            /*!< bit:      2  Receive Complete Interrupt Enable  */
738     uint8_t  RXS:1;            /*!< bit:      3  Receive Start Interrupt Enable     */
739     uint8_t  :4;               /*!< bit:  4.. 7  Reserved                           */
740   } bit;                       /*!< Structure used for bit  access                  */
741   uint8_t reg;                 /*!< Type      used for register access              */
742 } SERCOM_USART_INTENSET_Type;
743 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
744 
745 #define SERCOM_USART_INTENSET_OFFSET 0x0D         /**< \brief (SERCOM_USART_INTENSET offset) USART Interrupt Enable Set */
746 #define SERCOM_USART_INTENSET_RESETVALUE _U_(0x00)    /**< \brief (SERCOM_USART_INTENSET reset_value) USART Interrupt Enable Set */
747 
748 #define SERCOM_USART_INTENSET_DRE_Pos 0            /**< \brief (SERCOM_USART_INTENSET) Data Register Empty Interrupt Enable */
749 #define SERCOM_USART_INTENSET_DRE   (_U_(0x1) << SERCOM_USART_INTENSET_DRE_Pos)
750 #define SERCOM_USART_INTENSET_TXC_Pos 1            /**< \brief (SERCOM_USART_INTENSET) Transmit Complete Interrupt Enable */
751 #define SERCOM_USART_INTENSET_TXC   (_U_(0x1) << SERCOM_USART_INTENSET_TXC_Pos)
752 #define SERCOM_USART_INTENSET_RXC_Pos 2            /**< \brief (SERCOM_USART_INTENSET) Receive Complete Interrupt Enable */
753 #define SERCOM_USART_INTENSET_RXC   (_U_(0x1) << SERCOM_USART_INTENSET_RXC_Pos)
754 #define SERCOM_USART_INTENSET_RXS_Pos 3            /**< \brief (SERCOM_USART_INTENSET) Receive Start Interrupt Enable */
755 #define SERCOM_USART_INTENSET_RXS   (_U_(0x1) << SERCOM_USART_INTENSET_RXS_Pos)
756 #define SERCOM_USART_INTENSET_MASK  _U_(0x0F)    /**< \brief (SERCOM_USART_INTENSET) MASK Register */
757 
758 /* -------- SERCOM_I2CM_INTFLAG : (SERCOM Offset: 0x0E) (R/W  8) I2CM I2CM Interrupt Flag Status and Clear -------- */
759 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
760 typedef union { // __I to avoid read-modify-write on write-to-clear register
761   struct {
762     __I uint8_t  MB:1;             /*!< bit:      0  Master on Bus                      */
763     __I uint8_t  SB:1;             /*!< bit:      1  Slave on Bus                       */
764     __I uint8_t  :6;               /*!< bit:  2.. 7  Reserved                           */
765   } bit;                       /*!< Structure used for bit  access                  */
766   uint8_t reg;                 /*!< Type      used for register access              */
767 } SERCOM_I2CM_INTFLAG_Type;
768 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
769 
770 #define SERCOM_I2CM_INTFLAG_OFFSET  0x0E         /**< \brief (SERCOM_I2CM_INTFLAG offset) I2CM Interrupt Flag Status and Clear */
771 #define SERCOM_I2CM_INTFLAG_RESETVALUE _U_(0x00)    /**< \brief (SERCOM_I2CM_INTFLAG reset_value) I2CM Interrupt Flag Status and Clear */
772 
773 #define SERCOM_I2CM_INTFLAG_MB_Pos  0            /**< \brief (SERCOM_I2CM_INTFLAG) Master on Bus */
774 #define SERCOM_I2CM_INTFLAG_MB      (_U_(0x1) << SERCOM_I2CM_INTFLAG_MB_Pos)
775 #define SERCOM_I2CM_INTFLAG_SB_Pos  1            /**< \brief (SERCOM_I2CM_INTFLAG) Slave on Bus */
776 #define SERCOM_I2CM_INTFLAG_SB      (_U_(0x1) << SERCOM_I2CM_INTFLAG_SB_Pos)
777 #define SERCOM_I2CM_INTFLAG_MASK    _U_(0x03)    /**< \brief (SERCOM_I2CM_INTFLAG) MASK Register */
778 
779 /* -------- SERCOM_I2CS_INTFLAG : (SERCOM Offset: 0x0E) (R/W  8) I2CS I2CS Interrupt Flag Status and Clear -------- */
780 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
781 typedef union { // __I to avoid read-modify-write on write-to-clear register
782   struct {
783     __I uint8_t  PREC:1;           /*!< bit:      0  Stop Received                      */
784     __I uint8_t  AMATCH:1;         /*!< bit:      1  Address Match                      */
785     __I uint8_t  DRDY:1;           /*!< bit:      2  Data Ready                         */
786     __I uint8_t  :5;               /*!< bit:  3.. 7  Reserved                           */
787   } bit;                       /*!< Structure used for bit  access                  */
788   uint8_t reg;                 /*!< Type      used for register access              */
789 } SERCOM_I2CS_INTFLAG_Type;
790 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
791 
792 #define SERCOM_I2CS_INTFLAG_OFFSET  0x0E         /**< \brief (SERCOM_I2CS_INTFLAG offset) I2CS Interrupt Flag Status and Clear */
793 #define SERCOM_I2CS_INTFLAG_RESETVALUE _U_(0x00)    /**< \brief (SERCOM_I2CS_INTFLAG reset_value) I2CS Interrupt Flag Status and Clear */
794 
795 #define SERCOM_I2CS_INTFLAG_PREC_Pos 0            /**< \brief (SERCOM_I2CS_INTFLAG) Stop Received */
796 #define SERCOM_I2CS_INTFLAG_PREC    (_U_(0x1) << SERCOM_I2CS_INTFLAG_PREC_Pos)
797 #define SERCOM_I2CS_INTFLAG_AMATCH_Pos 1            /**< \brief (SERCOM_I2CS_INTFLAG) Address Match */
798 #define SERCOM_I2CS_INTFLAG_AMATCH  (_U_(0x1) << SERCOM_I2CS_INTFLAG_AMATCH_Pos)
799 #define SERCOM_I2CS_INTFLAG_DRDY_Pos 2            /**< \brief (SERCOM_I2CS_INTFLAG) Data Ready */
800 #define SERCOM_I2CS_INTFLAG_DRDY    (_U_(0x1) << SERCOM_I2CS_INTFLAG_DRDY_Pos)
801 #define SERCOM_I2CS_INTFLAG_MASK    _U_(0x07)    /**< \brief (SERCOM_I2CS_INTFLAG) MASK Register */
802 
803 /* -------- SERCOM_SPI_INTFLAG : (SERCOM Offset: 0x0E) (R/W  8) SPI SPI Interrupt Flag Status and Clear -------- */
804 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
805 typedef union { // __I to avoid read-modify-write on write-to-clear register
806   struct {
807     __I uint8_t  DRE:1;            /*!< bit:      0  Data Register Empty                */
808     __I uint8_t  TXC:1;            /*!< bit:      1  Transmit Complete                  */
809     __I uint8_t  RXC:1;            /*!< bit:      2  Receive Complete                   */
810     __I uint8_t  :5;               /*!< bit:  3.. 7  Reserved                           */
811   } bit;                       /*!< Structure used for bit  access                  */
812   uint8_t reg;                 /*!< Type      used for register access              */
813 } SERCOM_SPI_INTFLAG_Type;
814 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
815 
816 #define SERCOM_SPI_INTFLAG_OFFSET   0x0E         /**< \brief (SERCOM_SPI_INTFLAG offset) SPI Interrupt Flag Status and Clear */
817 #define SERCOM_SPI_INTFLAG_RESETVALUE _U_(0x00)    /**< \brief (SERCOM_SPI_INTFLAG reset_value) SPI Interrupt Flag Status and Clear */
818 
819 #define SERCOM_SPI_INTFLAG_DRE_Pos  0            /**< \brief (SERCOM_SPI_INTFLAG) Data Register Empty */
820 #define SERCOM_SPI_INTFLAG_DRE      (_U_(0x1) << SERCOM_SPI_INTFLAG_DRE_Pos)
821 #define SERCOM_SPI_INTFLAG_TXC_Pos  1            /**< \brief (SERCOM_SPI_INTFLAG) Transmit Complete */
822 #define SERCOM_SPI_INTFLAG_TXC      (_U_(0x1) << SERCOM_SPI_INTFLAG_TXC_Pos)
823 #define SERCOM_SPI_INTFLAG_RXC_Pos  2            /**< \brief (SERCOM_SPI_INTFLAG) Receive Complete */
824 #define SERCOM_SPI_INTFLAG_RXC      (_U_(0x1) << SERCOM_SPI_INTFLAG_RXC_Pos)
825 #define SERCOM_SPI_INTFLAG_MASK     _U_(0x07)    /**< \brief (SERCOM_SPI_INTFLAG) MASK Register */
826 
827 /* -------- SERCOM_USART_INTFLAG : (SERCOM Offset: 0x0E) (R/W  8) USART USART Interrupt Flag Status and Clear -------- */
828 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
829 typedef union { // __I to avoid read-modify-write on write-to-clear register
830   struct {
831     __I uint8_t  DRE:1;            /*!< bit:      0  Data Register Empty                */
832     __I uint8_t  TXC:1;            /*!< bit:      1  Transmit Complete                  */
833     __I uint8_t  RXC:1;            /*!< bit:      2  Receive Complete                   */
834     __I uint8_t  RXS:1;            /*!< bit:      3  Receive Start Interrupt            */
835     __I uint8_t  :4;               /*!< bit:  4.. 7  Reserved                           */
836   } bit;                       /*!< Structure used for bit  access                  */
837   uint8_t reg;                 /*!< Type      used for register access              */
838 } SERCOM_USART_INTFLAG_Type;
839 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
840 
841 #define SERCOM_USART_INTFLAG_OFFSET 0x0E         /**< \brief (SERCOM_USART_INTFLAG offset) USART Interrupt Flag Status and Clear */
842 #define SERCOM_USART_INTFLAG_RESETVALUE _U_(0x00)    /**< \brief (SERCOM_USART_INTFLAG reset_value) USART Interrupt Flag Status and Clear */
843 
844 #define SERCOM_USART_INTFLAG_DRE_Pos 0            /**< \brief (SERCOM_USART_INTFLAG) Data Register Empty */
845 #define SERCOM_USART_INTFLAG_DRE    (_U_(0x1) << SERCOM_USART_INTFLAG_DRE_Pos)
846 #define SERCOM_USART_INTFLAG_TXC_Pos 1            /**< \brief (SERCOM_USART_INTFLAG) Transmit Complete */
847 #define SERCOM_USART_INTFLAG_TXC    (_U_(0x1) << SERCOM_USART_INTFLAG_TXC_Pos)
848 #define SERCOM_USART_INTFLAG_RXC_Pos 2            /**< \brief (SERCOM_USART_INTFLAG) Receive Complete */
849 #define SERCOM_USART_INTFLAG_RXC    (_U_(0x1) << SERCOM_USART_INTFLAG_RXC_Pos)
850 #define SERCOM_USART_INTFLAG_RXS_Pos 3            /**< \brief (SERCOM_USART_INTFLAG) Receive Start Interrupt */
851 #define SERCOM_USART_INTFLAG_RXS    (_U_(0x1) << SERCOM_USART_INTFLAG_RXS_Pos)
852 #define SERCOM_USART_INTFLAG_MASK   _U_(0x0F)    /**< \brief (SERCOM_USART_INTFLAG) MASK Register */
853 
854 /* -------- SERCOM_I2CM_STATUS : (SERCOM Offset: 0x10) (R/W 16) I2CM I2CM Status -------- */
855 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
856 typedef union {
857   struct {
858     uint16_t BUSERR:1;         /*!< bit:      0  Bus Error                          */
859     uint16_t ARBLOST:1;        /*!< bit:      1  Arbitration Lost                   */
860     uint16_t RXNACK:1;         /*!< bit:      2  Received Not Acknowledge           */
861     uint16_t :1;               /*!< bit:      3  Reserved                           */
862     uint16_t BUSSTATE:2;       /*!< bit:  4.. 5  Bus State                          */
863     uint16_t LOWTOUT:1;        /*!< bit:      6  SCL Low Time-out                   */
864     uint16_t CLKHOLD:1;        /*!< bit:      7  Clock Hold                         */
865     uint16_t :7;               /*!< bit:  8..14  Reserved                           */
866     uint16_t SYNCBUSY:1;       /*!< bit:     15  Synchronization Busy               */
867   } bit;                       /*!< Structure used for bit  access                  */
868   uint16_t reg;                /*!< Type      used for register access              */
869 } SERCOM_I2CM_STATUS_Type;
870 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
871 
872 #define SERCOM_I2CM_STATUS_OFFSET   0x10         /**< \brief (SERCOM_I2CM_STATUS offset) I2CM Status */
873 #define SERCOM_I2CM_STATUS_RESETVALUE _U_(0x0000)  /**< \brief (SERCOM_I2CM_STATUS reset_value) I2CM Status */
874 
875 #define SERCOM_I2CM_STATUS_BUSERR_Pos 0            /**< \brief (SERCOM_I2CM_STATUS) Bus Error */
876 #define SERCOM_I2CM_STATUS_BUSERR   (_U_(0x1) << SERCOM_I2CM_STATUS_BUSERR_Pos)
877 #define SERCOM_I2CM_STATUS_ARBLOST_Pos 1            /**< \brief (SERCOM_I2CM_STATUS) Arbitration Lost */
878 #define SERCOM_I2CM_STATUS_ARBLOST  (_U_(0x1) << SERCOM_I2CM_STATUS_ARBLOST_Pos)
879 #define SERCOM_I2CM_STATUS_RXNACK_Pos 2            /**< \brief (SERCOM_I2CM_STATUS) Received Not Acknowledge */
880 #define SERCOM_I2CM_STATUS_RXNACK   (_U_(0x1) << SERCOM_I2CM_STATUS_RXNACK_Pos)
881 #define SERCOM_I2CM_STATUS_BUSSTATE_Pos 4            /**< \brief (SERCOM_I2CM_STATUS) Bus State */
882 #define SERCOM_I2CM_STATUS_BUSSTATE_Msk (_U_(0x3) << SERCOM_I2CM_STATUS_BUSSTATE_Pos)
883 #define SERCOM_I2CM_STATUS_BUSSTATE(value) (SERCOM_I2CM_STATUS_BUSSTATE_Msk & ((value) << SERCOM_I2CM_STATUS_BUSSTATE_Pos))
884 #define SERCOM_I2CM_STATUS_LOWTOUT_Pos 6            /**< \brief (SERCOM_I2CM_STATUS) SCL Low Time-out */
885 #define SERCOM_I2CM_STATUS_LOWTOUT  (_U_(0x1) << SERCOM_I2CM_STATUS_LOWTOUT_Pos)
886 #define SERCOM_I2CM_STATUS_CLKHOLD_Pos 7            /**< \brief (SERCOM_I2CM_STATUS) Clock Hold */
887 #define SERCOM_I2CM_STATUS_CLKHOLD  (_U_(0x1) << SERCOM_I2CM_STATUS_CLKHOLD_Pos)
888 #define SERCOM_I2CM_STATUS_SYNCBUSY_Pos 15           /**< \brief (SERCOM_I2CM_STATUS) Synchronization Busy */
889 #define SERCOM_I2CM_STATUS_SYNCBUSY (_U_(0x1) << SERCOM_I2CM_STATUS_SYNCBUSY_Pos)
890 #define SERCOM_I2CM_STATUS_MASK     _U_(0x80F7)  /**< \brief (SERCOM_I2CM_STATUS) MASK Register */
891 
892 /* -------- SERCOM_I2CS_STATUS : (SERCOM Offset: 0x10) (R/W 16) I2CS I2CS Status -------- */
893 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
894 typedef union {
895   struct {
896     uint16_t BUSERR:1;         /*!< bit:      0  Bus Error                          */
897     uint16_t COLL:1;           /*!< bit:      1  Transmit Collision                 */
898     uint16_t RXNACK:1;         /*!< bit:      2  Received Not Acknowledge           */
899     uint16_t DIR:1;            /*!< bit:      3  Read / Write Direction             */
900     uint16_t SR:1;             /*!< bit:      4  Repeated Start                     */
901     uint16_t :1;               /*!< bit:      5  Reserved                           */
902     uint16_t LOWTOUT:1;        /*!< bit:      6  SCL Low Time-out                   */
903     uint16_t CLKHOLD:1;        /*!< bit:      7  Clock Hold                         */
904     uint16_t :7;               /*!< bit:  8..14  Reserved                           */
905     uint16_t SYNCBUSY:1;       /*!< bit:     15  Synchronization Busy               */
906   } bit;                       /*!< Structure used for bit  access                  */
907   uint16_t reg;                /*!< Type      used for register access              */
908 } SERCOM_I2CS_STATUS_Type;
909 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
910 
911 #define SERCOM_I2CS_STATUS_OFFSET   0x10         /**< \brief (SERCOM_I2CS_STATUS offset) I2CS Status */
912 #define SERCOM_I2CS_STATUS_RESETVALUE _U_(0x0000)  /**< \brief (SERCOM_I2CS_STATUS reset_value) I2CS Status */
913 
914 #define SERCOM_I2CS_STATUS_BUSERR_Pos 0            /**< \brief (SERCOM_I2CS_STATUS) Bus Error */
915 #define SERCOM_I2CS_STATUS_BUSERR   (_U_(0x1) << SERCOM_I2CS_STATUS_BUSERR_Pos)
916 #define SERCOM_I2CS_STATUS_COLL_Pos 1            /**< \brief (SERCOM_I2CS_STATUS) Transmit Collision */
917 #define SERCOM_I2CS_STATUS_COLL     (_U_(0x1) << SERCOM_I2CS_STATUS_COLL_Pos)
918 #define SERCOM_I2CS_STATUS_RXNACK_Pos 2            /**< \brief (SERCOM_I2CS_STATUS) Received Not Acknowledge */
919 #define SERCOM_I2CS_STATUS_RXNACK   (_U_(0x1) << SERCOM_I2CS_STATUS_RXNACK_Pos)
920 #define SERCOM_I2CS_STATUS_DIR_Pos  3            /**< \brief (SERCOM_I2CS_STATUS) Read / Write Direction */
921 #define SERCOM_I2CS_STATUS_DIR      (_U_(0x1) << SERCOM_I2CS_STATUS_DIR_Pos)
922 #define SERCOM_I2CS_STATUS_SR_Pos   4            /**< \brief (SERCOM_I2CS_STATUS) Repeated Start */
923 #define SERCOM_I2CS_STATUS_SR       (_U_(0x1) << SERCOM_I2CS_STATUS_SR_Pos)
924 #define SERCOM_I2CS_STATUS_LOWTOUT_Pos 6            /**< \brief (SERCOM_I2CS_STATUS) SCL Low Time-out */
925 #define SERCOM_I2CS_STATUS_LOWTOUT  (_U_(0x1) << SERCOM_I2CS_STATUS_LOWTOUT_Pos)
926 #define SERCOM_I2CS_STATUS_CLKHOLD_Pos 7            /**< \brief (SERCOM_I2CS_STATUS) Clock Hold */
927 #define SERCOM_I2CS_STATUS_CLKHOLD  (_U_(0x1) << SERCOM_I2CS_STATUS_CLKHOLD_Pos)
928 #define SERCOM_I2CS_STATUS_SYNCBUSY_Pos 15           /**< \brief (SERCOM_I2CS_STATUS) Synchronization Busy */
929 #define SERCOM_I2CS_STATUS_SYNCBUSY (_U_(0x1) << SERCOM_I2CS_STATUS_SYNCBUSY_Pos)
930 #define SERCOM_I2CS_STATUS_MASK     _U_(0x80DF)  /**< \brief (SERCOM_I2CS_STATUS) MASK Register */
931 
932 /* -------- SERCOM_SPI_STATUS : (SERCOM Offset: 0x10) (R/W 16) SPI SPI Status -------- */
933 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
934 typedef union {
935   struct {
936     uint16_t :2;               /*!< bit:  0.. 1  Reserved                           */
937     uint16_t BUFOVF:1;         /*!< bit:      2  Buffer Overflow                    */
938     uint16_t :12;              /*!< bit:  3..14  Reserved                           */
939     uint16_t SYNCBUSY:1;       /*!< bit:     15  Synchronization Busy               */
940   } bit;                       /*!< Structure used for bit  access                  */
941   uint16_t reg;                /*!< Type      used for register access              */
942 } SERCOM_SPI_STATUS_Type;
943 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
944 
945 #define SERCOM_SPI_STATUS_OFFSET    0x10         /**< \brief (SERCOM_SPI_STATUS offset) SPI Status */
946 #define SERCOM_SPI_STATUS_RESETVALUE _U_(0x0000)  /**< \brief (SERCOM_SPI_STATUS reset_value) SPI Status */
947 
948 #define SERCOM_SPI_STATUS_BUFOVF_Pos 2            /**< \brief (SERCOM_SPI_STATUS) Buffer Overflow */
949 #define SERCOM_SPI_STATUS_BUFOVF    (_U_(0x1) << SERCOM_SPI_STATUS_BUFOVF_Pos)
950 #define SERCOM_SPI_STATUS_SYNCBUSY_Pos 15           /**< \brief (SERCOM_SPI_STATUS) Synchronization Busy */
951 #define SERCOM_SPI_STATUS_SYNCBUSY  (_U_(0x1) << SERCOM_SPI_STATUS_SYNCBUSY_Pos)
952 #define SERCOM_SPI_STATUS_MASK      _U_(0x8004)  /**< \brief (SERCOM_SPI_STATUS) MASK Register */
953 
954 /* -------- SERCOM_USART_STATUS : (SERCOM Offset: 0x10) (R/W 16) USART USART Status -------- */
955 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
956 typedef union {
957   struct {
958     uint16_t PERR:1;           /*!< bit:      0  Parity Error                       */
959     uint16_t FERR:1;           /*!< bit:      1  Frame Error                        */
960     uint16_t BUFOVF:1;         /*!< bit:      2  Buffer Overflow                    */
961     uint16_t :12;              /*!< bit:  3..14  Reserved                           */
962     uint16_t SYNCBUSY:1;       /*!< bit:     15  Synchronization Busy               */
963   } bit;                       /*!< Structure used for bit  access                  */
964   uint16_t reg;                /*!< Type      used for register access              */
965 } SERCOM_USART_STATUS_Type;
966 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
967 
968 #define SERCOM_USART_STATUS_OFFSET  0x10         /**< \brief (SERCOM_USART_STATUS offset) USART Status */
969 #define SERCOM_USART_STATUS_RESETVALUE _U_(0x0000)  /**< \brief (SERCOM_USART_STATUS reset_value) USART Status */
970 
971 #define SERCOM_USART_STATUS_PERR_Pos 0            /**< \brief (SERCOM_USART_STATUS) Parity Error */
972 #define SERCOM_USART_STATUS_PERR    (_U_(0x1) << SERCOM_USART_STATUS_PERR_Pos)
973 #define SERCOM_USART_STATUS_FERR_Pos 1            /**< \brief (SERCOM_USART_STATUS) Frame Error */
974 #define SERCOM_USART_STATUS_FERR    (_U_(0x1) << SERCOM_USART_STATUS_FERR_Pos)
975 #define SERCOM_USART_STATUS_BUFOVF_Pos 2            /**< \brief (SERCOM_USART_STATUS) Buffer Overflow */
976 #define SERCOM_USART_STATUS_BUFOVF  (_U_(0x1) << SERCOM_USART_STATUS_BUFOVF_Pos)
977 #define SERCOM_USART_STATUS_SYNCBUSY_Pos 15           /**< \brief (SERCOM_USART_STATUS) Synchronization Busy */
978 #define SERCOM_USART_STATUS_SYNCBUSY (_U_(0x1) << SERCOM_USART_STATUS_SYNCBUSY_Pos)
979 #define SERCOM_USART_STATUS_MASK    _U_(0x8007)  /**< \brief (SERCOM_USART_STATUS) MASK Register */
980 
981 /* -------- SERCOM_I2CM_ADDR : (SERCOM Offset: 0x14) (R/W  8) I2CM I2CM Address -------- */
982 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
983 typedef union {
984   struct {
985     uint8_t  ADDR:8;           /*!< bit:  0.. 7  Address                            */
986   } bit;                       /*!< Structure used for bit  access                  */
987   uint8_t reg;                 /*!< Type      used for register access              */
988 } SERCOM_I2CM_ADDR_Type;
989 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
990 
991 #define SERCOM_I2CM_ADDR_OFFSET     0x14         /**< \brief (SERCOM_I2CM_ADDR offset) I2CM Address */
992 #define SERCOM_I2CM_ADDR_RESETVALUE _U_(0x00)    /**< \brief (SERCOM_I2CM_ADDR reset_value) I2CM Address */
993 
994 #define SERCOM_I2CM_ADDR_ADDR_Pos   0            /**< \brief (SERCOM_I2CM_ADDR) Address */
995 #define SERCOM_I2CM_ADDR_ADDR_Msk   (_U_(0xFF) << SERCOM_I2CM_ADDR_ADDR_Pos)
996 #define SERCOM_I2CM_ADDR_ADDR(value) (SERCOM_I2CM_ADDR_ADDR_Msk & ((value) << SERCOM_I2CM_ADDR_ADDR_Pos))
997 #define SERCOM_I2CM_ADDR_MASK       _U_(0xFF)    /**< \brief (SERCOM_I2CM_ADDR) MASK Register */
998 
999 /* -------- SERCOM_I2CS_ADDR : (SERCOM Offset: 0x14) (R/W 32) I2CS I2CS Address -------- */
1000 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1001 typedef union {
1002   struct {
1003     uint32_t GENCEN:1;         /*!< bit:      0  General Call Address Enable        */
1004     uint32_t ADDR:7;           /*!< bit:  1.. 7  Address                            */
1005     uint32_t :9;               /*!< bit:  8..16  Reserved                           */
1006     uint32_t ADDRMASK:7;       /*!< bit: 17..23  Address Mask                       */
1007     uint32_t :8;               /*!< bit: 24..31  Reserved                           */
1008   } bit;                       /*!< Structure used for bit  access                  */
1009   uint32_t reg;                /*!< Type      used for register access              */
1010 } SERCOM_I2CS_ADDR_Type;
1011 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1012 
1013 #define SERCOM_I2CS_ADDR_OFFSET     0x14         /**< \brief (SERCOM_I2CS_ADDR offset) I2CS Address */
1014 #define SERCOM_I2CS_ADDR_RESETVALUE _U_(0x00000000) /**< \brief (SERCOM_I2CS_ADDR reset_value) I2CS Address */
1015 
1016 #define SERCOM_I2CS_ADDR_GENCEN_Pos 0            /**< \brief (SERCOM_I2CS_ADDR) General Call Address Enable */
1017 #define SERCOM_I2CS_ADDR_GENCEN     (_U_(0x1) << SERCOM_I2CS_ADDR_GENCEN_Pos)
1018 #define SERCOM_I2CS_ADDR_ADDR_Pos   1            /**< \brief (SERCOM_I2CS_ADDR) Address */
1019 #define SERCOM_I2CS_ADDR_ADDR_Msk   (_U_(0x7F) << SERCOM_I2CS_ADDR_ADDR_Pos)
1020 #define SERCOM_I2CS_ADDR_ADDR(value) (SERCOM_I2CS_ADDR_ADDR_Msk & ((value) << SERCOM_I2CS_ADDR_ADDR_Pos))
1021 #define SERCOM_I2CS_ADDR_ADDRMASK_Pos 17           /**< \brief (SERCOM_I2CS_ADDR) Address Mask */
1022 #define SERCOM_I2CS_ADDR_ADDRMASK_Msk (_U_(0x7F) << SERCOM_I2CS_ADDR_ADDRMASK_Pos)
1023 #define SERCOM_I2CS_ADDR_ADDRMASK(value) (SERCOM_I2CS_ADDR_ADDRMASK_Msk & ((value) << SERCOM_I2CS_ADDR_ADDRMASK_Pos))
1024 #define SERCOM_I2CS_ADDR_MASK       _U_(0x00FE00FF) /**< \brief (SERCOM_I2CS_ADDR) MASK Register */
1025 
1026 /* -------- SERCOM_SPI_ADDR : (SERCOM Offset: 0x14) (R/W 32) SPI SPI Address -------- */
1027 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1028 typedef union {
1029   struct {
1030     uint32_t ADDR:8;           /*!< bit:  0.. 7  Address                            */
1031     uint32_t :8;               /*!< bit:  8..15  Reserved                           */
1032     uint32_t ADDRMASK:8;       /*!< bit: 16..23  Address Mask                       */
1033     uint32_t :8;               /*!< bit: 24..31  Reserved                           */
1034   } bit;                       /*!< Structure used for bit  access                  */
1035   uint32_t reg;                /*!< Type      used for register access              */
1036 } SERCOM_SPI_ADDR_Type;
1037 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1038 
1039 #define SERCOM_SPI_ADDR_OFFSET      0x14         /**< \brief (SERCOM_SPI_ADDR offset) SPI Address */
1040 #define SERCOM_SPI_ADDR_RESETVALUE  _U_(0x00000000) /**< \brief (SERCOM_SPI_ADDR reset_value) SPI Address */
1041 
1042 #define SERCOM_SPI_ADDR_ADDR_Pos    0            /**< \brief (SERCOM_SPI_ADDR) Address */
1043 #define SERCOM_SPI_ADDR_ADDR_Msk    (_U_(0xFF) << SERCOM_SPI_ADDR_ADDR_Pos)
1044 #define SERCOM_SPI_ADDR_ADDR(value) (SERCOM_SPI_ADDR_ADDR_Msk & ((value) << SERCOM_SPI_ADDR_ADDR_Pos))
1045 #define SERCOM_SPI_ADDR_ADDRMASK_Pos 16           /**< \brief (SERCOM_SPI_ADDR) Address Mask */
1046 #define SERCOM_SPI_ADDR_ADDRMASK_Msk (_U_(0xFF) << SERCOM_SPI_ADDR_ADDRMASK_Pos)
1047 #define SERCOM_SPI_ADDR_ADDRMASK(value) (SERCOM_SPI_ADDR_ADDRMASK_Msk & ((value) << SERCOM_SPI_ADDR_ADDRMASK_Pos))
1048 #define SERCOM_SPI_ADDR_MASK        _U_(0x00FF00FF) /**< \brief (SERCOM_SPI_ADDR) MASK Register */
1049 
1050 /* -------- SERCOM_I2CM_DATA : (SERCOM Offset: 0x18) (R/W  8) I2CM I2CM Data -------- */
1051 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1052 typedef union {
1053   struct {
1054     uint8_t  DATA:8;           /*!< bit:  0.. 7  Data                               */
1055   } bit;                       /*!< Structure used for bit  access                  */
1056   uint8_t reg;                 /*!< Type      used for register access              */
1057 } SERCOM_I2CM_DATA_Type;
1058 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1059 
1060 #define SERCOM_I2CM_DATA_OFFSET     0x18         /**< \brief (SERCOM_I2CM_DATA offset) I2CM Data */
1061 #define SERCOM_I2CM_DATA_RESETVALUE _U_(0x00)    /**< \brief (SERCOM_I2CM_DATA reset_value) I2CM Data */
1062 
1063 #define SERCOM_I2CM_DATA_DATA_Pos   0            /**< \brief (SERCOM_I2CM_DATA) Data */
1064 #define SERCOM_I2CM_DATA_DATA_Msk   (_U_(0xFF) << SERCOM_I2CM_DATA_DATA_Pos)
1065 #define SERCOM_I2CM_DATA_DATA(value) (SERCOM_I2CM_DATA_DATA_Msk & ((value) << SERCOM_I2CM_DATA_DATA_Pos))
1066 #define SERCOM_I2CM_DATA_MASK       _U_(0xFF)    /**< \brief (SERCOM_I2CM_DATA) MASK Register */
1067 
1068 /* -------- SERCOM_I2CS_DATA : (SERCOM Offset: 0x18) (R/W  8) I2CS I2CS Data -------- */
1069 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1070 typedef union {
1071   struct {
1072     uint8_t  DATA:8;           /*!< bit:  0.. 7  Data                               */
1073   } bit;                       /*!< Structure used for bit  access                  */
1074   uint8_t reg;                 /*!< Type      used for register access              */
1075 } SERCOM_I2CS_DATA_Type;
1076 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1077 
1078 #define SERCOM_I2CS_DATA_OFFSET     0x18         /**< \brief (SERCOM_I2CS_DATA offset) I2CS Data */
1079 #define SERCOM_I2CS_DATA_RESETVALUE _U_(0x00)    /**< \brief (SERCOM_I2CS_DATA reset_value) I2CS Data */
1080 
1081 #define SERCOM_I2CS_DATA_DATA_Pos   0            /**< \brief (SERCOM_I2CS_DATA) Data */
1082 #define SERCOM_I2CS_DATA_DATA_Msk   (_U_(0xFF) << SERCOM_I2CS_DATA_DATA_Pos)
1083 #define SERCOM_I2CS_DATA_DATA(value) (SERCOM_I2CS_DATA_DATA_Msk & ((value) << SERCOM_I2CS_DATA_DATA_Pos))
1084 #define SERCOM_I2CS_DATA_MASK       _U_(0xFF)    /**< \brief (SERCOM_I2CS_DATA) MASK Register */
1085 
1086 /* -------- SERCOM_SPI_DATA : (SERCOM Offset: 0x18) (R/W 16) SPI SPI Data -------- */
1087 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1088 typedef union {
1089   struct {
1090     uint16_t DATA:9;           /*!< bit:  0.. 8  Data                               */
1091     uint16_t :7;               /*!< bit:  9..15  Reserved                           */
1092   } bit;                       /*!< Structure used for bit  access                  */
1093   uint16_t reg;                /*!< Type      used for register access              */
1094 } SERCOM_SPI_DATA_Type;
1095 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1096 
1097 #define SERCOM_SPI_DATA_OFFSET      0x18         /**< \brief (SERCOM_SPI_DATA offset) SPI Data */
1098 #define SERCOM_SPI_DATA_RESETVALUE  _U_(0x0000)  /**< \brief (SERCOM_SPI_DATA reset_value) SPI Data */
1099 
1100 #define SERCOM_SPI_DATA_DATA_Pos    0            /**< \brief (SERCOM_SPI_DATA) Data */
1101 #define SERCOM_SPI_DATA_DATA_Msk    (_U_(0x1FF) << SERCOM_SPI_DATA_DATA_Pos)
1102 #define SERCOM_SPI_DATA_DATA(value) (SERCOM_SPI_DATA_DATA_Msk & ((value) << SERCOM_SPI_DATA_DATA_Pos))
1103 #define SERCOM_SPI_DATA_MASK        _U_(0x01FF)  /**< \brief (SERCOM_SPI_DATA) MASK Register */
1104 
1105 /* -------- SERCOM_USART_DATA : (SERCOM Offset: 0x18) (R/W 16) USART USART Data -------- */
1106 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1107 typedef union {
1108   struct {
1109     uint16_t DATA:9;           /*!< bit:  0.. 8  Data                               */
1110     uint16_t :7;               /*!< bit:  9..15  Reserved                           */
1111   } bit;                       /*!< Structure used for bit  access                  */
1112   uint16_t reg;                /*!< Type      used for register access              */
1113 } SERCOM_USART_DATA_Type;
1114 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1115 
1116 #define SERCOM_USART_DATA_OFFSET    0x18         /**< \brief (SERCOM_USART_DATA offset) USART Data */
1117 #define SERCOM_USART_DATA_RESETVALUE _U_(0x0000)  /**< \brief (SERCOM_USART_DATA reset_value) USART Data */
1118 
1119 #define SERCOM_USART_DATA_DATA_Pos  0            /**< \brief (SERCOM_USART_DATA) Data */
1120 #define SERCOM_USART_DATA_DATA_Msk  (_U_(0x1FF) << SERCOM_USART_DATA_DATA_Pos)
1121 #define SERCOM_USART_DATA_DATA(value) (SERCOM_USART_DATA_DATA_Msk & ((value) << SERCOM_USART_DATA_DATA_Pos))
1122 #define SERCOM_USART_DATA_MASK      _U_(0x01FF)  /**< \brief (SERCOM_USART_DATA) MASK Register */
1123 
1124 /** \brief SERCOM_I2CM hardware registers */
1125 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1126 typedef struct { /* I2C Master Mode */
1127   __IO SERCOM_I2CM_CTRLA_Type    CTRLA;       /**< \brief Offset: 0x00 (R/W 32) I2CM Control A */
1128   __IO SERCOM_I2CM_CTRLB_Type    CTRLB;       /**< \brief Offset: 0x04 (R/W 32) I2CM Control B */
1129   __IO SERCOM_I2CM_DBGCTRL_Type  DBGCTRL;     /**< \brief Offset: 0x08 (R/W  8) I2CM Debug Control */
1130        RoReg8                    Reserved1[0x1];
1131   __IO SERCOM_I2CM_BAUD_Type     BAUD;        /**< \brief Offset: 0x0A (R/W 16) I2CM Baud Rate */
1132   __IO SERCOM_I2CM_INTENCLR_Type INTENCLR;    /**< \brief Offset: 0x0C (R/W  8) I2CM Interrupt Enable Clear */
1133   __IO SERCOM_I2CM_INTENSET_Type INTENSET;    /**< \brief Offset: 0x0D (R/W  8) I2CM Interrupt Enable Set */
1134   __IO SERCOM_I2CM_INTFLAG_Type  INTFLAG;     /**< \brief Offset: 0x0E (R/W  8) I2CM Interrupt Flag Status and Clear */
1135        RoReg8                    Reserved2[0x1];
1136   __IO SERCOM_I2CM_STATUS_Type   STATUS;      /**< \brief Offset: 0x10 (R/W 16) I2CM Status */
1137        RoReg8                    Reserved3[0x2];
1138   __IO SERCOM_I2CM_ADDR_Type     ADDR;        /**< \brief Offset: 0x14 (R/W  8) I2CM Address */
1139        RoReg8                    Reserved4[0x3];
1140   __IO SERCOM_I2CM_DATA_Type     DATA;        /**< \brief Offset: 0x18 (R/W  8) I2CM Data */
1141 } SercomI2cm;
1142 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1143 
1144 /** \brief SERCOM_I2CS hardware registers */
1145 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1146 typedef struct { /* I2C Slave Mode */
1147   __IO SERCOM_I2CS_CTRLA_Type    CTRLA;       /**< \brief Offset: 0x00 (R/W 32) I2CS Control A */
1148   __IO SERCOM_I2CS_CTRLB_Type    CTRLB;       /**< \brief Offset: 0x04 (R/W 32) I2CS Control B */
1149        RoReg8                    Reserved1[0x4];
1150   __IO SERCOM_I2CS_INTENCLR_Type INTENCLR;    /**< \brief Offset: 0x0C (R/W  8) I2CS Interrupt Enable Clear */
1151   __IO SERCOM_I2CS_INTENSET_Type INTENSET;    /**< \brief Offset: 0x0D (R/W  8) I2CS Interrupt Enable Set */
1152   __IO SERCOM_I2CS_INTFLAG_Type  INTFLAG;     /**< \brief Offset: 0x0E (R/W  8) I2CS Interrupt Flag Status and Clear */
1153        RoReg8                    Reserved2[0x1];
1154   __IO SERCOM_I2CS_STATUS_Type   STATUS;      /**< \brief Offset: 0x10 (R/W 16) I2CS Status */
1155        RoReg8                    Reserved3[0x2];
1156   __IO SERCOM_I2CS_ADDR_Type     ADDR;        /**< \brief Offset: 0x14 (R/W 32) I2CS Address */
1157   __IO SERCOM_I2CS_DATA_Type     DATA;        /**< \brief Offset: 0x18 (R/W  8) I2CS Data */
1158 } SercomI2cs;
1159 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1160 
1161 /** \brief SERCOM_SPI hardware registers */
1162 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1163 typedef struct { /* SPI Mode */
1164   __IO SERCOM_SPI_CTRLA_Type     CTRLA;       /**< \brief Offset: 0x00 (R/W 32) SPI Control A */
1165   __IO SERCOM_SPI_CTRLB_Type     CTRLB;       /**< \brief Offset: 0x04 (R/W 32) SPI Control B */
1166   __IO SERCOM_SPI_DBGCTRL_Type   DBGCTRL;     /**< \brief Offset: 0x08 (R/W  8) SPI Debug Control */
1167        RoReg8                    Reserved1[0x1];
1168   __IO SERCOM_SPI_BAUD_Type      BAUD;        /**< \brief Offset: 0x0A (R/W  8) SPI Baud Rate */
1169        RoReg8                    Reserved2[0x1];
1170   __IO SERCOM_SPI_INTENCLR_Type  INTENCLR;    /**< \brief Offset: 0x0C (R/W  8) SPI Interrupt Enable Clear */
1171   __IO SERCOM_SPI_INTENSET_Type  INTENSET;    /**< \brief Offset: 0x0D (R/W  8) SPI Interrupt Enable Set */
1172   __IO SERCOM_SPI_INTFLAG_Type   INTFLAG;     /**< \brief Offset: 0x0E (R/W  8) SPI Interrupt Flag Status and Clear */
1173        RoReg8                    Reserved3[0x1];
1174   __IO SERCOM_SPI_STATUS_Type    STATUS;      /**< \brief Offset: 0x10 (R/W 16) SPI Status */
1175        RoReg8                    Reserved4[0x2];
1176   __IO SERCOM_SPI_ADDR_Type      ADDR;        /**< \brief Offset: 0x14 (R/W 32) SPI Address */
1177   __IO SERCOM_SPI_DATA_Type      DATA;        /**< \brief Offset: 0x18 (R/W 16) SPI Data */
1178 } SercomSpi;
1179 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1180 
1181 /** \brief SERCOM_USART hardware registers */
1182 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1183 typedef struct { /* USART Mode */
1184   __IO SERCOM_USART_CTRLA_Type   CTRLA;       /**< \brief Offset: 0x00 (R/W 32) USART Control A */
1185   __IO SERCOM_USART_CTRLB_Type   CTRLB;       /**< \brief Offset: 0x04 (R/W 32) USART Control B */
1186   __IO SERCOM_USART_DBGCTRL_Type DBGCTRL;     /**< \brief Offset: 0x08 (R/W  8) USART Debug Control */
1187        RoReg8                    Reserved1[0x1];
1188   __IO SERCOM_USART_BAUD_Type    BAUD;        /**< \brief Offset: 0x0A (R/W 16) USART Baud */
1189   __IO SERCOM_USART_INTENCLR_Type INTENCLR;    /**< \brief Offset: 0x0C (R/W  8) USART Interrupt Enable Clear */
1190   __IO SERCOM_USART_INTENSET_Type INTENSET;    /**< \brief Offset: 0x0D (R/W  8) USART Interrupt Enable Set */
1191   __IO SERCOM_USART_INTFLAG_Type INTFLAG;     /**< \brief Offset: 0x0E (R/W  8) USART Interrupt Flag Status and Clear */
1192        RoReg8                    Reserved2[0x1];
1193   __IO SERCOM_USART_STATUS_Type  STATUS;      /**< \brief Offset: 0x10 (R/W 16) USART Status */
1194        RoReg8                    Reserved3[0x6];
1195   __IO SERCOM_USART_DATA_Type    DATA;        /**< \brief Offset: 0x18 (R/W 16) USART Data */
1196 } SercomUsart;
1197 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1198 
1199 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
1200 typedef union {
1201        SercomI2cm                I2CM;        /**< \brief Offset: 0x00 I2C Master Mode */
1202        SercomI2cs                I2CS;        /**< \brief Offset: 0x00 I2C Slave Mode */
1203        SercomSpi                 SPI;         /**< \brief Offset: 0x00 SPI Mode */
1204        SercomUsart               USART;       /**< \brief Offset: 0x00 USART Mode */
1205 } Sercom;
1206 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
1207 
1208 /*@}*/
1209 
1210 #endif /* _SAMD20_SERCOM_COMPONENT_ */
1211