You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CCS-COMM_BOARD/DSP28335/SPIA.h

102 lines
2.2 KiB
C

/*
* 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_ */