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.
102 lines
2.2 KiB
C
102 lines
2.2 KiB
C
4 weeks ago
|
/*
|
||
|
* 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_ */
|