Driver C++ source code for MAX5216/MAX5214 16-bit/14-bit DAC SPI (50MHz) bus ICs. Low power Digital-to_Analog Converter chips which accept supply voltages of 2.7V to 5.5V. Features Rail-to-Rail Buffered Output Operation and Safe Power-On Reset (POR) to Zero DAC Output.
Dependents: MAX5216_16_Bit_DAC_Hello_Code
Fork of MAX5487_Digital_Pot_Potentiometer_Rheostat_Resistor_Wiper by
Diff: MAX5487.h
- Revision:
- 1:bc368afe2ec8
- Parent:
- 0:3d525ab09933
- Child:
- 2:80e026469122
--- a/MAX5487.h Tue Jul 10 05:28:12 2018 +0000 +++ b/MAX5487.h Sat Jul 14 04:25:25 2018 +0000 @@ -1,3 +1,42 @@ +/******************************************************************************* +* @file MAX5487.h + +******************************************************************************* +*/ + + + +/** +* @brief Dual Channel SPI Digital Potentiometers with Non Volatile Memory +* +* @details The MAX5487 contains two SPI porgrammable potentiometers. +* This driver enables setting the potentiometer wiper values as well +* as the nonvolatile memory. +* +* @code +* #include "mbed.h" +* #include "max32630fthr.h" +* #include "USBSerial.h" +* #include "MAX5487.h" +* MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3); +* Serial daplink(P2_1, P2_0); +* USBSerial microUSB; +* DigitalOut led1(LED1); // led to blink +* DigitalOut selectPin(P3_0); // Pin 6_0 is used to drive chip enable low +* SPI spi(P5_1, P5_2, P5_0); // mosi, miso, sclk + +* int main() +* { +* MAX5487 test(spi, selectPin); +* spi.format(8,0); +* spi.frequency(1000000); +* test.writeCommand(MAX5487::Wiper_RegA, 0x55); +* +* //... rest of application +* } +* @endcode +*/ + #ifndef MAX5487_H #define MAX5487_H @@ -5,23 +44,74 @@ class MAX5487{ - + public: + /** + * @brief Commands supported by the potentiometer + * @details write commands that don't involve copying + * require a 8 bit value specified. Copy commands don't + */ typedef enum { - Wiper_RegA = 0x01; //Position of Wiper A - Wiper_RegB = 0x02; //Position of Wiper B - NV_RegA = 0x11; //Non Volatile Register A - NV_RegB = 0x12; //Non Volatile Register B - Copy_Wiper_RegA_to_NV_RegA = 0x21; //Copy Wiper A position to Non Volatile Register A - Copy_Wiper_RegB_to_NV_RegB = 0x22; //Copy Wiper B position to Non Volatile Register B - Copy_Wiper_RegAB_to_NV_RegAB = 0x23; //Copy both Wiper A & B positions to respective Non Volatile Registers - Copy_NV_RegA_to_Wiper_RegA = 0x31; //Copy Non Volatile Register A to Wiper Register A - Copy_NV_RegB_to_Wiper_RegB = 0x32; //Copy Non Volatile Register B to Wiper Register B - Copy_NV_RegAB_to_Wiper_RegAB = 0x33; //Copy Non Volatile Register A & B to Wiper Register A & B + Wiper_RegA = 0x01, //Position of Wiper A + Wiper_RegB = 0x02, //Position of Wiper B + NV_RegA = 0x11, //Non Volatile Register A + NV_RegB = 0x12, //Non Volatile Register B + Copy_Wiper_RegA_to_NV_RegA = 0x21, //Copy Wiper A position to Non Volatile Register A + Copy_Wiper_RegB_to_NV_RegB = 0x22, //Copy Wiper B position to Non Volatile Register B + Copy_Wiper_RegAB_to_NV_RegAB = 0x23, //Copy both Wiper A & B positions to respective Non Volatile Registers + Copy_NV_RegA_to_Wiper_RegA = 0x31, //Copy Non Volatile Register A to Wiper Register A + Copy_NV_RegB_to_Wiper_RegB = 0x32, //Copy Non Volatile Register B to Wiper Register B + Copy_NV_RegAB_to_Wiper_RegAB = 0x33 //Copy Non Volatile Register A & B to Wiper Register A & B } setting_t; - public: - MAX5487(SPI spi); + + /**********************************************************//** + * @brief Constructor for MAX5487 Class. + * + * @details Requires an existing SPI object as well as a DigitalOut object. + * The DigitalOut object is used for a chip enable signal + * + * On Entry: + * @param[in] spi - pointer to existing SPI object + * @param[in] pin - pointer to a DigitalOut pin object + * + * On Exit: + * + * @return None + **************************************************************/ + MAX5487(SPI &spi, DigitalOut &pin); + + /** + * @brief Send write command + * @param setting - Command sent to MAX5487 register + * @param value - 8 bit Value to write + * @return void, output is sent through serial port + */ + void writeCommand(MAX5487::setting_t setting, int value); + + /** + * @brief Send copy command + * @param setting - Command sent to MAX5487 register + * @return void + */ + void writeCommand(MAX5487::setting_t setting); - writeCommand(setting_t test, int value); + /**********************************************************//** + * @brief Default destructor for MAX5487 Class. + * + * @details Destroys SPI object if owner + * + * On Entry: + * + * On Exit: + * + * @return None + **************************************************************/ ~MAX5487(); -} \ No newline at end of file + private: + // SPI object + SPI &m_spi; + // Selector pin object + DigitalOut &m_pin; +}; + +#endif \ No newline at end of file