hidaka sato / i2cmasterNoInterrupt
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers i2cmaster.cpp Source File

i2cmaster.cpp

00001 #include "i2cmaster.h"
00002 
00003 i2c::i2c(PinName sda, PinName scl) : I2C(sda, scl)
00004 {
00005     frequency(400000);
00006 }
00007 
00008 void i2c::sendi2c(char addr, char registar, int data, int size)
00009 {
00010     if(size > 0)             size = size;
00011     else if(data > 0xFFFFFF) size = 4;
00012     else if(data > 0xFFFF)   size = 3;
00013     else if(data > 0xFF)     size = 2;
00014     else                     size = 1;
00015     char DATA[4] = {data & 0xFF, (data>>8) & 0xFF, (data>>16) & 0xFF, (data>>24) & 0xFF};
00016     char i2cData[3] = {size, registar, SendData};
00017     write(addr, i2cData, 3);
00018     write(addr, DATA, size);
00019 }
00020 
00021 int i2c::getSlaveData(char addr, char registar, int size)
00022 {
00023     char i2cData[3] = {size, registar, RequestData};
00024     char getData[12] = {};
00025     write(addr, i2cData, 3);
00026     read(addr, getData, size);
00027     return getData[0] | (getData[1] << 8) | (getData[2] << 16) | (getData[3] << 24);
00028 }