Bob Giesberts / LDC1614

Dependencies:   SHTx

Dependents:   Inductive_Sensor_3

Fork of LDC1101 by Bob Giesberts

Committer:
hamid567
Date:
Fri May 29 09:28:46 2015 +0000
Revision:
8:b5fb9681869c
Parent:
5:98d4fd07734a
Child:
12:312970050c8c
Working program but with not the right return data from readCounts()

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vsluiter 0:90873b4e8330 1 #ifndef _LDC1000_H_
vsluiter 0:90873b4e8330 2 #define _LDC1000_H_
vsluiter 0:90873b4e8330 3
hamid567 3:bf6ac5967bd1 4 #include "FastPWM.h"
vsluiter 0:90873b4e8330 5 /**
vsluiter 0:90873b4e8330 6 * @file LDC1000.h
vsluiter 0:90873b4e8330 7 * @brief this header file will contain all required
vsluiter 0:90873b4e8330 8 * definitions for the functions to interface with Texas
vsluiter 0:90873b4e8330 9 * Instruments' LDC1000.
vsluiter 0:90873b4e8330 10 *
vsluiter 0:90873b4e8330 11 * @author Victor Sluiter
vsluiter 0:90873b4e8330 12 *
vsluiter 0:90873b4e8330 13 * @date 2015-04-01
vsluiter 0:90873b4e8330 14 */
vsluiter 0:90873b4e8330 15
vsluiter 0:90873b4e8330 16 #include "mbed.h"
vsluiter 0:90873b4e8330 17
vsluiter 0:90873b4e8330 18 #ifndef PI
vsluiter 0:90873b4e8330 19 #define PI 3.14
vsluiter 0:90873b4e8330 20 #endif
vsluiter 0:90873b4e8330 21
vsluiter 0:90873b4e8330 22 typedef enum { LDC_RESPONSE_192=2,\
hamid567 8:b5fb9681869c 23 LDC_RESPONSE_384= 3, \
vsluiter 0:90873b4e8330 24 LDC_RESPONSE_768, \
vsluiter 0:90873b4e8330 25 LDC_RESPONSE_1536, \
vsluiter 0:90873b4e8330 26 LDC_RESPONSE_3072, \
vsluiter 0:90873b4e8330 27 LDC_RESPONSE_6144} LDC_RESPONSE;
vsluiter 0:90873b4e8330 28
vsluiter 0:90873b4e8330 29 typedef enum { LDC_AMPLITUDE_1V=0,\
vsluiter 0:90873b4e8330 30 LDC_AMPLITUDE_2V, \
vsluiter 0:90873b4e8330 31 LDC_AMPLITUDE_4V} LDC_AMPLITUDE;
vsluiter 0:90873b4e8330 32
hamid567 1:a88df80e7664 33 typedef enum { LDC_MODE_STANDBY = 0, LDC_MODE_ACTIVE = 1} LDC_MODE;
vsluiter 0:90873b4e8330 34
hamid567 5:98d4fd07734a 35 typedef enum { WAKE_UP = 1, COMPARATOR = 2 , ACTIVE = 4} LDC_INTB;
hamid567 5:98d4fd07734a 36
vsluiter 0:90873b4e8330 37
vsluiter 0:90873b4e8330 38 /**
vsluiter 0:90873b4e8330 39 * Class for the LDC1000.
vsluiter 0:90873b4e8330 40 * @author Victor Sluiter
vsluiter 0:90873b4e8330 41 * @date 2015-04-01
vsluiter 0:90873b4e8330 42 */
vsluiter 0:90873b4e8330 43 class LDC1000
vsluiter 0:90873b4e8330 44 {
vsluiter 0:90873b4e8330 45 public:
vsluiter 0:90873b4e8330 46 /**
vsluiter 0:90873b4e8330 47 * @brief Create a new Class to interface to an LDC1000
vsluiter 0:90873b4e8330 48 **/
vsluiter 0:90873b4e8330 49 LDC1000(PinName mosi, PinName miso, PinName sck, PinName cs, float capacitor, float f_external, PinName clock_out=NC);
vsluiter 0:90873b4e8330 50 /**
vsluiter 0:90873b4e8330 51 * @brief Set power mode.
vsluiter 0:90873b4e8330 52 * The constructor sets the LDC1000 in Active mode.
vsluiter 0:90873b4e8330 53 * @param mode choose from LDC_MODE_ACTIVE or LDC_MODE STANDBY
vsluiter 0:90873b4e8330 54 **/
hamid567 1:a88df80e7664 55 void mode(LDC_MODE mode){writeSPI((uint8_t *)(&mode), 0x0B);};
hamid567 5:98d4fd07734a 56 void setINTB(LDC_INTB setINTB){writeSPI((uint8_t *)(&setINTB), 0x0A);};
vsluiter 0:90873b4e8330 57 /**
vsluiter 0:90873b4e8330 58 * @brief get the calculated inductance value
vsluiter 0:90873b4e8330 59 **/
vsluiter 0:90873b4e8330 60 float getInductance(void);
hamid567 8:b5fb9681869c 61
hamid567 8:b5fb9681869c 62
hamid567 8:b5fb9681869c 63 // EXTRA test get variables values to verify (to calculate the induction)
hamid567 8:b5fb9681869c 64 float get_raw_l(void);
hamid567 8:b5fb9681869c 65 float get_fsensor(void);
hamid567 8:b5fb9681869c 66 float get_frequency(void);
hamid567 8:b5fb9681869c 67 float get_responsetime(void);
hamid567 8:b5fb9681869c 68 float get_cap(void);
hamid567 8:b5fb9681869c 69
hamid567 8:b5fb9681869c 70
vsluiter 0:90873b4e8330 71 /**
vsluiter 0:90873b4e8330 72 * @brief Set the value of the external capacitor
vsluiter 0:90873b4e8330 73 * This is needed for the calculation of the inductance.
vsluiter 0:90873b4e8330 74 **/
vsluiter 0:90873b4e8330 75 void setCapacitor(float c){cap = c;};
vsluiter 0:90873b4e8330 76 /**
vsluiter 0:90873b4e8330 77 * @brief set the value of the external clock
vsluiter 0:90873b4e8330 78 * If PWMout is used to generate a clock signal, this will update the output frequency.s
vsluiter 0:90873b4e8330 79 **/
vsluiter 0:90873b4e8330 80 void setFrequency(float frequency);
vsluiter 0:90873b4e8330 81 /**
vsluiter 0:90873b4e8330 82 * @brief Read the raw 24-bit inductance value.
vsluiter 0:90873b4e8330 83 * This is needed for the calculation of the inductance.
vsluiter 0:90873b4e8330 84 **/
vsluiter 0:90873b4e8330 85 uint32_t readRawL(void){_raw_l = readRawCounts(); return _raw_l;};
hamid567 5:98d4fd07734a 86
hamid567 5:98d4fd07734a 87
vsluiter 0:90873b4e8330 88 /**
vsluiter 0:90873b4e8330 89 * @brief Set the Response Time parameters.
vsluiter 0:90873b4e8330 90 * @param responsetime
vsluiter 0:90873b4e8330 91 * Larger value increases accuracy, but slows down the output data rate. Choose one of these values:
vsluiter 0:90873b4e8330 92 * - LDC_RESPONSE_192
vsluiter 0:90873b4e8330 93 * - LDC_RESPONSE_384
vsluiter 0:90873b4e8330 94 * - LDC_RESPONSE_768
vsluiter 0:90873b4e8330 95 * - LDC_RESPONSE_1536
vsluiter 0:90873b4e8330 96 * - LDC_RESPONSE_3072
vsluiter 0:90873b4e8330 97 * - LDC_RESPONSE_6144
vsluiter 0:90873b4e8330 98 **/
vsluiter 0:90873b4e8330 99 void setResponseTime(LDC_RESPONSE responsetime);
vsluiter 0:90873b4e8330 100 /**
vsluiter 0:90873b4e8330 101 * @brief Set the oscilation amplitude.
vsluiter 0:90873b4e8330 102 * Use one of these values:
vsluiter 0:90873b4e8330 103 * - LDC_AMPLITUDE_1V
vsluiter 0:90873b4e8330 104 * - LDC_AMPLITUDE_2V
vsluiter 0:90873b4e8330 105 * - LDC_AMPLITUDE_4V
vsluiter 0:90873b4e8330 106 **/
vsluiter 0:90873b4e8330 107 void setOutputPower(LDC_AMPLITUDE amplitude);
hamid567 2:44b76f6f19d5 108
hamid567 2:44b76f6f19d5 109 /** set Watchdog timer **/
hamid567 2:44b76f6f19d5 110 void setWatchdog(float frequency);
hamid567 2:44b76f6f19d5 111
vsluiter 0:90873b4e8330 112 private:
vsluiter 0:90873b4e8330 113 void readSPI(uint8_t *data, uint8_t address, uint8_t num_bytes = 1);
vsluiter 0:90873b4e8330 114 void writeSPI(uint8_t *data, uint8_t address, uint8_t num_bytes = 1);
hamid567 5:98d4fd07734a 115 void writeSPIregister(uint8_t reg, uint8_t value){writeSPI(&value,reg);};
vsluiter 0:90873b4e8330 116 uint32_t readRawCounts(void);
hamid567 5:98d4fd07734a 117 uint32_t readINTB(void); // EXTRA UNTB Read register
vsluiter 0:90873b4e8330 118 LDC_RESPONSE _responsetime;
vsluiter 0:90873b4e8330 119 LDC_AMPLITUDE _amplitude;
vsluiter 0:90873b4e8330 120 float _fsensor;
vsluiter 0:90873b4e8330 121 float _inductance;
vsluiter 0:90873b4e8330 122 float _frequency; //frequency of external clock
vsluiter 0:90873b4e8330 123 float cap;
vsluiter 0:90873b4e8330 124 uint32_t _raw_l;
hamid567 5:98d4fd07734a 125 uint32_t INTB; // extra: read register INTB
vsluiter 0:90873b4e8330 126 SPI _spiport;
vsluiter 0:90873b4e8330 127 DigitalOut _cs_pin;
hamid567 3:bf6ac5967bd1 128 FastPWM _clock;
vsluiter 0:90873b4e8330 129 };
vsluiter 0:90873b4e8330 130
vsluiter 0:90873b4e8330 131 #endif