/
hw_config.h
219 lines (190 loc) · 5.62 KB
/
hw_config.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
/*
* Hardware definitions and configuations
* Copyright (C) 2014 Richard Meadows <richardeoin>
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#ifndef HW_CONFIG_H
#define HW_CONFIG_H
#include "port.h"
#include "samd20.h"
#include "adc/adc.h"
/*
* Convenience definitions for available GPIO modules
*/
#if (PORT_GROUPS > 0)
#define PORTA PORT->Group[0]
#endif
#if (PORT_GROUPS > 1)
#define PORTB PORT->Group[1]
#endif
#if (PORT_GROUPS > 2)
#define PORTC PORT->Group[2]
#endif
#if (PORT_GROUPS > 3)
#define PORTD PORT->Group[3]
#endif
//#define XPLAINED
/**
* LED
*/
#ifdef XPLAINED
#define LED0_PIN PIN_PA14
#else
#define LED0_PIN PIN_PA16
#endif
/**
* GPS
*/
#define GPS_SERCOM (SercomUsart*)SERCOM0
#define GPS_SERCOM_MOGI_PIN PIN_PA06
#define GPS_SERCOM_MOGI_PINMUX PINMUX_PA06D_SERCOM0_PAD2
#define GPS_SERCOM_MIGO_PIN PIN_PA07
#define GPS_SERCOM_MIGO_PINMUX PINMUX_PA07D_SERCOM0_PAD3
#define GPS_SERCOM_MUX USART_RX_3_TX_2_XCK_3
#define GPS_GCLK GCLK_GENERATOR_1
#define GPS_BAUD_RATE 9600
#define GPS_PLATFORM_MODEL UBX_PLATFORM_MODEL_AIRBORNE_1G
#define GPS_TIMEPULSE_PIN PIN_PA05
#define GPS_TIMEPULSE_PINMUX PINMUX_PA05A_EIC_EXTINT5
#define GPS_TIMEPULSE_FREQ 1
#define GPS_TIMEPULSE_EXTINT 5
#define GPS_RESET_PIN PIN_PA15
/**
* USART Loopback Testing
*/
#define USART_MUX_LOOPBACK USART_RX_2_TX_2_XCK_3
/**
* Flash Memory
*/
#define FLASH_SERCOM (SercomSpi*)SERCOM2
#define FLASH_SERCOM_MOSI_PIN PIN_PA08
#define FLASH_SERCOM_MOSI_PINMUX PINMUX_PA08D_SERCOM2_PAD0
#define FLASH_SERCOM_MISO_PIN PIN_PA11
#define FLASH_SERCOM_MISO_PINMUX PINMUX_PA11D_SERCOM2_PAD3
#define FLASH_SERCOM_SCK_PIN PIN_PA09
#define FLASH_SERCOM_SCK_PINMUX PINMUX_PA09D_SERCOM2_PAD1
#define FLASH_SERCOM_MUX SPI_SIGNAL_MUX_SETTING_D
#define FLASH_CSN_PIN PIN_PA10
/**
* I2C Bus
*/
#define I2C_SERCOM (SercomI2cm*)SERCOM1
#define I2C_SERCOM_SDA_PIN PIN_PA00
#define I2C_SERCOM_SDA_PINMUX PINMUX_PA00D_SERCOM1_PAD0
#define I2C_SERCOM_SCL_PIN PIN_PA01
#define I2C_SERCOM_SCL_PINMUX PINMUX_PA01D_SERCOM1_PAD1
/**
* Battery ADC
*/
#define BATTERY_ADC 0
#define BATTERY_ADC_PIN PIN_PA02
#define BATTERY_ADC_PINMUX PINMUX_PA02B_ADC_AIN0
#define BATTERY_ADC_CHANNEL ADC_POSITIVE_INPUT_PIN0
#define BATTERY_ADC_CHANNEL_DIV 0.3125
/**
* External Thermistor ADC
*/
#define THERMISTOR_ADC 1
#define THERMISTOR_ADC_PIN PIN_PA03
#define THERMISTOR_ADC_PINMUX PINMUX_PA03
#define THERMISTOR_ADC_CHANNEL ADC_POSITIVE_INPUT_PIN1
#define THERMISTOR_ADC_CHANNEL_DIV 1
/**
* Solar ADC
*/
#define SOLAR_ADC 1
#define SOLAR_ADC_PIN PIN_PA04
#define SOLAR_ADC_PINMUX PINMUX_PA04B_ADC_AIN4
#define SOLAR_ADC_CHANNEL ADC_POSITIVE_INPUT_PIN4
#define SOLAR_ADC_CHANNEL_DIV 1
/**
* Radio
*/
#define SI4xxx_SERCOM (SercomSpi*)SERCOM3
#define SI4xxx_SERCOM_MOSI_PIN PIN_PA19
#define SI4xxx_SERCOM_MOSI_PINMUX PINMUX_PA19D_SERCOM3_PAD3
#define SI4xxx_SERCOM_MISO_PIN PIN_PA22
#define SI4xxx_SERCOM_MISO_PINMUX PINMUX_PA22C_SERCOM3_PAD0
#define SI4xxx_SERCOM_SCK_PIN PIN_PA23
#define SI4xxx_SERCOM_SCK_PINMUX PINMUX_PA23C_SERCOM3_PAD1
#define SI4xxx_SERCOM_MUX SPI_SIGNAL_MUX_SETTING_M
#define SI4xxx_SEL_PIN PIN_PA18
#define SI4xxx_IRQ_PIN PIN_PA24
#define SI4xxx_IRQ_PINMUX PINMUX_PA24A_EIC_EXTINT12
#define SI4xxx_SDN_PIN PIN_PA17
#define SI4xxx_GPIO0_PIN PIN_PA27
#define SI4xxx_GPIO1_PIN PIN_PA25
#define SI4xxx_GPIO1_PINMUX PINMUX_PA25F_TC5_WO1
#define SI4xxx_TCXO_FREQUENCY 16369000
/**
* RF Power @ 1.8V
*
* These values are taken from the datasheet, but the
* difference between them has been measured as 6dB
*/
#define RF_POWER_14dBm 0x7f
#define RF_POWER_8dBm 36
/**
* XOSC
*/
#define USE_XOSC 1
#define XOSC_FREQUENCY 16369000
#define XOSC_GCLK1_DIVIDE 2
/**
* Telemetry
*/
#define TELEMETRY_FREQUENCY 434602000
#define TELEMETRY_POWER RF_POWER_8dBm
#define TELEMETRY_USE_GEOFENCE 1
/**
* APRS
*/
#define APRS_ENABLE 1
#define APRS_USE_GEOFENCE 1
#define APRS_POWER RF_POWER_14dBm
/**
* Watchdog Timer
*
* There is a performance penalty to using the watchdog - you must
* wait up to 1/16kHz when kicking to sync with it. Disable when not in use
*/
#define DEBUG_USE_INTWATCHDOG 0
#define WDT_GCLK GCLK_GENERATOR_4
/**
* External Watchdog Timer
*/
#define WDT_WDI_PIN PIN_PA28
/**
* SWD
*/
#define SWD_SWDCLK_PIN PIN_PA30
#define SWD_SWDCLK_PINMUX PINMUX_PA30G_CORE_SWCLK
#define SWD_SWDIO_PIN PIN_PA31
/**
* Interrupt Priority
*/
#define WDT_INT_PRIO 0 /* Early warning interrupt */
#define TC0_INT_PRIO 1 /* Telemetry Tick Timer */
#define GPS_SERCOM_INT_PRIO 2 /* GPS USART Rx */
#define EIC_INT_PRIO 3 /* Timepulse, telemetry */
#define TC2_INT_PRIO 3 /* XOSC Measure Timer */
#define ADC_INT_PRIO 3 /* ADC */
#endif /* HW_CONFIG_H */