Bob Giesberts / LDC1614

Dependencies:   SHTx

Dependents:   Inductive_Sensor_3

Fork of LDC1101 by Bob Giesberts

Committer:
hamid567
Date:
Wed Apr 29 14:57:22 2015 +0000
Revision:
1:a88df80e7664
Parent:
0:90873b4e8330
Child:
2:44b76f6f19d5
Corrected read and write actions

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
vsluiter 0:90873b4e8330 4 /**
vsluiter 0:90873b4e8330 5 * @file LDC1000.h
vsluiter 0:90873b4e8330 6 * @brief this header file will contain all required
vsluiter 0:90873b4e8330 7 * definitions for the functions to interface with Texas
vsluiter 0:90873b4e8330 8 * Instruments' LDC1000.
vsluiter 0:90873b4e8330 9 *
vsluiter 0:90873b4e8330 10 * @author Victor Sluiter
vsluiter 0:90873b4e8330 11 *
vsluiter 0:90873b4e8330 12 * @date 2015-04-01
vsluiter 0:90873b4e8330 13 */
vsluiter 0:90873b4e8330 14
vsluiter 0:90873b4e8330 15 #include "mbed.h"
vsluiter 0:90873b4e8330 16
vsluiter 0:90873b4e8330 17 #ifndef PI
vsluiter 0:90873b4e8330 18 #define PI 3.14
vsluiter 0:90873b4e8330 19 #endif
vsluiter 0:90873b4e8330 20
vsluiter 0:90873b4e8330 21 typedef enum { LDC_RESPONSE_192=2,\
vsluiter 0:90873b4e8330 22 LDC_RESPONSE_384, \
vsluiter 0:90873b4e8330 23 LDC_RESPONSE_768, \
vsluiter 0:90873b4e8330 24 LDC_RESPONSE_1536, \
vsluiter 0:90873b4e8330 25 LDC_RESPONSE_3072, \
vsluiter 0:90873b4e8330 26 LDC_RESPONSE_6144} LDC_RESPONSE;
vsluiter 0:90873b4e8330 27
vsluiter 0:90873b4e8330 28 typedef enum { LDC_AMPLITUDE_1V=0,\
vsluiter 0:90873b4e8330 29 LDC_AMPLITUDE_2V, \
vsluiter 0:90873b4e8330 30 LDC_AMPLITUDE_4V} LDC_AMPLITUDE;
vsluiter 0:90873b4e8330 31
hamid567 1:a88df80e7664 32 typedef enum { LDC_MODE_STANDBY = 0, LDC_MODE_ACTIVE = 1} LDC_MODE;
vsluiter 0:90873b4e8330 33
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);
vsluiter 0:90873b4e8330 57 /**
vsluiter 0:90873b4e8330 58 * @brief Set the value of the external capacitor
vsluiter 0:90873b4e8330 59 * This is needed for the calculation of the inductance.
vsluiter 0:90873b4e8330 60 **/
vsluiter 0:90873b4e8330 61 void setCapacitor(float c){cap = c;};
vsluiter 0:90873b4e8330 62 /**
vsluiter 0:90873b4e8330 63 * @brief set the value of the external clock
vsluiter 0:90873b4e8330 64 * If PWMout is used to generate a clock signal, this will update the output frequency.s
vsluiter 0:90873b4e8330 65 **/
vsluiter 0:90873b4e8330 66 void setFrequency(float frequency);
vsluiter 0:90873b4e8330 67 /**
vsluiter 0:90873b4e8330 68 * @brief Read the raw 24-bit inductance value.
vsluiter 0:90873b4e8330 69 * This is needed for the calculation of the inductance.
vsluiter 0:90873b4e8330 70 **/
vsluiter 0:90873b4e8330 71 uint32_t readRawL(void){_raw_l = readRawCounts(); return _raw_l;};
vsluiter 0:90873b4e8330 72 /**
vsluiter 0:90873b4e8330 73 * @brief Set the Response Time parameters.
vsluiter 0:90873b4e8330 74 * @param responsetime
vsluiter 0:90873b4e8330 75 * Larger value increases accuracy, but slows down the output data rate. Choose one of these values:
vsluiter 0:90873b4e8330 76 * - LDC_RESPONSE_192
vsluiter 0:90873b4e8330 77 * - LDC_RESPONSE_384
vsluiter 0:90873b4e8330 78 * - LDC_RESPONSE_768
vsluiter 0:90873b4e8330 79 * - LDC_RESPONSE_1536
vsluiter 0:90873b4e8330 80 * - LDC_RESPONSE_3072
vsluiter 0:90873b4e8330 81 * - LDC_RESPONSE_6144
vsluiter 0:90873b4e8330 82 **/
vsluiter 0:90873b4e8330 83 void setResponseTime(LDC_RESPONSE responsetime);
vsluiter 0:90873b4e8330 84 /**
vsluiter 0:90873b4e8330 85 * @brief Set the oscilation amplitude.
vsluiter 0:90873b4e8330 86 * Use one of these values:
vsluiter 0:90873b4e8330 87 * - LDC_AMPLITUDE_1V
vsluiter 0:90873b4e8330 88 * - LDC_AMPLITUDE_2V
vsluiter 0:90873b4e8330 89 * - LDC_AMPLITUDE_4V
vsluiter 0:90873b4e8330 90 **/
vsluiter 0:90873b4e8330 91 void setOutputPower(LDC_AMPLITUDE amplitude);
hamid567 1:a88df80e7664 92
vsluiter 0:90873b4e8330 93 private:
vsluiter 0:90873b4e8330 94 void readSPI(uint8_t *data, uint8_t address, uint8_t num_bytes = 1);
vsluiter 0:90873b4e8330 95 void writeSPI(uint8_t *data, uint8_t address, uint8_t num_bytes = 1);
vsluiter 0:90873b4e8330 96 uint32_t readRawCounts(void);
vsluiter 0:90873b4e8330 97 LDC_RESPONSE _responsetime;
vsluiter 0:90873b4e8330 98 LDC_AMPLITUDE _amplitude;
vsluiter 0:90873b4e8330 99 float _fsensor;
vsluiter 0:90873b4e8330 100 float _inductance;
vsluiter 0:90873b4e8330 101 float _frequency; //frequency of external clock
vsluiter 0:90873b4e8330 102 float cap;
vsluiter 0:90873b4e8330 103 uint32_t _raw_l;
vsluiter 0:90873b4e8330 104 SPI _spiport;
vsluiter 0:90873b4e8330 105 DigitalOut _cs_pin;
vsluiter 0:90873b4e8330 106 PwmOut _clock;
vsluiter 0:90873b4e8330 107 };
vsluiter 0:90873b4e8330 108
vsluiter 0:90873b4e8330 109 #endif