Host software for the MAXREFDES220 Heart Rate Monitor Smart Sensor. Hosted on the MAX32630FTHR.

Dependencies:   max32630fthr USBDevice

Fork of MAXREFDES220_HEART_RATE_MONITOR by Maxim Integrated

Finger Heart Rate Monitor and SpO2 Monitor

The MAXREFDES220 Smart Sensor FeatherWing board is a integrated solution for providing finger-based heart rate measurements and SpO2 (blood oxygen saturation). This evaluation board interfaces to the host computer using the I2C interface. Heart rate outpu is available in beats per minute (BPM) and SpO2 is reported in percentages.; the PPG (photoplethysmography) raw data is also available. The board has an MAX30101 chip which is a low power heart rate monitor with adjustable sample rates and adjustable LED currents. The low cost MAX32664 microcontroller is pre-flashed with C code for finger-based pulse rate and SpO2 monitoring. Bootloader software is included to allow for future algorithms or updates to the algorithm from Maxim Integrated.

Ordering information will be available soon.

Note: SpO2 values are not calibrated. Calibration should be performed using the final end product.

Warning

The MAXREFDES220 source code listed is dated and only compatible with the 1.2.8a.msbl. The latest sample host source code is available on the MAX32664 website.

MAXREFDES220 FeatherWing Pinout Connections

/media/uploads/phonemacro/maxrefdes220_pinouts_heart_rate_monitor.jpg

Files at this revision

API Documentation at this revision

Comitter:
phonemacro
Date:
Fri Feb 05 01:59:25 2021 +0000
Parent:
13:1e68e2d46dd7
Commit message:
Remove code for EventStats irq_evt - it no longer compiles on mBed

Changed in this revision

Interfaces/SmartSensor/SSInterface.cpp Show annotated file Show diff for this revision Revisions of this file
Interfaces/SmartSensor/SSInterface.h Show annotated file Show diff for this revision Revisions of this file
--- a/Interfaces/SmartSensor/SSInterface.cpp	Mon Aug 20 19:48:27 2018 -0700
+++ b/Interfaces/SmartSensor/SSInterface.cpp	Fri Feb 05 01:59:25 2021 +0000
@@ -39,8 +39,8 @@
 
 SSInterface::SSInterface(I2C &i2cBus, PinName ss_mfio, PinName ss_reset)
 	:m_i2cBus(&i2cBus), m_spiBus(NULL),
-	mfio_pin(ss_mfio), reset_pin(ss_reset), irq_pin(ss_mfio),
-	irq_evt(1000000, "irq")
+	mfio_pin(ss_mfio), reset_pin(ss_reset), irq_pin(ss_mfio)/*,
+	irq_evt(1000000, "irq")*/
 {
 	reset_pin.input();
 	irq_pin.fall(callback(this, &SSInterface::irq_handler));
@@ -51,8 +51,8 @@
 
 SSInterface::SSInterface(SPI &spiBus, PinName ss_mfio, PinName ss_reset)
 	:m_i2cBus(NULL), m_spiBus(&spiBus),
-	mfio_pin(ss_mfio), reset_pin(ss_reset), irq_pin(ss_mfio),
-	irq_evt(1000000, "irq")
+	mfio_pin(ss_mfio), reset_pin(ss_reset), irq_pin(ss_mfio)/*,
+	irq_evt(1000000, "irq")*/
 {
 	reset_pin.input();
 	irq_pin.fall(callback(this, &SSInterface::irq_handler));
@@ -790,7 +790,7 @@
 	uint8_t cmd_bytes[] = { SS_FAM_R_STATUS, SS_CMDIDX_STATUS };
 	uint8_t rxbuf[2] = {0};
 
-	irq_evt.start();
+//	irq_evt.start();
 
 	irq_pin.disable_irq();
 
@@ -801,7 +801,7 @@
 	if (status != SS_SUCCESS) {
 		pr_err("Couldn't read status byte of SmartSensor!");
 		irq_pin.enable_irq();
-		irq_evt.stop();
+//		irq_evt.stop();
 		return;
 	}
 
@@ -822,7 +822,7 @@
 		{
 			pr_err("Couldn't read number of available samples in SmartSensor Output FIFO");
 			irq_pin.enable_irq();
-			irq_evt.stop();
+//			irq_evt.stop();
 			return;
 		}
 
@@ -841,7 +841,7 @@
 		{
 			pr_err("Couldn't read from SmartSensor Output FIFO");
 			irq_pin.enable_irq();
-			irq_evt.stop();
+//			irq_evt.stop();
 			return;
 		}
 
@@ -881,7 +881,7 @@
 		}
 	}
 	irq_pin.enable_irq();
-	irq_evt.stop();
+//	irq_evt.stop();
 }
 
 void SSInterface::ss_clear_interrupt_flag(){
--- a/Interfaces/SmartSensor/SSInterface.h	Mon Aug 20 19:48:27 2018 -0700
+++ b/Interfaces/SmartSensor/SSInterface.h	Fri Feb 05 01:59:25 2021 +0000
@@ -579,7 +579,7 @@
 	SS_STATUS num_avail_samples(int* num_samples);
 	void fifo_sample_size(int data_type, int* sample_size);
 
-	EventStats irq_evt;
+/*	EventStats irq_evt; */
 };