Library to communicate with LDC1614

Dependencies:   SHTx

Dependents:   Inductive_Sensor_3

Fork of LDC1101 by Bob Giesberts

Revision:
16:07d0e43c2d12
Child:
17:a5cf2b4bec13
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LDC1101.h	Thu Dec 10 15:12:16 2015 +0000
@@ -0,0 +1,123 @@
+#ifndef _LDC1101_H_
+#define _LDC1101_H_
+
+#include "FastPWM.h"
+/**
+* @file LDC1101.h
+* @brief this header file will contain all required
+* definitions for the functions to interface with Texas
+* Instruments' LDC1101.
+*
+* @author Victor Sluiter
+*
+* @date 2015-12-09
+*/
+
+#include "mbed.h"
+
+#ifndef PI
+#define PI 3.14
+#endif
+
+typedef enum {  LDC_RESPONSE_192 = 2, \
+                LDC_RESPONSE_384 = 3, \
+                LDC_RESPONSE_768 = 4,  \
+                LDC_RESPONSE_1536= 5, \
+                LDC_RESPONSE_3072= 6, \
+                LDC_RESPONSE_6144= 7} LDC_RESPONSE;
+
+typedef enum {  LDC_MODE_ACTIVE = 0, \
+                LDC_MODE_STANDBY = 1, \
+                LDC_MODE_SHUTDOWN = 2} LDC_MODE;
+
+/**
+* Class for the LDC1101.
+* @author Victor Sluiter
+* @date 2015-12-09
+*/
+class LDC1101
+{
+    public:
+        /**
+        * @brief Create a new Class to interface to an LDC1101
+        **/
+        LDC1101(PinName mosi, PinName miso, PinName sck, PinName cs, float capacitor, float f_external, PinName clock_out=NC);
+        
+        /**
+        * @brief Set power mode.
+        * The constructor sets the LDC1101 in Active mode.
+        * @param mode choose from LDC_MODE_ACTIVE, LDC_MODE STANDBY or LDC_MODE_SHUTDOWN
+        **/
+        void mode(LDC_MODE mode) { writeSPI((uint8_t *)(&mode), 0x0B); };
+    
+        /**
+        * @brief initial configurations
+        **/
+        void init(void);
+        
+        /**
+        * @brief get the calculated inductance value
+        **/
+        float getInductance(void);
+    
+    
+        // EXTRA test get variables values to verify (to calculate the induction)
+        float get_raw_l(void);
+        float get_fsensor(void);
+        float get_frequency(void);
+        float get_responsetime(void);
+        float get_cap(void);
+        
+    
+        /**
+        * @brief Set the value of the external capacitor
+        * This is needed for the calculation of the inductance.
+        **/
+        void  setCapacitor(float c){cap = c;};
+        /**
+        * @brief set the value of the external clock
+        * If PWMout is used to generate a clock signal, this will update the output frequency.s
+        **/
+        void  setFrequency(float frequency);
+        /**
+        * @brief Read the raw 24-bit inductance value.
+        * This is needed for the calculation of the inductance.
+        **/
+        uint32_t readRawL(void){_raw_l = readRawCounts(); return _raw_l;};
+    
+    
+        /**
+        * @brief Set the Response Time parameters. 
+        * @param responsetime 
+        * Larger value increases accuracy, but slows down the output data rate. Choose one of these values:
+        * - LDC_RESPONSE_192
+        * - LDC_RESPONSE_384
+        * - LDC_RESPONSE_768
+        * - LDC_RESPONSE_1536
+        * - LDC_RESPONSE_3072
+        * - LDC_RESPONSE_6144
+        **/
+        void setResponseTime(LDC_RESPONSE responsetime);
+        
+    private:
+        void readSPI(uint8_t *data, uint8_t address, uint8_t num_bytes = 1);
+        void writeSPI(uint8_t *data, uint8_t address, uint8_t num_bytes = 1);
+        void writeSPIregister(uint8_t reg, uint8_t value){writeSPI(&value,reg);}; // VERKEERD OM?!
+        
+        uint32_t readRawCounts(void);
+        uint32_t readINTB(void); // EXTRA UNTB Read register
+        LDC_RESPONSE _responsetime;
+        float _fsensor;
+        float _inductance;
+        float _frequency; //frequency of external clock
+        float cap;    
+        uint32_t _raw_l;
+        uint32_t INTB; // extra: read register INTB
+        
+        SPI _spiport;
+        DigitalOut _cs_pin;
+       
+        FastPWM _clock;
+};
+
+#endif
\ No newline at end of file