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
diff -r 3d525ab09933 -r bc368afe2ec8 MAX5487.h
--- 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
