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
Diff: main.cpp
- 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); }