Maxim Integrated MAX5171 14-bit Force/Sense DAC
Dependents: MAX5171BOB_Tester MAX5171BOB_14bit_Remote_Sense_SPI_DAC MAX5171BOB_Serial_Tester
Diff: MAX5171.cpp
- 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) {