Bob Giesberts / LDC1614

Dependencies:   SHTx

Dependents:   Inductive_Sensor_3

Fork of LDC1101 by Bob Giesberts

Committer:
hamid567
Date:
Tue May 19 13:31:03 2015 +0000
Revision:
3:bf6ac5967bd1
Parent:
2:44b76f6f19d5
Child:
5:98d4fd07734a
Added FastPWM

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