Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: max32625pico maxim-dev USBDevice
Revision 0:bc0f96339b73, committed 2017-11-01
- Comitter:
- MI
- Date:
- Wed Nov 01 01:47:38 2017 +0000
- Child:
- 1:f7e85b6d0117
- Commit message:
- Preliminary demo code for MAX31875.
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/USBDevice.lib Wed Nov 01 01:47:38 2017 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/MaximIntegrated/code/USBDevice/#8ca8b458434a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Wed Nov 01 01:47:38 2017 +0000
@@ -0,0 +1,105 @@
+#include "mbed.h"
+#include "USBSerial.h"
+#include "max32625pico.h"
+
+USBSerial pc;
+
+int readTemp(I2C &i2cbus);
+void configTemp(I2C &i2cbus);
+
+#define WRITE_ADDRESS 0x90
+#define READ_ADDRESS 0x91
+#define TEMP_REG 0x00
+#define CONFIG_REG 0x01
+
+int main()
+{
+ //initialize the MAX32625PICO board for +3.3V logic levels
+ MAX32625PICO pico(MAX32625PICO::IOH_3V3, MAX32625PICO::VIO_IOH, MAX32625PICO::VIO_IOH);
+
+ //initialize RGB LED channels and turn them off
+ DigitalOut rLED(LED1, LED_OFF);
+ DigitalOut gLED(LED2, LED_OFF);
+ DigitalOut bLED(LED3, LED_OFF);
+
+ //initialize the I2C master interface
+ I2C i2c(P1_6, P1_7); //SDA, SCL
+
+ //delcare variables to store the raw temperature readings and the converted Celsius temperature
+ int temperature_raw;
+ float temperature_C;
+
+ //write the configuration register
+ configTemp(i2c);
+
+ //the while loop will read the temperature reading, convert to Celsius, and then
+ //print the result to a serial terminal. It will then toggle each on-board LED
+ //for 11ms for a total of 33ms. A new temperature value is available every 12.5ms.
+ while (true) {
+ //the readTemp() function returns a raw 16-bit temperature reading
+ //if successful and a zero if unsuccessful
+ temperature_raw = readTemp(i2c);
+
+ //print temperature only if valid data is received. Readings of exactly 0.00 degrees
+ //will be thrown out but really what are the chances?
+ if(temperature_raw != 0)
+ {
+ temperature_C = temperature_raw/256.0;
+
+ //print a floating point value with 4 decimal places
+ pc.printf("\r\n%.4f C",temperature_C);
+ }
+ else {
+ pc.printf("\r\nTemp Read Error");
+ }
+
+ //toggle LEDs one at a time for a total of 33ms
+ bLED = LED_OFF;
+ rLED = LED_ON;
+ wait(0.11);
+ rLED = LED_OFF;
+ gLED = LED_ON;
+ wait(0.11);
+ gLED = LED_OFF;
+ bLED = LED_ON;
+ wait(0.11);
+ }
+}
+
+void configTemp(I2C &i2cbus)
+{
+ //creates an array to store the values to be written to the configuration register
+ //values chosen will program the MAX31875 for 8 conversions/second and 12-bit resolution
+ char data[3] = {CONFIG_REG, 0x00, 0x66};
+
+ //this built-in I2C write function from mbed sends the configuration data to the MAX31875
+ i2cbus.write(WRITE_ADDRESS, data, 3, false);
+}
+
+int readTemp(I2C &i2cbus)
+{
+ int temp_raw = 0;
+ char data[2] = {TEMP_REG, 0};
+
+ //the first I2C command sets the MAX31875 to point to the temperature register
+ //it returns a zero on success or non-zero if unsuccessful
+ int rtn_val = i2cbus.write(WRITE_ADDRESS, data, 1, true);
+
+ //proceeds to read temperature only if previous command was successful
+ if(rtn_val == 0)
+ {
+ //this I2C command reads the temperature and stores it in the 'data' array.
+ //it returns a zero on success or non-zero if unsuccessful
+ rtn_val = i2cbus.read(READ_ADDRESS, data, 2, false);
+
+ //proceeds to format raw temperature data only if previous command was successful
+ if(rtn_val == 0)
+ {
+ //combine both 8-bit register readings into one 16-bit variable
+ temp_raw = ((data[0] << 8) | data[1]);
+ }
+ }
+ //returns the 16-bit raw temperature reading
+ return temp_raw;
+}
+
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/max32625pico.lib Wed Nov 01 01:47:38 2017 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/users/switches/code/max32625pico/#65bda25808e4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/maxim-dev.lib Wed Nov 01 01:47:38 2017 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/users/switches/code/maxim-dev/#2e7515f8c45d