MCP4726 library

Dependents:   mbed_MCP4726

See http://developer.mbed.org/users/yasuyuki/notebook/MCP4726/

Committer:
yasuyuki
Date:
Wed Oct 15 14:42:50 2014 +0000
Revision:
0:f0980556dfc0
first release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yasuyuki 0:f0980556dfc0 1 //**********************
yasuyuki 0:f0980556dfc0 2 // MCP4726.cpp for mbed
yasuyuki 0:f0980556dfc0 3 //
yasuyuki 0:f0980556dfc0 4 // MCP4726 mcp4726(P0_5,P0_4);
yasuyuki 0:f0980556dfc0 5 // or
yasuyuki 0:f0980556dfc0 6 // I2C i2c(P0_5,P0_4);
yasuyuki 0:f0980556dfc0 7 // MCP4726 mcp4726(i2c);
yasuyuki 0:f0980556dfc0 8 //
yasuyuki 0:f0980556dfc0 9 // Max Frequency with I2C mode
yasuyuki 0:f0980556dfc0 10 // Standard mode 3.4KHz=100KHz / 29bits
yasuyuki 0:f0980556dfc0 11 // Fast mode 13.8KHz=400KHz / 29bits
yasuyuki 0:f0980556dfc0 12 // Fast mode Plus 34.5KHz=1MHz / 29bits
yasuyuki 0:f0980556dfc0 13 // HS mode 117KHz =3.4MHz / 29bits
yasuyuki 0:f0980556dfc0 14 //
yasuyuki 0:f0980556dfc0 15 // (C)Copyright 2014 All rights reserved by Y.Onodera
yasuyuki 0:f0980556dfc0 16 // http://einstlab.web.fc2.com
yasuyuki 0:f0980556dfc0 17 //**********************
yasuyuki 0:f0980556dfc0 18
yasuyuki 0:f0980556dfc0 19 #include "mbed.h"
yasuyuki 0:f0980556dfc0 20 #include "MCP4726.h"
yasuyuki 0:f0980556dfc0 21
yasuyuki 0:f0980556dfc0 22 MCP4726::MCP4726 (PinName sda, PinName scl) : _i2c(sda, scl) {
yasuyuki 0:f0980556dfc0 23 init();
yasuyuki 0:f0980556dfc0 24 }
yasuyuki 0:f0980556dfc0 25 MCP4726::MCP4726 (I2C& p_i2c) : _i2c(p_i2c) {
yasuyuki 0:f0980556dfc0 26 init();
yasuyuki 0:f0980556dfc0 27 }
yasuyuki 0:f0980556dfc0 28
yasuyuki 0:f0980556dfc0 29
yasuyuki 0:f0980556dfc0 30 void MCP4726::put(unsigned short a)
yasuyuki 0:f0980556dfc0 31 {
yasuyuki 0:f0980556dfc0 32
yasuyuki 0:f0980556dfc0 33 da.Val = a;
yasuyuki 0:f0980556dfc0 34 buf[0]=0x0F & da.byte.HB;
yasuyuki 0:f0980556dfc0 35 buf[1]=da.byte.LB;
yasuyuki 0:f0980556dfc0 36 _i2c.write(MCP4726_ADDR, buf, 2);
yasuyuki 0:f0980556dfc0 37
yasuyuki 0:f0980556dfc0 38 }
yasuyuki 0:f0980556dfc0 39
yasuyuki 0:f0980556dfc0 40
yasuyuki 0:f0980556dfc0 41 void MCP4726::init()
yasuyuki 0:f0980556dfc0 42 {
yasuyuki 0:f0980556dfc0 43
yasuyuki 0:f0980556dfc0 44 // Set fast mode
yasuyuki 0:f0980556dfc0 45 _i2c.frequency(400000); // default 100Kbps
yasuyuki 0:f0980556dfc0 46
yasuyuki 0:f0980556dfc0 47 // wait POR 60us+
yasuyuki 0:f0980556dfc0 48 wait_us(100);
yasuyuki 0:f0980556dfc0 49
yasuyuki 0:f0980556dfc0 50 // reset
yasuyuki 0:f0980556dfc0 51 // buf[0]=0x06;
yasuyuki 0:f0980556dfc0 52 // _i2c.write(0x00, buf, 1);
yasuyuki 0:f0980556dfc0 53 // wakeup
yasuyuki 0:f0980556dfc0 54 // buf[0]=0x09;
yasuyuki 0:f0980556dfc0 55 // _i2c.write(0x00, buf, 1);
yasuyuki 0:f0980556dfc0 56
yasuyuki 0:f0980556dfc0 57 // Set Configuration
yasuyuki 0:f0980556dfc0 58 buf[0]=0x80;
yasuyuki 0:f0980556dfc0 59 _i2c.write(MCP4726_ADDR, buf, 1);
yasuyuki 0:f0980556dfc0 60
yasuyuki 0:f0980556dfc0 61 }
yasuyuki 0:f0980556dfc0 62