Library for the MAX11300
Diff: MAX113XX_Pixi.h
- Revision:
- 9:094df3de3616
- Parent:
- 8:4291f7e54863
- Child:
- 10:6efe114ef882
diff -r 4291f7e54863 -r 094df3de3616 MAX113XX_Pixi.h --- a/MAX113XX_Pixi.h Fri May 05 19:23:16 2017 +0000 +++ b/MAX113XX_Pixi.h Sat May 06 00:22:47 2017 +0000 @@ -34,8 +34,10 @@ #ifndef _MAX113XX_PIXI_H_ #define _MAX113XX_PIXI_H_ + #include "mbed.h" -#include "MAX113XX_Pixi_Config.h" +#include "MAX11311Hex.h" + /** @brief MAX113XX - PIXI, 20/12-Port Programmable Mixed-Signal I/O with @@ -54,14 +56,22 @@ Use configuration software found at https://www.maximintegrated.com/en/products/analog/data-converters/analog-to-digital-converters/MAX11300.html/tb_tab2 -to generate MAX113XX_Pixi_Config.h file +to generate MAX113XXHex.h file */ class MAX113XX_Pixi { public: - ///MAX11300 Ports - enum MAX113XX_Ports_e + enum Device_e + { + MAX11300 = 0, + MAX11301, + MAX11311, + MAX11312 + }; + + ///MAX113XX Ports + enum Ports_e { PORT0, PORT1, @@ -85,8 +95,8 @@ PORT19 }; - ///MAX11300 Port Modes - enum MAX113XX_PortModes_e + ///MAX113XX Port Modes + enum PortModes_e { ///HIGH_Z MODE_0, @@ -124,66 +134,65 @@ Success }; - MAX113XX_Pixi(PinName cnvt); + MAX113XX_Pixi(Device_e device, PinName cnvt); ///@brief Writes gpo configured port with lsb of state ///@param[in] port - gpo congigured port to be written ///@param[in] state - lsb of state is written to port ///@return Result of operation - CmdResult_e gpioWrite(MAX113XX_Ports_e port, const uint8_t state); + CmdResult_e gpioWrite(Ports_e port, const uint8_t state); ///@brief Reads gpi configured port ///@param[in] port - gpi congigured port to be read ///@param[out] state - lsb of state matches port state ///@return Result of operation - CmdResult_e gpioRead(MAX113XX_Ports_e port, uint8_t &state); + CmdResult_e gpioRead(Ports_e port, uint8_t &state); ///@brief Read single ended ADC configured port ///@param[in] port - single ended ADC configured port ///@param[out] data - contents of ADC data register ///@return Result of operation - CmdResult_e singleEndedADCRead(MAX113XX_Ports_e port, uint16_t &data); + CmdResult_e singleEndedADCRead(Ports_e port, uint16_t &data); ///@brief Write single ended DAC configured port ///@param[in] port - single ended DAC configured port ///@param[in] data - value to be written to DAC data register ///@return Result of operation - CmdResult_e singleEndedDACWrite(MAX113XX_Ports_e port, - const uint16_t data); + CmdResult_e singleEndedDACWrite(Ports_e port, const uint16_t data); void dumpPixiMemory(Serial &ser, MAX113XX_Pixi &pixi); protected: + Device_e m_device; DigitalOut m_cnvt; ///@brief Writes given register with data ///@param[in] reg - register to be written ///@param[in] data - data to write ///@return none - virtual void writeRegister(MAX11300RegAddress_t reg, - const uint16_t data) = 0; + virtual void writeRegister(uint8_t reg, const uint16_t data) = 0; ///@brief Reads given register ///@param[in] reg - register to read ///@return contents of register - virtual uint16_t readRegister(MAX11300RegAddress_t reg) = 0; + virtual uint16_t readRegister(uint8_t reg) = 0; ///@brief Writes a block of data starting at given register ///@param[in] reg - register to start writing at ///@param[in] data - pointer to data buffer ///@param[in] num_reg - number of registers to be written ///@return none - virtual void blockWrite(MAX11300RegAddress_t reg, const uint16_t *data, - const uint8_t num_reg) = 0; + virtual void blockWrite(uint8_t reg, const uint16_t *data, + const uint8_t num_reg) = 0; ///@brief Reads a block of data starting at given register ///@param[in] reg - register to start reading at ///@param[in] data - pointer to data buffer ///@param[in] num_reg - number of registers to be read ///@return none - virtual void blockRead(MAX11300RegAddress_t reg, uint16_t *data, - const uint8_t num_reg) = 0; + virtual void blockRead(uint8_t reg, uint16_t *data, + const uint8_t num_reg) = 0; }; @@ -199,7 +208,8 @@ ///@param[in] spiBus - reference to SPI bus for this device ///@param[in] cs - pin to be used for chip select ///@param[in] cnvrt - pin to be used for convert - MAX113XX_SPI(SPI & spiBus, PinName cs, PinName cnvt); + MAX113XX_SPI(SPI & spiBus, PinName cs, MAX113XX_Pixi::Device_e device, + PinName cnvt); ///@brief MAX113XX_SPI Destructor ~MAX113XX_SPI(); @@ -209,16 +219,14 @@ SPI & m_spiBus; DigitalOut m_cs; - virtual void writeRegister(MAX11300RegAddress_t reg, - const uint16_t data); + virtual void writeRegister(uint8_t reg, const uint16_t data); - virtual uint16_t readRegister(MAX11300RegAddress_t reg); + virtual uint16_t readRegister(uint8_t reg); - virtual void blockWrite(MAX11300RegAddress_t reg, const uint16_t *data, + virtual void blockWrite(uint8_t reg, const uint16_t *data, const uint8_t num_reg); - virtual void blockRead(MAX11300RegAddress_t reg, uint16_t *data, - const uint8_t num_reg); + virtual void blockRead(uint8_t reg, uint16_t *data, const uint8_t num_reg); }; @@ -233,7 +241,7 @@ ///@brief MAX113XX_I2C Constructor ///@param[in] i2cBus - reference to I2C bus for this device ///@param[in] cnvrt - pin to be used for convert - MAX113XX_I2C(I2C &i2cBus, PinName cnvt); + MAX113XX_I2C(I2C &i2cBus, MAX113XX_Pixi::Device_e device, PinName cnvt); ///@brief MAX113XX_I2C Destructor ~MAX113XX_I2C(); @@ -242,16 +250,14 @@ I2C &m_i2cBus; - virtual void writeRegister(MAX11300RegAddress_t reg, - const uint16_t data); + virtual void writeRegister(uint8_t reg, const uint16_t data); - virtual uint16_t readRegister(MAX11300RegAddress_t reg); + virtual uint16_t readRegister(uint8_t reg); - virtual void blockWrite(MAX11300RegAddress_t reg, const uint16_t *data, + virtual void blockWrite(uint8_t reg, const uint16_t *data, const uint8_t num_reg); - virtual void blockRead(MAX11300RegAddress_t reg, uint16_t *data, - const uint8_t num_reg); + virtual void blockRead(uint8_t reg, uint16_t *data, const uint8_t num_reg); };