Bob Giesberts / LDC1614

Dependencies:   SHTx

Dependents:   Inductive_Sensor_3

Fork of LDC1101 by Bob Giesberts

Committer:
hamid567
Date:
Mon Jun 01 08:21:11 2015 +0000
Revision:
12:312970050c8c
Parent:
8:b5fb9681869c
Working example

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
vsluiter 0:90873b4e8330 35 /**
vsluiter 0:90873b4e8330 36 * Class for the LDC1000.
vsluiter 0:90873b4e8330 37 * @author Victor Sluiter
vsluiter 0:90873b4e8330 38 * @date 2015-04-01
vsluiter 0:90873b4e8330 39 */
vsluiter 0:90873b4e8330 40 class LDC1000
vsluiter 0:90873b4e8330 41 {
vsluiter 0:90873b4e8330 42 public:
vsluiter 0:90873b4e8330 43 /**
vsluiter 0:90873b4e8330 44 * @brief Create a new Class to interface to an LDC1000
vsluiter 0:90873b4e8330 45 **/
vsluiter 0:90873b4e8330 46 LDC1000(PinName mosi, PinName miso, PinName sck, PinName cs, float capacitor, float f_external, PinName clock_out=NC);
vsluiter 0:90873b4e8330 47 /**
vsluiter 0:90873b4e8330 48 * @brief Set power mode.
vsluiter 0:90873b4e8330 49 * The constructor sets the LDC1000 in Active mode.
vsluiter 0:90873b4e8330 50 * @param mode choose from LDC_MODE_ACTIVE or LDC_MODE STANDBY
vsluiter 0:90873b4e8330 51 **/
hamid567 1:a88df80e7664 52 void mode(LDC_MODE mode){writeSPI((uint8_t *)(&mode), 0x0B);};
vsluiter 0:90873b4e8330 53 /**
vsluiter 0:90873b4e8330 54 * @brief get the calculated inductance value
vsluiter 0:90873b4e8330 55 **/
vsluiter 0:90873b4e8330 56 float getInductance(void);
hamid567 8:b5fb9681869c 57
hamid567 8:b5fb9681869c 58
hamid567 8:b5fb9681869c 59 // EXTRA test get variables values to verify (to calculate the induction)
hamid567 8:b5fb9681869c 60 float get_raw_l(void);
hamid567 8:b5fb9681869c 61 float get_fsensor(void);
hamid567 8:b5fb9681869c 62 float get_frequency(void);
hamid567 8:b5fb9681869c 63 float get_responsetime(void);
hamid567 8:b5fb9681869c 64 float get_cap(void);
hamid567 8:b5fb9681869c 65
hamid567 8:b5fb9681869c 66
vsluiter 0:90873b4e8330 67 /**
vsluiter 0:90873b4e8330 68 * @brief Set the value of the external capacitor
vsluiter 0:90873b4e8330 69 * This is needed for the calculation of the inductance.
vsluiter 0:90873b4e8330 70 **/
vsluiter 0:90873b4e8330 71 void setCapacitor(float c){cap = c;};
vsluiter 0:90873b4e8330 72 /**
vsluiter 0:90873b4e8330 73 * @brief set the value of the external clock
vsluiter 0:90873b4e8330 74 * If PWMout is used to generate a clock signal, this will update the output frequency.s
vsluiter 0:90873b4e8330 75 **/
vsluiter 0:90873b4e8330 76 void setFrequency(float frequency);
vsluiter 0:90873b4e8330 77 /**
vsluiter 0:90873b4e8330 78 * @brief Read the raw 24-bit inductance value.
vsluiter 0:90873b4e8330 79 * This is needed for the calculation of the inductance.
vsluiter 0:90873b4e8330 80 **/
vsluiter 0:90873b4e8330 81 uint32_t readRawL(void){_raw_l = readRawCounts(); return _raw_l;};
hamid567 5:98d4fd07734a 82
hamid567 5:98d4fd07734a 83
vsluiter 0:90873b4e8330 84 /**
vsluiter 0:90873b4e8330 85 * @brief Set the Response Time parameters.
vsluiter 0:90873b4e8330 86 * @param responsetime
vsluiter 0:90873b4e8330 87 * Larger value increases accuracy, but slows down the output data rate. Choose one of these values:
vsluiter 0:90873b4e8330 88 * - LDC_RESPONSE_192
vsluiter 0:90873b4e8330 89 * - LDC_RESPONSE_384
vsluiter 0:90873b4e8330 90 * - LDC_RESPONSE_768
vsluiter 0:90873b4e8330 91 * - LDC_RESPONSE_1536
vsluiter 0:90873b4e8330 92 * - LDC_RESPONSE_3072
vsluiter 0:90873b4e8330 93 * - LDC_RESPONSE_6144
vsluiter 0:90873b4e8330 94 **/
vsluiter 0:90873b4e8330 95 void setResponseTime(LDC_RESPONSE responsetime);
vsluiter 0:90873b4e8330 96 /**
vsluiter 0:90873b4e8330 97 * @brief Set the oscilation amplitude.
vsluiter 0:90873b4e8330 98 * Use one of these values:
vsluiter 0:90873b4e8330 99 * - LDC_AMPLITUDE_1V
vsluiter 0:90873b4e8330 100 * - LDC_AMPLITUDE_2V
vsluiter 0:90873b4e8330 101 * - LDC_AMPLITUDE_4V
vsluiter 0:90873b4e8330 102 **/
vsluiter 0:90873b4e8330 103 void setOutputPower(LDC_AMPLITUDE amplitude);
hamid567 2:44b76f6f19d5 104
hamid567 2:44b76f6f19d5 105 /** set Watchdog timer **/
hamid567 2:44b76f6f19d5 106 void setWatchdog(float frequency);
hamid567 2:44b76f6f19d5 107
vsluiter 0:90873b4e8330 108 private:
vsluiter 0:90873b4e8330 109 void readSPI(uint8_t *data, uint8_t address, uint8_t num_bytes = 1);
vsluiter 0:90873b4e8330 110 void writeSPI(uint8_t *data, uint8_t address, uint8_t num_bytes = 1);
hamid567 5:98d4fd07734a 111 void writeSPIregister(uint8_t reg, uint8_t value){writeSPI(&value,reg);};
vsluiter 0:90873b4e8330 112 uint32_t readRawCounts(void);
hamid567 5:98d4fd07734a 113 uint32_t readINTB(void); // EXTRA UNTB Read register
vsluiter 0:90873b4e8330 114 LDC_RESPONSE _responsetime;
vsluiter 0:90873b4e8330 115 LDC_AMPLITUDE _amplitude;
vsluiter 0:90873b4e8330 116 float _fsensor;
vsluiter 0:90873b4e8330 117 float _inductance;
vsluiter 0:90873b4e8330 118 float _frequency; //frequency of external clock
vsluiter 0:90873b4e8330 119 float cap;
vsluiter 0:90873b4e8330 120 uint32_t _raw_l;
hamid567 5:98d4fd07734a 121 uint32_t INTB; // extra: read register INTB
vsluiter 0:90873b4e8330 122 SPI _spiport;
vsluiter 0:90873b4e8330 123 DigitalOut _cs_pin;
hamid567 3:bf6ac5967bd1 124 FastPWM _clock;
vsluiter 0:90873b4e8330 125 };
vsluiter 0:90873b4e8330 126
vsluiter 0:90873b4e8330 127 #endif