Dom > Novice > Vsebine

FT_Hal_I2C.cpp

May 06, 2019

/ * Ta datoteka vsebuje apis, povezan z i2c * /

/ * Standard vključuje * /

#include "FT_Platform.h"

#include "..WireWire.h"

#if 0

#include "FT_DataTypes.h"

#include "FT_Gpu.h"

#ifdef ARDUINO_PLATFORM

#include

#include

#include

#include

#include

#endif

#endif

#include "FT_Hal_I2C.h"


ft_int16_t hal_rtc_i2c_init ()

{

Wire.begin ();

ft_delay (100);

return 0;

}


/ * api za branje n bajtov od addr * /

ft_int16_t hal_rtc_i2c_read (ft_uint8_t addr, ft_uint8_t * buffer, ft_uint16_t dolžina)

{

ft_uint16_t i;

kratko število = 0;

ft_uint8_t writeResult = 0;

medtem (dolžina> 28)

{

hal_rtc_i2c_read (addr, buffer, 28);

pufer + = 28;

addr + = 28;

dolžina - = 28;

}


Wire.beginTransmission (0x6f); // posredovanje v napravo (0x23)

/ * naslovni bajti za rtc so od 00 do 0xff * /

Wire.write (addr); // pošlje bajt vrednosti


/ * konec prenosa, vendar ne spusti avtobusa - uporaba je naključno branje podatkov iz rtc * /

writeResult = Wire.endTransmission (false); // držite vodilo za branje naslednjih podatkov

if (0! = writeResult)

{

vrne -1; // napaka

}

Wire.requestFrom (0x6f, dolžina); // dolžine zahtevanih bajtov od pomožne naprave in konča prenos po tem

za (i = 0; i

{

/ * tukaj je treba upoštevati časovno omejitev * /

// blokiranje klica - na voljo mora biti vsaj en bajt

medpomnilnik [i] = Wire.read ();

}

return 0;

}

/ * API za zapis podatkov na določeno lokacijo * /

ft_int16_t hal_rtc_i2c_write (ft_uint8_t naslovnik, ft_uint8_t * buffer, ft_uint16_t dolžina)

{

ft_uint16_t i;

byte writeResult = 0;

če (0 == dolžina)

{

vrnitev -1;

}

/ * za branje spodnji bit mora biti nastavljen na 1 in za zapis pisanja na 0 * /

Wire.beginTransmission (0x6f);


/ * naslovni bajti za rtc so od 00 do 0xff * /

Wire.write (addr); // pošlje bajt vrednosti

/ * preverite za vsak bajt * /

za (i = 0; i

{

Wire.write (* buffer ++); // pošilja podatke v podrejeno

}


/ * konec prenosa s stop bitom * /

// konča prenos z nastavitvijo zaustavitvenega bita

if (0! = writeResult)

{

return writeResult;

}

return 0;

}

/ * Nič več od tega * /