use PIN_SPI_XXX on Arduino Zero

This commit is contained in:
Matthias Ringwald 2015-06-20 23:51:30 +02:00
parent 214c1523a1
commit 840902512d

View File

@ -19,21 +19,30 @@
#ifdef ENERGIA #ifdef ENERGIA
// CMM 9301 Configuration for TI Launchpad // CMM 9301 Configuration for TI Launchpad
#define PIN_SCK 7 #define PIN_SPI_SCK 7
#define PIN_CS 8 #define PIN_CS 8
#define PIN_SHUTDOWN 11 #define PIN_SHUTDOWN 11
#define PIN_IRQ_DATA 13 #define PIN_IRQ_DATA 13
#define PIN_MISO 14 #define PIN_SPI_MISO 14
#define PIN_MOSI 15 #define PIN_SPI_MOSI 15
#else // ARDUINO #else // ARDUINO
// CMM 9301 Configuration on Arduino // CMM 9301 Configuration for Arduino
#define PIN_IRQ_DATA 2 #define PIN_IRQ_DATA 2
#define PIN_CS 4 #define PIN_CS 4
#define PIN_SHUTDOWN 5 #define PIN_SHUTDOWN 5
#define PIN_MISO 50
#define PIN_MOSI 51 // -- SPI defines for Arduino Mega
#define PIN_SCK 52 #ifndef PIN_SPI_MISO
#define PIN_SPI_MISO 50
#endif
#ifndef PIN_SPI_MOSI
#define PIN_SPI_MOSI 51
#endif
#ifndef PIN_SPI_SCK
#define PIN_SPI_SCK 52
#endif
#endif #endif
// rx state // rx state
@ -51,37 +60,40 @@ static void (*tx_done_handler)(void) = dummy_handler;
static void bt_setup(void){ static void bt_setup(void){
pinMode(PIN_CS, OUTPUT); pinMode(PIN_CS, OUTPUT);
pinMode(PIN_MOSI, OUTPUT); pinMode(PIN_SPI_MOSI, OUTPUT);
pinMode(PIN_SCK, OUTPUT); pinMode(PIN_SPI_SCK, OUTPUT);
pinMode(PIN_SHUTDOWN, OUTPUT); pinMode(PIN_SHUTDOWN, OUTPUT);
pinMode(PIN_IRQ_DATA, INPUT); pinMode(PIN_IRQ_DATA, INPUT);
digitalWrite(PIN_CS, HIGH); digitalWrite(PIN_CS, HIGH);
digitalWrite(PIN_MOSI, LOW); digitalWrite(PIN_SPI_MOSI, LOW);
digitalWrite(PIN_SHUTDOWN, HIGH); digitalWrite(PIN_SHUTDOWN, HIGH);
// SPI.begin();
SPI.setBitOrder(MSBFIRST); SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SPI_MODE0); SPI.setDataMode(SPI_MODE0);
// SPI.end();
} }
#ifdef HAVE_SHUTDOWN #ifdef HAVE_SHUTDOWN
static void bt_power_cycle(void){ static void bt_power_cycle(void){
// power cycle. set CPU outputs to input to not power EM9301 via IOs // power cycle. set CPU outputs to input to not power EM9301 via IOs
// pinMode(PIN_MOSI, INPUT); // pinMode(PIN_SPI_MOSI, INPUT);
// pinMode(PIN_CS, INPUT); // pinMode(PIN_CS, INPUT);
pinMode(PIN_CS, OUTPUT); pinMode(PIN_CS, OUTPUT);
pinMode(PIN_MOSI, OUTPUT); pinMode(PIN_SPI_MOSI, OUTPUT);
pinMode(PIN_SCK, OUTPUT); pinMode(PIN_SPI_SCK, OUTPUT);
pinMode(PIN_SHUTDOWN, OUTPUT); pinMode(PIN_SHUTDOWN, OUTPUT);
digitalWrite(PIN_CS, LOW); digitalWrite(PIN_CS, LOW);
digitalWrite(PIN_MOSI, LOW); digitalWrite(PIN_SPI_MOSI, LOW);
digitalWrite(PIN_SCK, LOW); digitalWrite(PIN_SPI_SCK, LOW);
digitalWrite(PIN_SHUTDOWN, HIGH); digitalWrite(PIN_SHUTDOWN, HIGH);
delay(500); delay(500);
pinMode(PIN_MOSI, OUTPUT); pinMode(PIN_SPI_MOSI, OUTPUT);
pinMode(PIN_CS, OUTPUT); pinMode(PIN_CS, OUTPUT);
digitalWrite(PIN_MOSI, LOW); digitalWrite(PIN_SPI_MOSI, LOW);
digitalWrite(PIN_CS, HIGH); digitalWrite(PIN_CS, HIGH);
digitalWrite(PIN_SHUTDOWN, LOW); digitalWrite(PIN_SHUTDOWN, LOW);
delay(1000); delay(1000);
@ -90,7 +102,7 @@ static void bt_power_cycle(void){
#ifndef HAVE_SHUTDOWN #ifndef HAVE_SHUTDOWN
static void bt_send_illegal(void){ static void bt_send_illegal(void){
digitalWrite(PIN_MOSI, HIGH); digitalWrite(PIN_SPI_MOSI, HIGH);
digitalWrite(PIN_CS, LOW); digitalWrite(PIN_CS, LOW);
printf("Illegal start\n"); printf("Illegal start\n");
SPI.begin(); SPI.begin();
@ -105,7 +117,7 @@ static void bt_send_illegal(void){
} }
static void bt_flush_input(void){ static void bt_flush_input(void){
digitalWrite(PIN_MOSI, LOW); digitalWrite(PIN_SPI_MOSI, LOW);
digitalWrite(PIN_CS, LOW); digitalWrite(PIN_CS, LOW);
SPI.begin(); SPI.begin();
while (digitalRead(PIN_IRQ_DATA) == HIGH){ while (digitalRead(PIN_IRQ_DATA) == HIGH){
@ -116,7 +128,7 @@ static void bt_flush_input(void){
} }
static void bt_send_reset(void){ static void bt_send_reset(void){
digitalWrite(PIN_MOSI, HIGH); digitalWrite(PIN_SPI_MOSI, HIGH);
digitalWrite(PIN_CS, LOW); digitalWrite(PIN_CS, LOW);
SPI.begin(); SPI.begin();
SPI.transfer(0x01); SPI.transfer(0x01);
@ -134,13 +146,13 @@ static void bt_try_send(void){
if (!bytes_to_write) return; if (!bytes_to_write) return;
// activate module // activate module
pinMode(PIN_MOSI, OUTPUT); pinMode(PIN_SPI_MOSI, OUTPUT);
digitalWrite(PIN_MOSI, HIGH); digitalWrite(PIN_SPI_MOSI, HIGH);
digitalWrite(PIN_CS, LOW); digitalWrite(PIN_CS, LOW);
// module ready // module ready
int tx_done = 0; int tx_done = 0;
if (digitalRead(PIN_MISO) == HIGH){ if (digitalRead(PIN_SPI_MISO) == HIGH){
// printf("Sending: "); // printf("Sending: ");
SPI.begin(); SPI.begin();
@ -157,8 +169,8 @@ static void bt_try_send(void){
// deactivate module // deactivate module
digitalWrite(PIN_CS, HIGH); digitalWrite(PIN_CS, HIGH);
digitalWrite(PIN_MOSI, LOW); digitalWrite(PIN_SPI_MOSI, LOW);
pinMode(PIN_MOSI, OUTPUT); pinMode(PIN_SPI_MOSI, OUTPUT);
// notify upper layer // notify upper layer
if (tx_done) { if (tx_done) {
@ -177,7 +189,7 @@ static int bt_try_read(void){
// printf("Reading (%u): ", bytes_to_read); // printf("Reading (%u): ", bytes_to_read);
// activate module // activate module
digitalWrite(PIN_MOSI, LOW); digitalWrite(PIN_SPI_MOSI, LOW);
digitalWrite(PIN_CS, LOW); digitalWrite(PIN_CS, LOW);
SPI.begin(); SPI.begin();
do { do {