Add STM32F1 HW support (#795)
This commit is contained in:
@@ -90,6 +90,8 @@ bool RFM69::initialize(uint8_t freqBand, uint8_t nodeID, uint8_t networkID)
|
||||
|
||||
hwDigitalWrite(_slaveSelectPin, HIGH);
|
||||
hwPinMode(_slaveSelectPin, OUTPUT);
|
||||
hwPinMode(_interruptPin, INPUT);
|
||||
|
||||
SPI.begin();
|
||||
unsigned long start = millis();
|
||||
uint8_t timeout = 50;
|
||||
@@ -500,8 +502,7 @@ void RFM69::select()
|
||||
// set RFM69 SPI settings
|
||||
SPI.setDataMode(SPI_MODE0);
|
||||
SPI.setBitOrder(MSBFIRST);
|
||||
SPI.setClockDivider(
|
||||
SPI_CLOCK_DIV4); // decided to slow down from DIV2 after SPI stalling in some instances, especially visible on mega1284p when RFM69 and FLASH chip both present
|
||||
SPI.setClockDivider(MY_RF69_SPI_CLOCK_DIV);
|
||||
hwDigitalWrite(_slaveSelectPin, LOW);
|
||||
}
|
||||
|
||||
|
||||
+27
-2
@@ -31,6 +31,7 @@
|
||||
#ifndef RFM69_h
|
||||
#define RFM69_h
|
||||
#include <Arduino.h> // assumes Arduino IDE v1.0 or greater
|
||||
#include <SPI.h>
|
||||
|
||||
#define RF69_MAX_DATA_LEN 61 // to take advantage of the built in AES/CRC we want to limit the frame size to the internal FIFO size (66 bytes - 3 bytes overhead - 2 bytes crc)
|
||||
#define RF69_SPI_CS SS // SS is the SPI slave select pin, for instance D10 on ATmega328
|
||||
@@ -45,14 +46,39 @@
|
||||
#elif defined(__AVR_ATmega32U4__)
|
||||
#define RF69_IRQ_PIN 3
|
||||
#define RF69_IRQ_NUM 0
|
||||
#elif defined(__arm__)//Use pin 10 or any pin you want
|
||||
#elif defined(__STM32F1__)
|
||||
#define RF69_IRQ_PIN PA3
|
||||
#define RF69_IRQ_NUM PA3
|
||||
#elif defined(__arm__) //generic ARM
|
||||
#define RF69_IRQ_PIN 10
|
||||
#define RF69_IRQ_NUM 10
|
||||
#elif defined(ARDUINO_ARCH_ESP8266)
|
||||
#define RF69_IRQ_PIN 2
|
||||
#define RF69_IRQ_NUM 2
|
||||
#else
|
||||
#define RF69_IRQ_PIN 2
|
||||
#define RF69_IRQ_NUM 0
|
||||
#endif
|
||||
|
||||
// SPI clock@2-4Mhz
|
||||
#if (F_CPU>=512000000)
|
||||
#define RF69_SPI_CLOCK_DIV SPI_CLOCK_DIV256
|
||||
#elif (F_CPU>=256000000)
|
||||
#define RF69_SPI_CLOCK_DIV SPI_CLOCK_DIV128
|
||||
#elif (F_CPU>=128000000)
|
||||
#define RF69_SPI_CLOCK_DIV SPI_CLOCK_DIV64
|
||||
#elif (F_CPU>=64000000)
|
||||
#define RF69_SPI_CLOCK_DIV SPI_CLOCK_DIV32
|
||||
#elif (F_CPU>=32000000)
|
||||
#define RF69_SPI_CLOCK_DIV SPI_CLOCK_DIV16
|
||||
#elif (F_CPU>=16000000)
|
||||
#define RF69_SPI_CLOCK_DIV SPI_CLOCK_DIV8
|
||||
#elif (F_CPU>=8000000)
|
||||
#define RF69_SPI_CLOCK_DIV SPI_CLOCK_DIV4
|
||||
#else
|
||||
#define RF69_SPI_CLOCK_DIV SPI_CLOCK_DIV2
|
||||
#endif
|
||||
|
||||
|
||||
#define CSMA_LIMIT -90 // upper RX signal sensitivity threshold in dBm for carrier sense access
|
||||
#define RF69_MODE_SLEEP 0 // XTAL OFF
|
||||
@@ -148,7 +174,6 @@ public:
|
||||
uint8_t readReg(uint8_t addr); //!< readReg
|
||||
void writeReg(uint8_t addr, uint8_t val); //!< writeReg
|
||||
void readAllRegs(); //!< readAllRegs
|
||||
|
||||
protected:
|
||||
static void isr0(); //!< isr0
|
||||
void virtual interruptHandler(); //!< interruptHandler
|
||||
|
||||
Reference in New Issue
Block a user