Example host software for the Maxim Integrated MAX31723/MAX31722 Device Temperature Sensor. Hosted on the MAX32630FTHR. The MAX31723 may be used in thermostats, thermometers, and hardware temperature supervisors.

Dependencies:   MAX31723_Digital_Temperature_Sensor max32630fthr USBDevice

Revision:
8:5bbefd9bce9f
Parent:
7:bf8c91e28a3b
Child:
10:e315ecdb7bcd
--- a/main.cpp	Wed Jan 23 00:48:54 2019 +0000
+++ b/main.cpp	Sun Jan 27 00:22:32 2019 +0000
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (C) 2018-2019 Maxim Integrated Products, Inc., All Rights Reserved.
+ * Copyright (C) 2019 Maxim Integrated Products, Inc., All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -32,8 +32,7 @@
  */
 #include "mbed.h"
 #include "max32630fthr.h"
-#include "DS4424.h"
-
+#include "max31723.h"
 #include "USBSerial.h"
 
 MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
@@ -42,91 +41,56 @@
 DigitalOut gLED(LED2);
 DigitalOut bLED(LED3);
 
-I2C i2cBus(P3_4, P3_5);
+DigitalOut selectPin(P3_0);  /* Pin 3_0 is used to drive chip enable low */
+SPI spi(P5_1, P5_2, P5_0);  /* mosi, miso, sclk */
 
-DS4424 ds4424_dac(i2cBus, DS4424::DS4424_I2C_SLAVE_ADRS0, DS4424::DS4424_IC);
-    
+   
 /** main() runs in its own thread in the OS */
 /** (note the calls to Thread::wait below for delays) */
 /**
- * @brief Sample main program for Maxim Integrated DS4424, DS4422
- * @version 1.0000.301
+ * @brief Sample main program for Maxim Integrated MAX31723
+ * @version 1.0000.0000
  *
- * @details Sample main program for DS4424, DS4422
+ * @details Sample main program for MAX31723/MAX31722
  * The prints are sent to the terminal window (9600, 8n1).
- * The program sets the output DAC registers to various values.
- * These registers are then read back and printed out.
- * The program then blinks the blue-green LED.
+ * The program configures the SPI buss and then it performs
+ * 5 one shot readings.
+ * The program then blinks the green LED.
  * To run the program, drag and drop the .bin file into the 
  * DAPLINK folder. After it finishes flashing, cycle the power or 
  * reset the Pegasus (MAX32630FTHR) after flashing by pressing the button on
  * the Pegasus next to the battery connector or the button
  * on the MAXREFDES100HDK.
  */
+ 
+
 int main()
 {
-    int32_t in_pAmps[4] = {-193675000, -1525000, 6100000, -16012500};
-    uint8_t in_raw[4];
-    int32_t value[4] = {0, 0, 0, 0};
     int ret, i;
-    int32_t out_pAmps[4] = {0, 0, 0, 0};
-    uint32_t rfs_board[4] = {40000, 80000, 100000, 160000};
-    
+    float temperature;
     DigitalOut rLED(LED1, LED_OFF);
     DigitalOut gLED(LED2, LED_OFF);
     DigitalOut bLED(LED3, LED_OFF);
     
-    bLED = LED_ON;
     gLED = LED_ON;
 
-    i2cBus.frequency(400000);
-    printf("\r\n");
-    
-    /* write to each channel using picoAmps */
-    for (i = 0; i < 4; i++) {
-        ret = ds4424_dac.convert_picoAmps_to_hw_raw(&in_raw[i], in_pAmps[i], rfs_board[i]);
-        printf("Set picoAmps Out %d picoAmps, hw raw = %d, rfs = %d Ohms\r\n", in_pAmps[i], in_raw[i], rfs_board[i]);
-    }
-    printf("\r\n");
-    ret = ds4424_dac.write_hw_raw(in_raw[0], DS4424::REG_OUT0);
-    ret = ds4424_dac.write_hw_raw(in_raw[1], DS4424::REG_OUT1);
-    ret = ds4424_dac.write_hw_raw(in_raw[2], DS4424::REG_OUT2);
-    ret = ds4424_dac.write_hw_raw(in_raw[3], DS4424::REG_OUT3);
+    MAX31723 max31723_temp(spi, selectPin);
+    spi.format(8,3);  /* 8-bit, SPI mode 3 */
+    spi.frequency(5000000);  /* Use 5 MHz SPI bus */
+    /* Jumpers (JP1) on MAX31723PMB should be set to SPI mode configuration
+     * or SERMODE pin should be set to VDD for SPI mode
+     */
 
-    /* write to each channel using two's complement */
-    /*
-    ret = ds4424_dac.write_raw(-127, DS4424::REG_OUT0); 
-    ret = ds4424_dac.write_raw(-2, DS4424::REG_OUT1); 
-    ret = ds4424_dac.write_raw(10, DS4424::REG_OUT2); 
-    ret = ds4424_dac.write_raw(-42, DS4424::REG_OUT3);
-    */
-    ret = ds4424_dac.read_hw_raw(in_raw[0], DS4424::REG_OUT0); 
-    ret = ds4424_dac.read_hw_raw(in_raw[1], DS4424::REG_OUT1); 
-    ret = ds4424_dac.read_hw_raw(in_raw[2], DS4424::REG_OUT2); 
-    ret = ds4424_dac.read_hw_raw(in_raw[3], DS4424::REG_OUT3); 
-    for (i = 0; i < 4; i++) {
-        printf("Read hw raw Out %d = %d\r\n", i, in_raw[i]);
-    }
+    for (i = 0; i < 5; i++) {
+        ret = max31723_temp.perform_one_shot(MAX31723_CONV_TIME_MSEC_12BIT);
+        wait(MAX31723_CONV_TIME_MSEC_12BIT);
+        temperature = max31723_temp.read_temp();
+        printf("Temperature = %4.4f Celsius, %4.4f Fahrenheit\r\n", 
+            temperature, max31723_temp.celsius_to_fahrenheit(temperature));
+        wait(2);
+    } 
     printf("\r\n");
-
-    ret = ds4424_dac.read_raw(value[0], DS4424::REG_OUT0); 
-    ret = ds4424_dac.read_raw(value[1], DS4424::REG_OUT1); 
-    ret = ds4424_dac.read_raw(value[2], DS4424::REG_OUT2); 
-    ret = ds4424_dac.read_raw(value[3], DS4424::REG_OUT3); 
-    for (i = 0; i < 4; i++) {
-        printf("Read raw two's complement Out %d = %d\r\n", i, value[i]);
-    }
-    printf("\r\n");
-
-    /* Convert two's complement values to picoAmps */
-    for (i = 0; i < 4; i++) {
-        ret = ds4424_dac.convert_raw_to_picoAmps(&out_pAmps[i], value[i], rfs_board[i]); 
-        printf("Read Out %d = %d picoAmps, rfs = %d Ohms\r\n", i, out_pAmps[i], rfs_board[i]);
-    }
-    printf("\r\n");
-   
-    while (true) {  // Blink the blue-green LED 
-        bLED = !bLED;
+    while (true) {  // Blink the green LED 
         gLED = !gLED;
         wait(1.0);
     }