Classes to interact with our Mbed.

Dependents:   MCP4725I2Ctest MCP4725Translator

Fork of MCP4728 by wimbeaumont Project

Committer:
katrijnverhasselt
Date:
Fri Apr 01 08:40:34 2016 +0000
Revision:
5:fa31978934fd
Classes with functions to interact with our chip.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
katrijnverhasselt 5:fa31978934fd 1 #ifndef MCP_4725_H
katrijnverhasselt 5:fa31978934fd 2 #define MCP_4725_H
katrijnverhasselt 5:fa31978934fd 3
katrijnverhasselt 5:fa31978934fd 4
katrijnverhasselt 5:fa31978934fd 5 #include "stdbool.h"
katrijnverhasselt 5:fa31978934fd 6
katrijnverhasselt 5:fa31978934fd 7 #include "I2CInterface.h"
katrijnverhasselt 5:fa31978934fd 8 #include "DACInterface.h"
katrijnverhasselt 5:fa31978934fd 9
katrijnverhasselt 5:fa31978934fd 10 #define VERSION_MCP4725_HDR "0.20"
katrijnverhasselt 5:fa31978934fd 11
katrijnverhasselt 5:fa31978934fd 12 /** MCP4725 class.
katrijnverhasselt 5:fa31978934fd 13 * Used for interfacing with a mcp4725 12-Bit Digital-to-Analog Converter.
katrijnverhasselt 5:fa31978934fd 14 * To convert between the 12bit dac_value and Vout, use the following formula: dac_value = (Vout*4096/Vref), where Vout is
katrijnverhasselt 5:fa31978934fd 15 * the desired output analog voltage, Vref is the voltage connected to the Vdd pin of the device. Typically Vdd will be 3.3volts.
katrijnverhasselt 5:fa31978934fd 16 *
katrijnverhasselt 5:fa31978934fd 17 * Note: There is an accompanying test suite program "MCP_4725_Library_Test" that can be used to test this library.
katrijnverhasselt 5:fa31978934fd 18
katrijnverhasselt 5:fa31978934fd 19 * WB copied from Users » donalm » Code »
katrijnverhasselt 5:fa31978934fd 20 * removed the I2C settings etc. replaced to pointer to I2CInterface class.
katrijnverhasselt 5:fa31978934fd 21 * for read by value instead of by pointer
katrijnverhasselt 5:fa31978934fd 22 * ver 0.1 : setDAC , get DAC working
katrijnverhasselt 5:fa31978934fd 23 * ver 0.2 : implemented setVoltage, getVoltage
katrijnverhasselt 5:fa31978934fd 24 * (C) Wim Beaumont Universiteit Antwerpen 2015
katrijnverhasselt 5:fa31978934fd 25 *
katrijnverhasselt 5:fa31978934fd 26 */
katrijnverhasselt 5:fa31978934fd 27 class MCP4725 : public DACInterface {
katrijnverhasselt 5:fa31978934fd 28
katrijnverhasselt 5:fa31978934fd 29 public:
katrijnverhasselt 5:fa31978934fd 30 /** The device supports two types of power modes: normal and power-down. In normal mode the device
katrijnverhasselt 5:fa31978934fd 31 * operates a normal digital to analog conversion. In power-down mode all digitial to analog
katrijnverhasselt 5:fa31978934fd 32 * conversion is stopped, resulting in the device using less power (typically 60nA). Also, in power
katrijnverhasselt 5:fa31978934fd 33 * down mode Vout will be pulled to ground using either a 1k, 100k or 500k ohm internal resistors. */
katrijnverhasselt 5:fa31978934fd 34 enum PowerMode {
katrijnverhasselt 5:fa31978934fd 35 /** In normal mode the device operates a normal D2A conversion. */
katrijnverhasselt 5:fa31978934fd 36 Normal=0,
katrijnverhasselt 5:fa31978934fd 37 /** Enter the device into a power down mode, and pull Vout to ground using an internal 1k resistor. */
katrijnverhasselt 5:fa31978934fd 38 PowerDown1k=1,
katrijnverhasselt 5:fa31978934fd 39 /** Enter the device into a power down mode, and pull Vout to ground using an internal 100k resistor. */
katrijnverhasselt 5:fa31978934fd 40 PowerDown100k=2,
katrijnverhasselt 5:fa31978934fd 41 /** Enter the device into a power down mode, and pull Vout to ground using an internal 500k resistor. */
katrijnverhasselt 5:fa31978934fd 42 PowerDown500k=3
katrijnverhasselt 5:fa31978934fd 43 };
katrijnverhasselt 5:fa31978934fd 44
katrijnverhasselt 5:fa31978934fd 45 /** The device supports 3 different I2C bus frequencies.*/
katrijnverhasselt 5:fa31978934fd 46 enum BusFrequency {
katrijnverhasselt 5:fa31978934fd 47 /** Standard 100kHz bus. */
katrijnverhasselt 5:fa31978934fd 48 Standard100kHz,
katrijnverhasselt 5:fa31978934fd 49 /** Fast 400kHz bus. */
katrijnverhasselt 5:fa31978934fd 50 Fast400kHz,
katrijnverhasselt 5:fa31978934fd 51 /** High Speed 3.4Mhz bus. WARNING: the test suite fails for the mbed LPC1768 when this frequency is selected - not tested on other platforms.*/
katrijnverhasselt 5:fa31978934fd 52 HighSpeed3_4Mhz
katrijnverhasselt 5:fa31978934fd 53 };
katrijnverhasselt 5:fa31978934fd 54
katrijnverhasselt 5:fa31978934fd 55 /** Create an mcp4725 I2C interface
katrijnverhasselt 5:fa31978934fd 56 *
katrijnverhasselt 5:fa31978934fd 57 * @param i2cinterface pointer to the MBED I2C interface
katrijnverhasselt 5:fa31978934fd 58 * @param scl I2C clock line pin
katrijnverhasselt 5:fa31978934fd 59 * @param bus_frequency the frequency at which the I2C bus is running.
katrijnverhasselt 5:fa31978934fd 60 * @param device_address_bits The 3bit address bits of the device.
katrijnverhasselt 5:fa31978934fd 61 */
katrijnverhasselt 5:fa31978934fd 62 MCP4725(I2CInterface* i2cinterface, int device_address_bits, float Vdd_);
katrijnverhasselt 5:fa31978934fd 63
katrijnverhasselt 5:fa31978934fd 64
katrijnverhasselt 5:fa31978934fd 65 /* Update the power mode and DAC value.
katrijnverhasselt 5:fa31978934fd 66 *
katrijnverhasselt 5:fa31978934fd 67 * @param mode The Power mode to set the device into.
katrijnverhasselt 5:fa31978934fd 68 * @param dac_value The 12bit dac register data value.
katrijnverhasselt 5:fa31978934fd 69 * @param writeToEeprom True if the config is to be stored
katrijnverhasselt 5:fa31978934fd 70 * in eeprom, otherwise false
katrijnverhasselt 5:fa31978934fd 71 *
katrijnverhasselt 5:fa31978934fd 72 * @returns
katrijnverhasselt 5:fa31978934fd 73 * 0 on success,
katrijnverhasselt 5:fa31978934fd 74 * non-0 on failure
katrijnverhasselt 5:fa31978934fd 75 */
katrijnverhasselt 5:fa31978934fd 76 int write(enum PowerMode mode, int dac_value, bool writeToEeprom);
katrijnverhasselt 5:fa31978934fd 77
katrijnverhasselt 5:fa31978934fd 78
katrijnverhasselt 5:fa31978934fd 79 /** Read the contents of the dac register, the contents of eeprom, and if an eeprom write is currently active.
katrijnverhasselt 5:fa31978934fd 80 *
katrijnverhasselt 5:fa31978934fd 81 * @param mode Pointer to variable to store the current power mode.
katrijnverhasselt 5:fa31978934fd 82 * @param mode_eeprom Pointer to variable to store the power mode as is stored in eeprom.
katrijnverhasselt 5:fa31978934fd 83 * @param dac_value Pointer to variable to store the current dac value.
katrijnverhasselt 5:fa31978934fd 84 * @param dac_value_eeprom Pointer to variable to store the dac value as is stored in eeprom.
katrijnverhasselt 5:fa31978934fd 85 * @param eeprom_write_in_progress Pointer to variable to store the current eeprom write status.
katrijnverhasselt 5:fa31978934fd 86 *
katrijnverhasselt 5:fa31978934fd 87 * @returns
katrijnverhasselt 5:fa31978934fd 88 * 0 on success,
katrijnverhasselt 5:fa31978934fd 89 * non-0 on failure
katrijnverhasselt 5:fa31978934fd 90 */
katrijnverhasselt 5:fa31978934fd 91 int read(enum PowerMode& mode, enum PowerMode& mode_eeprom, int& dac_value, int& dac_value_eeprom, bool& eeprom_write_in_progress);
katrijnverhasselt 5:fa31978934fd 92
katrijnverhasselt 5:fa31978934fd 93
katrijnverhasselt 5:fa31978934fd 94 /** no action as read always read from the device so returns always 0 */
katrijnverhasselt 5:fa31978934fd 95 virtual int update() { return 0;}
katrijnverhasselt 5:fa31978934fd 96 virtual int getDACvalue(int &value, int ch=0);
katrijnverhasselt 5:fa31978934fd 97 virtual int setVoltage (float voltage, int ch=0);
katrijnverhasselt 5:fa31978934fd 98 virtual int setDACvalue( int value, int ch=0);
katrijnverhasselt 5:fa31978934fd 99 virtual int getVoltage(float &voltage, int ch=0);
katrijnverhasselt 5:fa31978934fd 100
katrijnverhasselt 5:fa31978934fd 101 protected:
katrijnverhasselt 5:fa31978934fd 102 /** mbed I2C interface driver. */
katrijnverhasselt 5:fa31978934fd 103 I2CInterface* _i2c_interface;
katrijnverhasselt 5:fa31978934fd 104 /** The full i2c device address. */
katrijnverhasselt 5:fa31978934fd 105 int _device_address;
katrijnverhasselt 5:fa31978934fd 106 float Vdd;
katrijnverhasselt 5:fa31978934fd 107 };
katrijnverhasselt 5:fa31978934fd 108
katrijnverhasselt 5:fa31978934fd 109 #endif