Driver, C++ code, and library for the MAX5487, MAX5488, MAX5489. dual channel, SPI bus, 256-tap digital potentiometer. Non-volatile memory (EEPROM) is available for returning the wipers to their previously stored positions upon power-up.

Dependents:   MAX5487_Digital_Potentiometer_Resistor_MAX32630FTHR_Host

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