blob: e154ce2eecad2b3bf587f9571ef95b29c52602b0 [file] [log] [blame]
Kévin Redon4cd3f7d2019-01-24 17:57:13 +01001/* Auto-generated config file hpl_sercom_config.h */
2#ifndef HPL_SERCOM_CONFIG_H
3#define HPL_SERCOM_CONFIG_H
4
5// <<< Use Configuration Wizard in Context Menu >>>
6
7#include <peripheral_clk_config.h>
8
9#ifndef CONF_SERCOM_2_USART_ENABLE
10#define CONF_SERCOM_2_USART_ENABLE 1
11#endif
12
13// <h> Basic Configuration
14
15// <q> Receive buffer enable
16// <i> Enable input buffer in SERCOM module
17// <id> usart_rx_enable
18#ifndef CONF_SERCOM_2_USART_RXEN
19#define CONF_SERCOM_2_USART_RXEN 1
20#endif
21
22// <q> Transmitt buffer enable
23// <i> Enable output buffer in SERCOM module
24// <id> usart_tx_enable
25#ifndef CONF_SERCOM_2_USART_TXEN
26#define CONF_SERCOM_2_USART_TXEN 1
27#endif
28
29// <o> Frame parity
30// <0x0=>No parity
31// <0x1=>Even parity
32// <0x2=>Odd parity
33// <i> Parity bit mode for USART frame
34// <id> usart_parity
35#ifndef CONF_SERCOM_2_USART_PARITY
36#define CONF_SERCOM_2_USART_PARITY 0x0
37#endif
38
39// <o> Character Size
40// <0x0=>8 bits
41// <0x1=>9 bits
42// <0x5=>5 bits
43// <0x6=>6 bits
44// <0x7=>7 bits
45// <i> Data character size in USART frame
46// <id> usart_character_size
47#ifndef CONF_SERCOM_2_USART_CHSIZE
48#define CONF_SERCOM_2_USART_CHSIZE 0x0
49#endif
50
51// <o> Stop Bit
52// <0=>One stop bit
53// <1=>Two stop bits
54// <i> Number of stop bits in USART frame
55// <id> usart_stop_bit
56#ifndef CONF_SERCOM_2_USART_SBMODE
57#define CONF_SERCOM_2_USART_SBMODE 0
58#endif
59
60// <o> Baud rate <1-6250000>
61// <i> USART baud rate setting
62// <id> usart_baud_rate
63#ifndef CONF_SERCOM_2_USART_BAUD
64#define CONF_SERCOM_2_USART_BAUD 921600
65#endif
66
67// </h>
68
69// <e> Advanced configuration
70// <id> usart_advanced
71#ifndef CONF_SERCOM_2_USART_ADVANCED_CONFIG
72#define CONF_SERCOM_2_USART_ADVANCED_CONFIG 0
73#endif
74
75// <q> Run in stand-by
76// <i> Keep the module running in standby sleep mode
77// <id> usart_arch_runstdby
78#ifndef CONF_SERCOM_2_USART_RUNSTDBY
79#define CONF_SERCOM_2_USART_RUNSTDBY 0
80#endif
81
82// <q> Immediate Buffer Overflow Notification
83// <i> Controls when the BUFOVF status bit is asserted
84// <id> usart_arch_ibon
85#ifndef CONF_SERCOM_2_USART_IBON
86#define CONF_SERCOM_2_USART_IBON 0
87#endif
88
89// <q> Start of Frame Detection Enable
90// <i> Will wake the device from any sleep mode if usart_init and usart_enable was run priort to going to sleep. (receive buffer must be enabled)
91// <id> usart_arch_sfde
92#ifndef CONF_SERCOM_2_USART_SFDE
93#define CONF_SERCOM_2_USART_SFDE 0
94#endif
95
96// <q> Collision Detection Enable
97// <i> Collision detection enable
98// <id> usart_arch_cloden
99#ifndef CONF_SERCOM_2_USART_CLODEN
100#define CONF_SERCOM_2_USART_CLODEN 0
101#endif
102
103// <o> Operating Mode
104// <0x0=>USART with external clock
105// <0x1=>USART with internal clock
106// <i> Drive the shift register by an internal clock generated by the baud rate generator or an external clock supplied on the XCK pin.
107// <id> usart_arch_clock_mode
108#ifndef CONF_SERCOM_2_USART_MODE
109#define CONF_SERCOM_2_USART_MODE 0x1
110#endif
111
112// <o> Sample Rate
113// <0x0=>16x arithmetic
114// <0x1=>16x fractional
115// <0x2=>8x arithmetic
116// <0x3=>8x fractional
117// <0x4=>3x arithmetic
118// <i> How many over-sampling bits used when sampling data state
119// <id> usart_arch_sampr
120#ifndef CONF_SERCOM_2_USART_SAMPR
121#define CONF_SERCOM_2_USART_SAMPR 0x0
122#endif
123
124// <o> Sample Adjustment
125// <0x0=>7-8-9 (3-4-5 8-bit over-sampling)
126// <0x1=>9-10-11 (4-5-6 8-bit over-sampling)
127// <0x2=>11-12-13 (5-6-7 8-bit over-sampling)
128// <0x3=>13-14-15 (6-7-8 8-bit over-sampling)
129// <i> Adjust which samples to use for data sampling in asynchronous mode
130// <id> usart_arch_sampa
131#ifndef CONF_SERCOM_2_USART_SAMPA
132#define CONF_SERCOM_2_USART_SAMPA 0x0
133#endif
134
135// <o> Fractional Part <0-7>
136// <i> Fractional part of the baud rate if baud rate generator is in fractional mode
137// <id> usart_arch_fractional
138#ifndef CONF_SERCOM_2_USART_FRACTIONAL
139#define CONF_SERCOM_2_USART_FRACTIONAL 0x0
140#endif
141
142// <o> Data Order
143// <0=>MSB is transmitted first
144// <1=>LSB is transmitted first
145// <i> Data order of the data bits in the frame
146// <id> usart_arch_dord
147#ifndef CONF_SERCOM_2_USART_DORD
148#define CONF_SERCOM_2_USART_DORD 1
149#endif
150
151// Does not do anything in UART mode
152#define CONF_SERCOM_2_USART_CPOL 0
153
154// <o> Encoding Format
155// <0=>No encoding
156// <1=>IrDA encoded
157// <id> usart_arch_enc
158#ifndef CONF_SERCOM_2_USART_ENC
159#define CONF_SERCOM_2_USART_ENC 0
160#endif
161
162// <o> LIN Slave Enable
163// <i> Break Character Detection and Auto-Baud/LIN Slave Enable.
164// <i> Additional setting needed: 16x sample rate using fractional baud rate generation (CTRLA.SAMPR = 1).
165// <0=>Disable
166// <1=>Enable
167// <id> usart_arch_lin_slave_enable
168#ifndef CONF_SERCOM_2_USART_LIN_SLAVE_ENABLE
169#define CONF_SERCOM_2_USART_LIN_SLAVE_ENABLE 0
170#endif
171
172// <o> Debug Stop Mode
173// <i> Behavior of the baud-rate generator when CPU is halted by external debugger.
174// <0=>Keep running
175// <1=>Halt
176// <id> usart_arch_dbgstop
177#ifndef CONF_SERCOM_2_USART_DEBUG_STOP_MODE
178#define CONF_SERCOM_2_USART_DEBUG_STOP_MODE 0
179#endif
180
181// </e>
182
183#ifndef CONF_SERCOM_2_USART_INACK
184#define CONF_SERCOM_2_USART_INACK 0x0
185#endif
186
187#ifndef CONF_SERCOM_2_USART_DSNACK
188#define CONF_SERCOM_2_USART_DSNACK 0x0
189#endif
190
191#ifndef CONF_SERCOM_2_USART_MAXITER
192#define CONF_SERCOM_2_USART_MAXITER 0x7
193#endif
194
195#ifndef CONF_SERCOM_2_USART_GTIME
196#define CONF_SERCOM_2_USART_GTIME 0x2
197#endif
198
199#define CONF_SERCOM_2_USART_RXINV 0x0
200#define CONF_SERCOM_2_USART_TXINV 0x0
201
202#ifndef CONF_SERCOM_2_USART_CMODE
203#define CONF_SERCOM_2_USART_CMODE 0
204#endif
205
206#ifndef CONF_SERCOM_2_USART_RXPO
207#define CONF_SERCOM_2_USART_RXPO 1 /* RX is on PIN_PB24 */
208#endif
209
210#ifndef CONF_SERCOM_2_USART_TXPO
211#define CONF_SERCOM_2_USART_TXPO 0 /* TX is on PIN_PB25 */
212#endif
213
214/* Set correct parity settings in register interface based on PARITY setting */
215#if CONF_SERCOM_2_USART_LIN_SLAVE_ENABLE == 1
216#if CONF_SERCOM_2_USART_PARITY == 0
217#define CONF_SERCOM_2_USART_PMODE 0
218#define CONF_SERCOM_2_USART_FORM 4
219#else
220#define CONF_SERCOM_2_USART_PMODE CONF_SERCOM_2_USART_PARITY - 1
221#define CONF_SERCOM_2_USART_FORM 5
222#endif
223#else /* #if CONF_SERCOM_2_USART_LIN_SLAVE_ENABLE == 0 */
224#if CONF_SERCOM_2_USART_PARITY == 0
225#define CONF_SERCOM_2_USART_PMODE 0
226#define CONF_SERCOM_2_USART_FORM 0
227#else
228#define CONF_SERCOM_2_USART_PMODE CONF_SERCOM_2_USART_PARITY - 1
229#define CONF_SERCOM_2_USART_FORM 1
230#endif
231#endif
232
233// Calculate BAUD register value in UART mode
234#if CONF_SERCOM_2_USART_SAMPR == 0
235#ifndef CONF_SERCOM_2_USART_BAUD_RATE
236#define CONF_SERCOM_2_USART_BAUD_RATE \
237 65536 - ((65536 * 16.0f * CONF_SERCOM_2_USART_BAUD) / CONF_GCLK_SERCOM2_CORE_FREQUENCY)
238#endif
239#ifndef CONF_SERCOM_2_USART_RECEIVE_PULSE_LENGTH
240#define CONF_SERCOM_2_USART_RECEIVE_PULSE_LENGTH 0
241#endif
242#elif CONF_SERCOM_2_USART_SAMPR == 1
243#ifndef CONF_SERCOM_2_USART_BAUD_RATE
244#define CONF_SERCOM_2_USART_BAUD_RATE \
245 ((CONF_GCLK_SERCOM2_CORE_FREQUENCY) / (CONF_SERCOM_2_USART_BAUD * 16)) - (CONF_SERCOM_2_USART_FRACTIONAL / 8)
246#endif
247#ifndef CONF_SERCOM_2_USART_RECEIVE_PULSE_LENGTH
248#define CONF_SERCOM_2_USART_RECEIVE_PULSE_LENGTH 0
249#endif
250#elif CONF_SERCOM_2_USART_SAMPR == 2
251#ifndef CONF_SERCOM_2_USART_BAUD_RATE
252#define CONF_SERCOM_2_USART_BAUD_RATE \
253 65536 - ((65536 * 8.0f * CONF_SERCOM_2_USART_BAUD) / CONF_GCLK_SERCOM2_CORE_FREQUENCY)
254#endif
255#ifndef CONF_SERCOM_2_USART_RECEIVE_PULSE_LENGTH
256#define CONF_SERCOM_2_USART_RECEIVE_PULSE_LENGTH 0
257#endif
258#elif CONF_SERCOM_2_USART_SAMPR == 3
259#ifndef CONF_SERCOM_2_USART_BAUD_RATE
260#define CONF_SERCOM_2_USART_BAUD_RATE \
261 ((CONF_GCLK_SERCOM2_CORE_FREQUENCY) / (CONF_SERCOM_2_USART_BAUD * 8)) - (CONF_SERCOM_2_USART_FRACTIONAL / 8)
262#endif
263#ifndef CONF_SERCOM_2_USART_RECEIVE_PULSE_LENGTH
264#define CONF_SERCOM_2_USART_RECEIVE_PULSE_LENGTH 0
265#endif
266#elif CONF_SERCOM_2_USART_SAMPR == 4
267#ifndef CONF_SERCOM_2_USART_BAUD_RATE
268#define CONF_SERCOM_2_USART_BAUD_RATE \
269 65536 - ((65536 * 3.0f * CONF_SERCOM_2_USART_BAUD) / CONF_GCLK_SERCOM2_CORE_FREQUENCY)
270#endif
271#ifndef CONF_SERCOM_2_USART_RECEIVE_PULSE_LENGTH
272#define CONF_SERCOM_2_USART_RECEIVE_PULSE_LENGTH 0
273#endif
274#endif
275
276// <<< end of configuration section >>>
277
278#endif // HPL_SERCOM_CONFIG_H