A collection of Analog Devices drivers for the mbed platform
For additional information check out the mbed page of the Analog Devices wiki: https://wiki.analog.com/resources/tools-software/mbed-drivers-all
libraries/cn0216/CN0216.h@13:66c8e4ce4ff1, 2016-04-29 (annotated)
- Committer:
- Adrian Suciu
- Date:
- Fri Apr 29 16:19:00 2016 +0300
- Revision:
- 13:66c8e4ce4ff1
- Child:
- 17:b8356808e8ad
Added driver for AD7791 and example for CN0216
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Adrian Suciu |
13:66c8e4ce4ff1 | 1 | |
Adrian Suciu |
13:66c8e4ce4ff1 | 2 | #include "mbed.h" |
Adrian Suciu |
13:66c8e4ce4ff1 | 3 | #include "AD7791.h" |
Adrian Suciu |
13:66c8e4ce4ff1 | 4 | |
Adrian Suciu |
13:66c8e4ce4ff1 | 5 | #ifndef CN0216_H_ |
Adrian Suciu |
13:66c8e4ce4ff1 | 6 | #define CN0216_H_ |
Adrian Suciu |
13:66c8e4ce4ff1 | 7 | |
Adrian Suciu |
13:66c8e4ce4ff1 | 8 | class CN0216 |
Adrian Suciu |
13:66c8e4ce4ff1 | 9 | { |
Adrian Suciu |
13:66c8e4ce4ff1 | 10 | public: |
Adrian Suciu |
13:66c8e4ce4ff1 | 11 | typedef enum |
Adrian Suciu |
13:66c8e4ce4ff1 | 12 | { |
Adrian Suciu |
13:66c8e4ce4ff1 | 13 | ZERO_SCALE_CALIBRATION, |
Adrian Suciu |
13:66c8e4ce4ff1 | 14 | FULL_SCALE_CALIBRATION, |
Adrian Suciu |
13:66c8e4ce4ff1 | 15 | COMPUTE_GRAM_PER_BIT |
Adrian Suciu |
13:66c8e4ce4ff1 | 16 | } CalibrationStep_t; |
Adrian Suciu |
13:66c8e4ce4ff1 | 17 | |
Adrian Suciu |
13:66c8e4ce4ff1 | 18 | CN0216(PinName CSAD7791 = D8, PinName MOSI = SPI_MOSI, PinName MISO = SPI_MISO, PinName SCK = SPI_SCK); |
Adrian Suciu |
13:66c8e4ce4ff1 | 19 | void init(float cal_weight = _DEFAULT_CAL_WEIGHT, uint8_t mode_val = _DEFAULT_MODE_VAL, uint8_t filter_val = _DEFAULT_FILTER_VAL); |
Adrian Suciu |
13:66c8e4ce4ff1 | 20 | void calibrate(CalibrationStep_t cal); |
Adrian Suciu |
13:66c8e4ce4ff1 | 21 | float compute_weight(uint32_t data); |
Adrian Suciu |
13:66c8e4ce4ff1 | 22 | uint32_t read_u32(); |
Adrian Suciu |
13:66c8e4ce4ff1 | 23 | float read_weight() ; |
Adrian Suciu |
13:66c8e4ce4ff1 | 24 | |
Adrian Suciu |
13:66c8e4ce4ff1 | 25 | private: |
Adrian Suciu |
13:66c8e4ce4ff1 | 26 | |
Adrian Suciu |
13:66c8e4ce4ff1 | 27 | const static int _DEFAULT_MODE_VAL = AD7791::MD1 | AD7791::MD0; // POWERDOWN MODE |
Adrian Suciu |
13:66c8e4ce4ff1 | 28 | const static int _DEFAULT_FILTER_VAL = AD7791::FS0 | AD7791::FS1 | AD7791::FS2; |
Adrian Suciu |
13:66c8e4ce4ff1 | 29 | const static int _NUMBER_OF_SAMPLES = 50; |
Adrian Suciu |
13:66c8e4ce4ff1 | 30 | const static int _DEFAULT_CAL_WEIGHT = 1000.0; |
Adrian Suciu |
13:66c8e4ce4ff1 | 31 | |
Adrian Suciu |
13:66c8e4ce4ff1 | 32 | AD7791 ad7791; |
Adrian Suciu |
13:66c8e4ce4ff1 | 33 | float _cal_weight; |
Adrian Suciu |
13:66c8e4ce4ff1 | 34 | uint32_t _zero_scale_value; |
Adrian Suciu |
13:66c8e4ce4ff1 | 35 | uint32_t _full_scale_value; |
Adrian Suciu |
13:66c8e4ce4ff1 | 36 | float _grams_per_bit; |
Adrian Suciu |
13:66c8e4ce4ff1 | 37 | |
Adrian Suciu |
13:66c8e4ce4ff1 | 38 | }; |
Adrian Suciu |
13:66c8e4ce4ff1 | 39 | |
Adrian Suciu |
13:66c8e4ce4ff1 | 40 | #endif |