Bob Giesberts / LDC1614

Dependencies:   SHTx

Dependents:   Inductive_Sensor_3

Fork of LDC1101 by Bob Giesberts

Committer:
hamid567
Date:
Tue May 26 14:34:05 2015 +0000
Revision:
5:98d4fd07734a
Parent:
3:bf6ac5967bd1
Child:
8:b5fb9681869c
Set mode to standby before writing registers. Counter 1..0 not changing ?

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,\
vsluiter 0:90873b4e8330 23 LDC_RESPONSE_384, \
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);
vsluiter 0:90873b4e8330 61 /**
vsluiter 0:90873b4e8330 62 * @brief Set the value of the external capacitor
vsluiter 0:90873b4e8330 63 * This is needed for the calculation of the inductance.
vsluiter 0:90873b4e8330 64 **/
vsluiter 0:90873b4e8330 65 void setCapacitor(float c){cap = c;};
vsluiter 0:90873b4e8330 66 /**
vsluiter 0:90873b4e8330 67 * @brief set the value of the external clock
vsluiter 0:90873b4e8330 68 * If PWMout is used to generate a clock signal, this will update the output frequency.s
vsluiter 0:90873b4e8330 69 **/
vsluiter 0:90873b4e8330 70 void setFrequency(float frequency);
vsluiter 0:90873b4e8330 71 /**
vsluiter 0:90873b4e8330 72 * @brief Read the raw 24-bit inductance value.
vsluiter 0:90873b4e8330 73 * This is needed for the calculation of the inductance.
vsluiter 0:90873b4e8330 74 **/
vsluiter 0:90873b4e8330 75 uint32_t readRawL(void){_raw_l = readRawCounts(); return _raw_l;};
hamid567 5:98d4fd07734a 76
hamid567 5:98d4fd07734a 77 // EXTRA test Read INTB register
hamid567 5:98d4fd07734a 78 uint32_t readINTBregister(void){INTB = readINTB(); return INTB;};
hamid567 5:98d4fd07734a 79
vsluiter 0:90873b4e8330 80 /**
vsluiter 0:90873b4e8330 81 * @brief Set the Response Time parameters.
vsluiter 0:90873b4e8330 82 * @param responsetime
vsluiter 0:90873b4e8330 83 * Larger value increases accuracy, but slows down the output data rate. Choose one of these values:
vsluiter 0:90873b4e8330 84 * - LDC_RESPONSE_192
vsluiter 0:90873b4e8330 85 * - LDC_RESPONSE_384
vsluiter 0:90873b4e8330 86 * - LDC_RESPONSE_768
vsluiter 0:90873b4e8330 87 * - LDC_RESPONSE_1536
vsluiter 0:90873b4e8330 88 * - LDC_RESPONSE_3072
vsluiter 0:90873b4e8330 89 * - LDC_RESPONSE_6144
vsluiter 0:90873b4e8330 90 **/
vsluiter 0:90873b4e8330 91 void setResponseTime(LDC_RESPONSE responsetime);
vsluiter 0:90873b4e8330 92 /**
vsluiter 0:90873b4e8330 93 * @brief Set the oscilation amplitude.
vsluiter 0:90873b4e8330 94 * Use one of these values:
vsluiter 0:90873b4e8330 95 * - LDC_AMPLITUDE_1V
vsluiter 0:90873b4e8330 96 * - LDC_AMPLITUDE_2V
vsluiter 0:90873b4e8330 97 * - LDC_AMPLITUDE_4V
vsluiter 0:90873b4e8330 98 **/
vsluiter 0:90873b4e8330 99 void setOutputPower(LDC_AMPLITUDE amplitude);
hamid567 2:44b76f6f19d5 100
hamid567 2:44b76f6f19d5 101 /** set Watchdog timer **/
hamid567 2:44b76f6f19d5 102 void setWatchdog(float frequency);
hamid567 2:44b76f6f19d5 103
vsluiter 0:90873b4e8330 104 private:
vsluiter 0:90873b4e8330 105 void readSPI(uint8_t *data, uint8_t address, uint8_t num_bytes = 1);
vsluiter 0:90873b4e8330 106 void writeSPI(uint8_t *data, uint8_t address, uint8_t num_bytes = 1);
hamid567 5:98d4fd07734a 107 void writeSPIregister(uint8_t reg, uint8_t value){writeSPI(&value,reg);};
vsluiter 0:90873b4e8330 108 uint32_t readRawCounts(void);
hamid567 5:98d4fd07734a 109 uint32_t readINTB(void); // EXTRA UNTB Read register
vsluiter 0:90873b4e8330 110 LDC_RESPONSE _responsetime;
vsluiter 0:90873b4e8330 111 LDC_AMPLITUDE _amplitude;
vsluiter 0:90873b4e8330 112 float _fsensor;
vsluiter 0:90873b4e8330 113 float _inductance;
vsluiter 0:90873b4e8330 114 float _frequency; //frequency of external clock
vsluiter 0:90873b4e8330 115 float cap;
vsluiter 0:90873b4e8330 116 uint32_t _raw_l;
hamid567 5:98d4fd07734a 117 uint32_t INTB; // extra: read register INTB
vsluiter 0:90873b4e8330 118 SPI _spiport;
vsluiter 0:90873b4e8330 119 DigitalOut _cs_pin;
hamid567 3:bf6ac5967bd1 120 FastPWM _clock;
vsluiter 0:90873b4e8330 121 };
vsluiter 0:90873b4e8330 122
vsluiter 0:90873b4e8330 123 #endif