NUCLEO-F401RE + BlueNRG shield client test (TI Sensortag reading)

Dependencies:   mbed-src

Revision:
0:aa1e012ec210
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tag_math.c	Sat Aug 16 11:00:04 2014 +0000
@@ -0,0 +1,56 @@
+#include <math.h>
+#include "stm32f4xx_hal.h"
+
+/* Conversion algorithm for target temperature */
+double calcTmpTarget(uint8_t* rawData)
+{
+  uint16_t rawT = (rawData[1] << 8) | rawData[0]; 
+  double m_tmpAmb = ((rawData[3] << 8) | rawData[2] )/128.0;
+      
+  //-- calculate target temperature
+  double Vobj2 = (double)(uint16_t)rawT;
+  Vobj2 *= 0.00000015625;
+
+  double Tdie2 = m_tmpAmb + 273.15;
+  const double S0 = 6.4E-14;            // Calibration factor
+
+  const double a1 = 1.75E-3;
+  const double a2 = -1.678E-5;
+  const double b0 = -2.94E-5;
+  const double b1 = -5.7E-7;
+  const double b2 = 4.63E-9;
+  const double c2 = 13.4;
+  const double Tref = 298.15;
+  double S = S0*(1+a1*(Tdie2 - Tref)+a2*pow((Tdie2 - Tref),2));
+  double Vos = b0 + b1*(Tdie2 - Tref) + b2*pow((Tdie2 - Tref),2);
+  double fObj = (Vobj2 - Vos) + c2*pow((Vobj2 - Vos),2);
+  double tObj = pow(pow(Tdie2,4) + (fObj/S),.25);
+  tObj = (tObj - 273.15);
+
+  return  m_tmpAmb;//tObj;
+}
+
+double calcHumTmp(uint16_t rawT)
+{
+  double v;
+
+  //-- calculate temperature [deg C] --
+  v = -46.85 + 175.72/65536 *(double)(uint16_t)rawT;
+
+  return v;
+}
+
+/*  Conversion algorithm, humidity */
+
+double calcHumRel(uint8_t* rawData)
+{
+  double v;
+  
+  uint16_t rawH = (rawData[3] << 8) | rawData[2]; 
+
+  rawH &= ~0x0003; // clear bits [1..0] (status bits)
+  //-- calculate relative humidity [%RH] --
+  v = -6.0 + 125.0/65536 * (double)rawH; // RH= -6 + 125 * SRH/2^16
+
+  return v;
+}