MAX30205 Human Body Temperature Sensor
Diff: MAX30205.cpp
- Revision:
- 0:6cf99fa71e1b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MAX30205.cpp Tue Apr 25 05:04:06 2017 +0000
@@ -0,0 +1,96 @@
+#include "mbed.h"
+#include "MAX30205.h"
+
+/**
+ * Internal Registers
+ * The device contains four registers,
+ * each of which consists of 2bytes.
+ * The configuration register contains only 1 byte of
+ * actual data and, when read as a 2-byte register,
+ * repeats the same data for the second byte.
+ */
+
+#define REG_TEMP 0x00
+#define REG_CONF 0x01
+#define REG_THYST 0x02
+#define REG_TOS 0x03
+
+MAX30205::MAX30205(PinName sda, PinName scl, int addr): m_i2c(sda, scl), m_addr(addr<<1)
+{
+ // activate the peripheral
+}
+
+MAX30205::~MAX30205()
+{
+}
+
+uint16_t MAX30205::getTemp(void)
+{
+ uint16_t temp ;
+ uint8_t data[2] ;
+ readRegs(REG_TEMP, data, 2) ;
+ temp = (data[0] << 8) | data[1] ;
+ return(temp) ;
+}
+
+uint8_t MAX30205::getConf(void)
+{
+ uint8_t data[2] ;
+ readRegs(REG_CONF, data, 2) ;
+ return(data[0]) ;
+}
+
+void MAX30205::setConf(uint8_t conf)
+{
+ uint8_t data[3] ;
+ data[0] = REG_CONF ;
+ data[1] = conf ;
+ data[2] = conf ;
+ writeRegs(data, 3) ;
+}
+
+uint16_t MAX30205::getThyst(void)
+{
+ uint16_t thyst ;
+ uint8_t data[2] ;
+ readRegs(REG_THYST, data, 2) ;
+ thyst = (data[0] << 8) | data[1] ;
+ return(thyst) ;
+}
+
+void MAX30205::setThyst(uint16_t thyst)
+{
+ uint8_t data[3] ;
+ data[0] = REG_THYST ;
+ data[1] = (thyst >> 8) & 0xFF ;
+ data[2] = thyst & 0xFF ;
+ writeRegs(data, 3) ;
+}
+
+uint16_t MAX30205::getTos(void)
+{
+ uint16_t tos ;
+ uint8_t data[2] ;
+ readRegs(REG_TOS, data, 2) ;
+ tos = (data[0] << 8) | data[1] ;
+ return(tos) ;
+}
+
+void MAX30205::setTos(uint16_t tos)
+{
+ uint8_t data[3] ;
+ data[0] = REG_TOS ;
+ data[1] = (tos >> 8) & 0xFF ;
+ data[2] = tos & 0xFF ;
+ writeRegs(data, 3) ;
+}
+
+void MAX30205::readRegs(int addr, uint8_t * data, int len) {
+ char t[1] = {addr};
+ m_i2c.write(m_addr, t, 1, true);
+ m_i2c.read(m_addr, (char *)data, len);
+}
+
+void MAX30205::writeRegs(uint8_t * data, int len) {
+ m_i2c.write(m_addr, (char *)data, len);
+}
\ No newline at end of file