/* * SPIA.h * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #include "DSP28335/SPIBase.h" #ifndef DSP28335_SPIA_H_ #define DSP28335_SPIA_H_ #ifndef SPIA_GPIO_SETUP_DEFAULT_DEFINES #define SPIA_GPIO_SETUP_DEFAULT (&DSP28335::GPIO::gpio_spia_setup) #define SPIA_GPIO_SETUP_DEFAULT_DEFINES #endif #ifndef FRAM_OPCODE_WREN_DEFINES #define FRAM_OPCODE_WREN (uint16_t)0x0600 #define FRAM_OPCODE_WREN_DEFINES #endif // #ifndef FRAM_OPCODE_WRDI_DEFINES #define FRAM_OPCODE_WRDI (uint16_t)0x0400 #define FRAM_OPCODE_WRDI_DEFINES #endif // #ifndef FRAM_OPCODE_RDSR_DEFINES #define FRAM_OPCODE_RDSR (uint16_t)0x0500 #define FRAM_OPCODE_RDSR_DEFINES #endif // #ifndef FRAM_OPCODE_WRSR_DEFINES #define FRAM_OPCODE_WRSR (uint16_t)0x0100 #define FRAM_OPCODE_WRSR_DEFINES #endif // #ifndef FRAM_OPCODE_READ_DEFINES #define FRAM_OPCODE_READ (uint16_t)0x0300 #define FRAM_OPCODE_READ_DEFINES #endif // #ifndef FRAM_OPCODE_WRITE_DEFINES #define FRAM_OPCODE_WRITE (uint16_t)0x0200 #define FRAM_OPCODE_WRITE_DEFINES #endif // #ifndef FRAM_OPCODE_DUMMY_DEFINES #define FRAM_OPCODE_DUMMY (uint16_t)0x5500 #define FRAM_OPCODE_DUMMY_DEFINES #endif // #ifndef FRAM_OPCODE_ERASE_DEFINES #define FRAM_OPCODE_ERASE (uint16_t)0xFF00 #define FRAM_OPCODE_ERASE_DEFINES #endif // namespace DSP28335 { class SPIA: public SPIBase { public: enum mode_t {UNDEFINED=0, CONFIGURATE=1, OPERATIONAL=2}; private: Uint16 m_fifo_tx_status; Uint16 m_data_tx_len; Uint16 m_data_tx_counter; private: Uint16 m_fifo_tx[16]; Uint16 m_fifo_rx[16]; public: SPIA(); public: void clear_tx_interrupt(); public: void setup(); void setup(DSP28335::SPISetup& setup); void get_default_configuration(DSP28335::SPIConfiguration& config); void get_configuration(DSP28335::SPIConfiguration& config); void set_configuration(DSP28335::SPIConfiguration& config); public: void write(Uint16 data, Uint16 addr); void erase(Uint16 addr); void read(Uint16 addr); Uint16 get_read_data(); Uint16 get_fifo_tx_status(); private: void _configure(DSP28335::SPIConfiguration& config); void (*_gpio_setup)(); }; } /* namespace DSP28335 */ #endif /* DSP28335_SPIA_H_ */