Maxim Integrated MAX5171 14-bit Force/Sense DAC

Dependents:   MAX5171BOB_Tester MAX5171BOB_14bit_Remote_Sense_SPI_DAC MAX5171BOB_Serial_Tester

Revision:
4:1984eef51fe3
Parent:
3:79839617d532
Child:
5:e8c0dfaeb53b
--- a/MAX5171.cpp	Fri Jun 21 08:17:41 2019 +0000
+++ b/MAX5171.cpp	Wed Oct 30 15:43:40 2019 -0700
@@ -43,6 +43,7 @@
 
 // Device Name = MAX5171
 // Device Description = Low-Power, Serial, 14-Bit, 1-Channel DACs with Force/Sense Voltage Output and SPI Interface
+// Device DeviceBriefDescription = 14-bit Force/Sense DAC
 // Device Manufacturer = Maxim Integrated
 // Device PartNumber = MAX5171AEEE+
 // Device RegValue_Width = DataWidth16bit_HL
@@ -114,35 +115,25 @@
 // SupplyPin Function = Analog
 //
 
-// CODE GENERATOR: class constructor definition
 MAX5171::MAX5171(SPI &spi, DigitalOut &cs_pin, // SPI interface
-                 // CODE GENERATOR: class constructor definition gpio InputPin pins
                  // AnalogOut &FB_pin, // Analog Input to MAX5171 device
                  DigitalOut &RS_pin, // Digital Configuration Input to MAX5171 device
                  DigitalOut &PDLb_pin, // Digital Configuration Input to MAX5171 device
                  DigitalOut &CLRb_pin, // Digital Configuration Input to MAX5171 device
                  DigitalOut &SHDN_pin, // Digital Configuration Input to MAX5171 device
-                 // CODE GENERATOR: class constructor definition gpio OutputPin pins
                  // AnalogIn &OUT_pin, // Analog Output from MAX5171 device
                  DigitalIn &UPO_pin, // Digital General-Purpose Output from MAX5171 device
-                 // CODE GENERATOR: class constructor definition ic_variant
                  MAX5171_ic_t ic_variant)
-    // CODE GENERATOR: class constructor initializer list
     : m_spi(spi), m_cs_pin(cs_pin), // SPI interface
-    // CODE GENERATOR: class constructor initializer list gpio InputPin pins
     // m_FB_pin(FB_pin), // Analog Input to MAX5171 device
     m_RS_pin(RS_pin), // Digital Configuration Input to MAX5171 device
     m_PDLb_pin(PDLb_pin), // Digital Configuration Input to MAX5171 device
     m_CLRb_pin(CLRb_pin), // Digital Configuration Input to MAX5171 device
     m_SHDN_pin(SHDN_pin), // Digital Configuration Input to MAX5171 device
-    // CODE GENERATOR: class constructor initializer list gpio OutputPin pins
     // m_OUT_pin(OUT_pin), // Analog Output from MAX5171 device
     m_UPO_pin(UPO_pin), // Digital General-Purpose Output from MAX5171 device
-    // CODE GENERATOR: class constructor initializer list ic_variant
     m_ic_variant(ic_variant)
 {
-    // CODE GENERATOR: class constructor definition SPI interface initialization
-    //
     // SPI CS = ActiveLow
     // SPI FrameStart = CS
     m_SPI_cs_state = 1;
@@ -152,7 +143,7 @@
     // SPI CPHA = 0
     // SPI MOSI and MISO Data are both stable on Rising edge of SCLK
     // SPI SCLK Idle Low
-    m_SPI_dataMode = 0; //SPI_MODE0 // CPOL=0,CPHA=0: Rising Edge stable; SCLK idle Low
+    m_SPI_dataMode = 0; //SPI_MODE0; // CPOL=0,CPHA=0: Rising Edge stable; SCLK idle Low
     m_spi.format(8,m_SPI_dataMode);         // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0
 
     // SPI SCLKMaxMHz = 10
@@ -160,56 +151,59 @@
     //#define SPI_SCLK_Hz 48000000 // 48MHz
     //#define SPI_SCLK_Hz 24000000 // 24MHz
     //#define SPI_SCLK_Hz 12000000 // 12MHz
+    //#define SPI_SCLK_Hz 6000000 // 6MHz
     //#define SPI_SCLK_Hz 4000000 // 4MHz
     //#define SPI_SCLK_Hz 2000000 // 2MHz
     //#define SPI_SCLK_Hz 1000000 // 1MHz
     m_SPI_SCLK_Hz = 10000000; // 10MHz; MAX5171 limit is 10MHz
     m_spi.frequency(m_SPI_SCLK_Hz);
 
-    // TODO1: CODE GENERATOR: class constructor definition gpio InputPin (Input to device) initialization
     //
+    // FB Analog Input to MAX5171 device
+    //
+    // RS Configuration Input to MAX5171 device
     m_RS_pin = 1; // output logic high -- initial value in constructor
+    //
+    // PDLb Configuration Input to MAX5171 device
     m_PDLb_pin = 1; // output logic high -- initial value in constructor
+    //
+    // CLRb Configuration Input to MAX5171 device
     m_CLRb_pin = 1; // output logic high -- initial value in constructor
+    //
+    // SHDN Configuration Input to MAX5171 device
     m_SHDN_pin = 1; // output logic high -- initial value in constructor
+    //
+    // OUT Analog Output from device
+    //
+    // UPO General-Purpose Output from device
 }
 
-// CODE GENERATOR: class destructor definition
 MAX5171::~MAX5171()
 {
     // do nothing
 }
 
-// CODE GENERATOR: spi_frequency setter definition
-// set SPI SCLK frequency
+/// set SPI SCLK frequency
 void MAX5171::spi_frequency(int spi_sclk_Hz)
 {
     m_SPI_SCLK_Hz = spi_sclk_Hz;
     m_spi.frequency(m_SPI_SCLK_Hz);
 }
 
-// CODE GENERATOR: omit global g_MAX5171_device
-// CODE GENERATOR: extern function declarations
-// CODE GENERATOR: extern function requirement MAX5171::SPIoutputCS
 // Assert SPI Chip Select
 // SPI chip-select for MAX5171
 //
 void MAX5171::SPIoutputCS(int isLogicHigh)
 {
-    // CODE GENERATOR: extern function definition for function SPIoutputCS
-    // CODE GENERATOR: extern function definition for standard SPI interface function SPIoutputCS(int isLogicHigh)
     m_SPI_cs_state = isLogicHigh;
     m_cs_pin = m_SPI_cs_state;
 }
 
-// CODE GENERATOR: extern function requirement MAX5171::SPIwrite16bits
 // SPI write 16 bits
 // SPI interface to MAX5171 shift 16 bits mosiData into MAX5171 DIN
 //
 void MAX5171::SPIwrite16bits(int16_t mosiData16)
 {
-    // CODE GENERATOR: extern function definition for function SPIwrite16bits
-    // TODO1: CODE GENERATOR: extern function definition for standard SPI interface function SPIwrite16bits(int16_t mosiData16)
     size_t byteCount = 2;
     static char mosiData[2];
     static char misoData[2];
@@ -230,6 +224,11 @@
     //
     // Arduino: begin critical section: noInterrupts() masks all interrupt sources; end critical section with interrupts()
     //~ interrupts();
+    // Optional Diagnostic function to print SPI transactions
+    if (onSPIprint)
+    {
+        onSPIprint(byteCount, (uint8_t*)mosiData, (uint8_t*)misoData);
+    }
     //
     // VERIFY: SPIwrite24bits print diagnostic information
     //cmdLine.serial().printf(" MOSI->"));
@@ -284,8 +283,8 @@
     // return misoData16;
 }
 
-// CODE GENERATOR: class member function definitions
 //----------------------------------------
+// Menu item '!'
 // Initialize device
 // @return 1 on success; 0 on failure
 uint8_t MAX5171::Init(void)
@@ -526,7 +525,7 @@
 //----------------------------------------
 // CMD_1111_0xxx_xxxx_xxxx_MODE1_DOUT_SCLK_RISING_EDGE
 //
-// Mode 1, DOUT clocked out on SCLK’s rising edge.
+// Mode 1, DOUT clocked out on SCLK's rising edge.
 // @return 1 on success; 0 on failure
 uint8_t MAX5171::MODE1_DOUT_SCLK_RISING_EDGE(void)
 {
@@ -549,7 +548,7 @@
 //----------------------------------------
 // CMD_1111_1xxx_xxxx_xxxx_MODE0_DOUT_SCLK_FALLING_EDGE
 //
-// Mode 0, DOUT clocked out on SCLK’s falling edge (default).
+// Mode 0, DOUT clocked out on SCLK's falling edge (default).
 // @return 1 on success; 0 on failure
 uint8_t MAX5171::MODE0_DOUT_SCLK_FALLING_EDGE(void)
 {