Dom > Novosti > Sadržaj

FT_Hal_I2C.cpp

May 06, 2019

/ * Ova datoteka sadrži apis koji se odnosi na i2c * /

/ * Standard uključ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 ()

{\ T

Wire.begin ();

ft_delay (100);

return 0;

}


/ * api za čitanje n bajtova iz addr * /

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

{\ T

ft_uint16_t i;

kratki broj = 0;

ft_uint8_t writeResult = 0;

dok (dužina> 28)

{\ T

hal_rtc_i2c_read (addr, bafer, 28);

bafer + = 28;

addr + = 28;

dužina - = 28;

}


Wire.beginTransmission (0x6f); // prenosi na uređaj (0x23)

/ * adresni bajtovi za rtc su od 00 do 0xff * /

Wire.write (addr); // šalje bajt vrijednosti


/ * okončati prijenos, ali ne puštati sabirnicu - upotreba je slučajni podaci čitanje slučaj iz rtc * /

// držite sabirnicu da biste pročitali sljedeće podatke

if (0! = writeResult)

{\ T

// slučaj greške

}

Wire.requestFrom (0x6f, dužina);

za (i = 0; i

{\ T

/ * treba razmotriti timout *

// Blokiranje poziva - najmanje jedan bajt mora biti dostupan

bafer [i] = Wire.read ();

}

return 0;

}

/ * API za pisanje podataka na određenu lokaciju * /

ft_int16_t hal_rtc_i2c_write (ft_uint8_t addr, ft_uint8_t * bafer, ft_uint16_t dužina)

{\ T

ft_uint16_t i;

byte writeResult = 0;

if (0 == dužina)

{\ T

return -1;

}

/ * za čitanje niži bit mora biti postavljen na 1, a za pisanje na 0 * /

Wire.beginTransmission (0x6f);


/ * adresni bajtovi za rtc su od 00 do 0xff * /

Wire.write (addr); // šalje bajt vrijednosti

/ * provjera za svaki bajt * /

za (i = 0; i

{\ T

Wire.write (* buffer ++); // pošalji podatke u slave

}


/ * završi prenos po stop bitu * /

// završi prijenos postavljanjem zaustavnog bita

if (0! = writeResult)

{\ T

return writeResult;

}

return 0;

}

/ * Ništa izvan ovog * /