yasuyuki onodera / MCP4726

Dependents:   mbed_MCP4726

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers MCP4726.cpp Source File

MCP4726.cpp

00001 //**********************
00002 // MCP4726.cpp for mbed
00003 //
00004 // MCP4726 mcp4726(P0_5,P0_4);
00005 // or
00006 // I2C i2c(P0_5,P0_4);
00007 // MCP4726 mcp4726(i2c);
00008 //
00009 // Max Frequency with I2C mode
00010 // Standard mode   3.4KHz=100KHz / 29bits
00011 // Fast mode      13.8KHz=400KHz / 29bits
00012 // Fast mode Plus 34.5KHz=1MHz / 29bits
00013 // HS mode        117KHz =3.4MHz / 29bits
00014 //
00015 // (C)Copyright 2014 All rights reserved by Y.Onodera
00016 // http://einstlab.web.fc2.com
00017 //**********************
00018 
00019 #include "mbed.h"
00020 #include "MCP4726.h"
00021 
00022 MCP4726::MCP4726 (PinName sda, PinName scl) : _i2c(sda, scl) {
00023     init();
00024 }
00025 MCP4726::MCP4726 (I2C& p_i2c) : _i2c(p_i2c) {
00026     init();
00027 }
00028 
00029 
00030 void MCP4726::put(unsigned short a)
00031 {
00032 
00033     da.Val = a;
00034     buf[0]=0x0F & da.byte.HB;
00035     buf[1]=da.byte.LB;
00036     _i2c.write(MCP4726_ADDR, buf, 2);
00037  
00038 }
00039 
00040 
00041 void MCP4726::init()
00042 {
00043 
00044     // Set fast mode
00045     _i2c.frequency(400000);  // default 100Kbps
00046 
00047     // wait POR 60us+
00048     wait_us(100);
00049 
00050     // reset
00051 //    buf[0]=0x06;
00052 //    _i2c.write(0x00, buf, 1);
00053     // wakeup
00054 //    buf[0]=0x09;
00055 //    _i2c.write(0x00, buf, 1);
00056         
00057     // Set Configuration
00058     buf[0]=0x80;
00059     _i2c.write(MCP4726_ADDR, buf, 1);
00060 
00061 }
00062