|
- // RHHardwareSPI.h
- // Author: Mike McCauley (mikem@airspayce.com)
- // Copyright (C) 2011 Mike McCauley
- // Contributed by Joanna Rutkowska
- // $Id: RHHardwareSPI.h,v 1.9 2014/08/12 00:54:52 mikem Exp $
-
- #ifndef RHHardwareSPI1_h
- #define RHHardwareSPI1_h
- #if defined(__arm__) && defined(TEENSYDUINO) && (defined(KINETISL) || defined(__MK64FX512__) || defined(__MK66FX1M0__) || defined(__IMXRT1052__)|| defined(__IMXRT1062__))
-
- #include <RHGenericSPI.h>
-
- /////////////////////////////////////////////////////////////////////
- /// \class RHHardwareSPI RHHardwareSPI.h <RHHardwareSPI.h>
- /// \brief Encapsulate a hardware SPI bus interface
- ///
- /// This concrete subclass of GenericSPIClass encapsulates the standard Arduino hardware and other
- /// hardware SPI interfaces.
- class RHHardwareSPI1 : public RHGenericSPI
- {
- #ifdef RH_HAVE_HARDWARE_SPI
- public:
- /// Constructor
- /// Creates an instance of a hardware SPI interface, using whatever SPI hardware is available on
- /// your processor platform. On Arduino and Uno32, uses SPI. On Maple, uses HardwareSPI.
- /// \param[in] frequency One of RHGenericSPI::Frequency to select the SPI bus frequency. The frequency
- /// is mapped to the closest available bus frequency on the platform.
- /// \param[in] bitOrder Select the SPI bus bit order, one of RHGenericSPI::BitOrderMSBFirst or
- /// RHGenericSPI::BitOrderLSBFirst.
- /// \param[in] dataMode Selects the SPI bus data mode. One of RHGenericSPI::DataMode
- RHHardwareSPI1(Frequency frequency = Frequency1MHz, BitOrder bitOrder = BitOrderMSBFirst, DataMode dataMode = DataMode0);
-
- /// Transfer a single octet to and from the SPI interface
- /// \param[in] data The octet to send
- /// \return The octet read from SPI while the data octet was sent
- uint8_t transfer(uint8_t data);
-
- // SPI Configuration methods
- /// Enable SPI interrupts
- /// This can be used in an SPI slave to indicate when an SPI message has been received
- /// It will cause the SPI_STC_vect interrupt vectr to be executed
- void attachInterrupt();
-
- /// Disable SPI interrupts
- /// This can be used to diable the SPI interrupt in slaves where that is supported.
- void detachInterrupt();
-
- /// Initialise the SPI library
- /// Call this after configuring the SPI interface and before using it to transfer data.
- /// Initializes the SPI bus by setting SCK, MOSI, and SS to outputs, pulling SCK and MOSI low, and SS high.
- void begin();
-
- /// Disables the SPI bus (leaving pin modes unchanged).
- /// Call this after you have finished using the SPI interface.
- void end();
- #if (RH_PLATFORM == RH_PLATFORM_ARDUINO) && defined(SPI_HAS_TRANSACTION)
- public:
- void beginTransaction();
- void endTransaction();
- SPISettings _settings;
- #endif
- #else
- // not supported on ATTiny etc
- uint8_t transfer(uint8_t data) {return 0;}
- void begin(){}
- void end(){}
-
- #endif
- };
-
- // Built in default instance
- extern RHHardwareSPI1 hardware_spi1;
- #else
- #error ("RadioHead SPI1 only supported on Teensy 3.5, 3.6, 4 and LC")
- #endif
- #endif
|