SPI-Brigde (capseld), for polling interrupt, it is neccessary to adapt the constructor and the function getInt()
SC18IS602.h
- Committer:
- x1dmoesc
- Date:
- 2020-04-23
- Revision:
- 3:9cf83f16c17d
- Parent:
- 2:cb90c271c412
File content as of revision 3:9cf83f16c17d:
#ifndef H_SC18IS602 #define H_SC18IS602 #include "mbed.h" #include <string> #include "PCA9555.h" class SC18IS602 { public: static const int BUFFER_SIZE = 200;// Byte static const bool ACK = true; static const bool NACK = false; static const bool INTERRUPT = false; static const bool WAIT_SEC = 10e-6; // Register Adress static const int HARD_ADR = 0x50; static const int USER_ADR_MASK = 0x07; struct{ static const uint8_t CS0 = 0x01; static const uint8_t CS1 = 0x02; static const uint8_t CS2 = 0x04; static const uint8_t CS3 = 0x08; }CMD_RW; static const int ADR_SPI_CONF = 0xF0; struct{ static const int WRITE = 0xF4; static const int READ = 0xF5; static const int EN = 0xF6; static const int CONF = 0xF7; }ADR_GPIO; //Bit position of register Configure SPI Interface static const int SPI_BIT_ORDER = 5; static const int SPI_MODE = 2; static const int SPI_CLK_RATE = 0; // Register Value SPI bit order struct{ static const int MSB = 0; // MSB of the data word is transmitted first static const int LSB = 1; // LSB of the data word is transmitted first }SPI_BITORDER; // Register Value SPI Mode (CPOL, CPHA) static const int SPI_MODE_00 = 0; static const int SPI_MODE_01 = 1; static const int SPI_MODE_10 = 2; static const int SPI_MODE_11 = 3; //Register Value - Clock Rate static const int SPI_RATE_58K = 0; static const int SPI_RATE_115K = 1; static const int SPI_RATE_461K = 2; static const int SPI_RATE_1M8 = 3; // Bit position of Register GPIO Enable struct{ static const int CS0 = 0; static const int CS1 = 1; static const int CS2 = 2; static const int CS3 = 3; }GPIO; // Bit position of Register GPIO config static const int GPIO_CONF_CS0 = 0; static const int GPIO_CONF_CS1 = 2; static const int GPIO_CONF_CS2 = 4; static const int GPIO_CONF_CS3 = 6; // Register Value of GPIO config static const int BIDIRECTIONAL = 0; // quasi bidirecitonal static const int PUSH_PULL = 1; // static const int INPUT_ONLY = 2; // high impedance static const int OPEN_DRAIN = 3; // needs an external pullup const int iINT; // public SC18IS602(I2C *_i2c, uint8_t uiAdr); SC18IS602(I2C *_i2c, PCA9555 *_pca , uint8_t uiAdr); // SC18IS602(I2C *_i2c, DigitalIn *_IntPin, uint8_t uiAdr); // bool configSPI(uint8_t uiConf); bool enableGPIO(uint8_t uiConf); bool configGPIO(uint8_t uiConf); bool gpio_pin3_on(); bool gpio_pin3_off(); bool gpio_toggle(uint8_t uiPort); bool sendViaSPI(uint8_t uiCS, char cAdrByte, char *cDataBytes, uint8_t uiNum); bool readViaSPI(uint8_t uiCS, char cAdrByte, char *cDataBytes, uint8_t uiNum); //void setIntFuncPtr( bool (*Int_ptr)(void)); protected: // private I2C *i2c; // Serial Data & Clock PCA9555 *pca; DigitalIn *IntPin; // Interrupt pin bool sendViaI2C(const char *cData, int iLength, string sDebug = ""); bool readViaI2C(char *cData, int iLength, string sDebug = ""); void waitFor(bool bInt); bool getInt(); bool clearInt(); //bool (*getInt_ptr)(void); // variable bool bAck; unsigned int uiNumByte; char cCmd[BUFFER_SIZE]; const uint8_t SC18IS602_W; // const write-address const uint8_t SC18IS602_R; // const read-address char cDebug[100]; int iTimeOut; }; #endif