MCP4726 library
See http://developer.mbed.org/users/yasuyuki/notebook/MCP4726/
MCP4726.cpp@0:f0980556dfc0, 2014-10-15 (annotated)
- Committer:
- yasuyuki
- Date:
- Wed Oct 15 14:42:50 2014 +0000
- Revision:
- 0:f0980556dfc0
first release
Who changed what in which revision?
User | Revision | Line number | New 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 |