Skip to content

Commit 03844b1

Browse files
committed
SPI1 tested & works
1 parent ebaf3bc commit 03844b1

File tree

2 files changed

+42
-6
lines changed

2 files changed

+42
-6
lines changed

variants/zero_radio/variant.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ const PinDescription g_APinDescription[]=
123123
{ PORTA, 9, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH1, TCC0_CH1, EXTERNAL_INT_9 }, // TCC0/WO[1]
124124
{ PORTA, 8, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_NMI }, // TCC0/WO[0]
125125
{ PORTA, 15, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM3_CH1, TC3_CH1, EXTERNAL_INT_15 }, // TC3/WO[1]
126-
{ PORTA, 20, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH6, TCC0_CH6, EXTERNAL_INT_4 }, // TCC0/WO[6]
126+
{ PORTA, 20, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH6, TCC0_CH6, EXTERNAL_INT_4 }, // used for AT86RF SLP_TR
127127
{ }, // PA21 not available on SAMR
128128

129129
// Digital High
@@ -195,6 +195,16 @@ const PinDescription g_APinDescription[]=
195195
// ----------------------
196196
// 43 - Alternate use of A0 (DAC output)
197197
{ }, // DAC/VOUT
198+
199+
200+
// ----- Special SAMR pins! ------
201+
{ PORTB, 15, PIO_TIMER, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // #44 PB15 == AT86_RESETN
202+
{ PORTC, 16, PIO_TIMER, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // #45 PC16 == AT86_CLKM
203+
{ PORTC, 18, PIO_TIMER_ALT, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // #46 PC18 == AT86_SCLK sercom4.3
204+
{ PORTC, 19, PIO_TIMER_ALT, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // #47 PC19 == AT86_MISO sercom4.0
205+
{ PORTB, 30, PIO_TIMER_ALT, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // #48 PB30 == AT86_MOSI sercom4.2
206+
{ PORTB, 31, PIO_TIMER_ALT, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // #49 PB31 == AT86_SEL sercom4.1
207+
198208
} ;
199209

200210
const void* g_apTCInstances[TCC_INST_NUM+TC_INST_NUM]={ TCC0, TCC1, TCC2, TC3, TC4, TC5 } ;

variants/zero_radio/variant.h

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,11 @@ extern "C"
5353
*----------------------------------------------------------------------------*/
5454

5555
// Number of pins defined in PinDescription array
56-
#define PINS_COUNT (26u)
57-
#define NUM_DIGITAL_PINS (20u)
56+
#define PINS_COUNT (50u)
57+
#define NUM_DIGITAL_PINS (50u)
58+
5859
#define NUM_ANALOG_INPUTS (8u)
59-
#define NUM_ANALOG_OUTPUTS (1u)
60+
#define NUM_ANALOG_OUTPUTS (0u)
6061
#define analogInputToDigitalPin(p) ((p < 6u) ? (p) + 14u : -1)
6162

6263
#define digitalPinToPort(P) ( &(PORT->Group[g_APinDescription[P].ulPort]) )
@@ -112,6 +113,17 @@ static const uint8_t A7 = PIN_A7 ;
112113
#define PIN_ATN (38ul)
113114
static const uint8_t ATN = PIN_ATN;
114115

116+
117+
// Other pins
118+
#define PIN_ATRF_RESETN 44
119+
#define PIN_ATRF_CLKM 45
120+
#define PIN_ATRF_SLPTR 6
121+
#define PIN_ATRF_SCLK (46u)
122+
#define PIN_ATRF_MISO (47u)
123+
#define PIN_ATRF_MOSI (48u)
124+
#define PIN_ATRF_SEL (49u)
125+
126+
115127
/*
116128
* Serial interfaces
117129
*/
@@ -125,8 +137,9 @@ static const uint8_t ATN = PIN_ATN;
125137
/*
126138
* SPI Interfaces
127139
*/
128-
#define SPI_INTERFACES_COUNT 1
140+
#define SPI_INTERFACES_COUNT 2
129141

142+
// "external" SPI, used for sensors, displays, available to user
130143
#define PIN_SPI_MISO (2u)
131144
#define PIN_SPI_MOSI (22u)
132145
#define PIN_SPI_SCK (38u)
@@ -139,6 +152,20 @@ static const uint8_t MOSI = PIN_SPI_MOSI ;
139152
static const uint8_t MISO = PIN_SPI_MISO ;
140153
static const uint8_t SCK = PIN_SPI_SCK ;
141154

155+
// "internal" SPI, used for AT86RF233 only!
156+
#define PIN_SPI1_MISO (47u)
157+
#define PIN_SPI1_MOSI (48u)
158+
#define PIN_SPI1_SCK (46u)
159+
#define PIN_SPI1_SEL (49u)
160+
#define PERIPH_SPI1 sercom4
161+
#define PAD_SPI1_TX SPI_PAD_2_SCK_3
162+
#define PAD_SPI1_RX SERCOM_RX_PAD_0
163+
164+
static const uint8_t SS1 = PIN_SPI1_SEL ;
165+
static const uint8_t MOSI1 = PIN_SPI_MOSI ;
166+
static const uint8_t MISO1 = PIN_SPI_MISO ;
167+
static const uint8_t SCK1 = PIN_SPI_SCK ;
168+
142169
/*
143170
* Wire Interfaces
144171
*/
@@ -180,7 +207,6 @@ extern SERCOM sercom3;
180207
extern SERCOM sercom4;
181208
extern SERCOM sercom5;
182209

183-
extern Uart Serial5;
184210
extern Uart Serial1;
185211

186212
#endif

0 commit comments

Comments
 (0)