Host software for the MAX30001 ECG, PACE, biopotential, bioimpedance, R-to-R peak sensor. Hosted on the MAX32630FTHR.

Dependencies:   SDFileSystem USBDevice max32630fthr

Fork of MAX30001 SYS EvKit by Emre Eken

MAX30001-MAX32630FTHR ECG Evaluation System

The MAX30001 EVKIT SYS-MBED Evaluation System (EV System) is used to evaluates the MAX30001 sensor, which is an ECG (electrocardiogram), biopotential and bioimpedance analog front end solution for wearable applications. The full evaluation system consists of the MAX32630FTHR board, MAX30001 EVKIT sensor board and the evaluation software. The evaluation kit features ECG, PACE, R-to-R (R-peak timing) detection; bioimpedance (BioZ) AFE; and raw data logging.

The MAX30001 EVKIT evaluation system is assembled, tested and contains the necessary circuitry and connections to evaluate the MAX30001 ECG sensor.

When evaluated as an evaluation system, the MAX32630FTHR board provides the necessary logic rails, master clock, SPI, USB-to-Serial interfaces that are needed to evaluate the MAX30001 sensor board. MAX32630FTHR can be used as an independent development platform.

Communication between the PC and the MAX32630FTHR board is facilitated by a Windows 7, Windows 8 and Windows 10 compatible software that provides a simple and intuitive graphical user interface (GUI).

For more information, visit the wiki pages by clicking the wiki tab above and MAX30001EVSYS product page.

C++ source code, library for the MAX30001 ECG drivers are in the links at the bottom of this page. The sample code includes the ability to log data to the SD card of the MAX32630FTHR.

MAX30001 EVKIT Pinout Connections

/media/uploads/EmreE/max30001_sensor_board_connector_pinout.png

Where to Buy

MAX30001EVSYS-Buy

Committer:
Emre.Eken
Date:
Tue Jul 24 15:22:35 2018 +0300
Revision:
13:6031b0bd9773
Parent:
0:8e4630a71eb1
.hgtags is added.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 1 /*******************************************************************************
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 2 * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 3 *
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 4 * Permission is hereby granted, free of charge, to any person obtaining a
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 5 * copy of this software and associated documentation files (the "Software"),
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 6 * to deal in the Software without restriction, including without limitation
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 8 * and/or sell copies of the Software, and to permit persons to whom the
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 9 * Software is furnished to do so, subject to the following conditions:
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 10 *
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 11 * The above copyright notice and this permission notice shall be included
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 12 * in all copies or substantial portions of the Software.
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 13 *
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 17 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 18 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 20 * OTHER DEALINGS IN THE SOFTWARE.
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 21 *
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 22 * Except as contained in this notice, the name of Maxim Integrated
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 23 * Products, Inc. shall not be used except as stated in the Maxim Integrated
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 24 * Products, Inc. Branding Policy.
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 25 *
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 26 * The mere transfer of this software does not imply any licenses
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 27 * of trade secrets, proprietary technology, copyrights, patents,
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 28 * trademarks, maskwork rights, or any other form of intellectual
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 29 * property whatsoever. Maxim Integrated Products, Inc. retains all
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 30 * ownership rights.
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 31 *
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 32 ********************************************************************************
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 33 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 34 #ifndef _RPCFIFO_H_
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 35 #define _RPCFIFO_H_
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 36
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 37 #include <stdint.h>
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 38
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 39 /// Structure used for FIFO management
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 40 typedef struct {
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 41 unsigned int length; ///< FIFO size (number of elements)
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 42 void *data; ///< pointer to the FIFO buffer
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 43 unsigned int rindex; ///< current FIFO read index
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 44 unsigned int windex; ///< current FIFO write index
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 45 } fifo_t;
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 46
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 47 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 48 * @param fifo FIFO on which to perform the operation
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 49 * @param mem memory buffer to use for FIFO element storage
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 50 * @param length number of elements that the memory buffer can contain
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 51 * @returns 0 if successful, -1 upon failure
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 52 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 53 void fifo_init(fifo_t *fifo, void *mem, unsigned int length);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 54
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 55 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 56 * @brief Adds and 8-bit element to the FIFO
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 57 * @param fifo FIFO on which to perform the operation
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 58 * @param element element to add to the FIFO
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 59 * @returns 0 if successful, -1 upon failure
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 60 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 61 int fifo_put8(fifo_t *fifo, uint8_t element);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 62
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 63 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 64 * @brief Gets the next 8-bit element to the FIFO
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 65 * @param fifo FIFO on which to perform the operation
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 66 * @param element pointer to where to store the element from the FIFO
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 67 * @returns 0 if successful, -1 upon failure
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 68 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 69 int fifo_get8(fifo_t *fifo, uint8_t *element);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 70
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 71 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 72 * @brief Adds the next 16-bit element to the FIFO
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 73 * @param fifo FIFO on which to perform the operation
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 74 * @param element element to add to the FIFO
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 75 * @returns 0 if successful, -1 upon failure
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 76 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 77 int fifo_put16(fifo_t *fifo, uint16_t element);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 78
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 79 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 80 * @brief Gets the next 16-bit element to the FIFO
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 81 * @param fifo FIFO on which to perform the operation
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 82 * @param element pointer to where to store the element from the FIFO
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 83 * @returns 0 if successful, -1 upon failure
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 84 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 85 int fifo_get16(fifo_t *fifo, uint16_t *element);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 86
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 87 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 88 * @brief Adds the next 16-bit element to the FIFO
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 89 * @param fifo FIFO on which to perform the operation
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 90 * @param element element to add to the FIFO
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 91 * @returns 0 if successful, -1 upon failure
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 92 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 93 int fifo_put32(fifo_t *fifo, uint32_t element);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 94
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 95 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 96 * @brief Gets the next 16-bit element to the FIFO
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 97 * @param fifo FIFO on which to perform the operation
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 98 * @param element pointer to where to store the element from the FIFO
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 99 * @returns 0 if successful, -1 upon failure
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 100 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 101 int fifo_get32(fifo_t *fifo, uint32_t *element);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 102
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 103 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 104 * @brief Immediately resets the FIFO to the empty state
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 105 * @param fifo FIFO on which to perform the operation
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 106 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 107 void fifo_clear(fifo_t *fifo);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 108
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 109 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 110 * @brief Determines if the FIFO is empty
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 111 * @param fifo FIFO on which to perform the operation
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 112 * @returns #TRUE if FIFO is empty, #FALSE otherwise
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 113 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 114 int fifo_empty(fifo_t *fifo);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 115
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 116 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 117 * @brief FIFO status function
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 118 * @param fifo FIFO on which to perform the operation
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 119 * @returns #TRUE if FIFO is full, #FALSE otherwise
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 120 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 121 int fifo_full(fifo_t *fifo);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 122
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 123 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 124 * @brief FIFO status function
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 125 * @param fifo FIFO on which to perform the operation
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 126 * @returns the number of elements currently in the FIFO
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 127 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 128 unsigned int fifo_level(fifo_t *fifo);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 129
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 130 /**
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 131 * @brief FIFO status function
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 132 * @param fifo FIFO on which to perform the operation
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 133 * @returns the remaining elements that can be added to the FIFO
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 134 */
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 135 unsigned int fifo_remaining(fifo_t *fifo);
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 136
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 137 #endif // _RPCFIFO_H_
Emre.Eken@IST-LT-35101.maxim-ic.internal 0:8e4630a71eb1 138