Dom > Vijesti > 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

#završi ako

#završi ako

#include "FT_Hal_I2C.h"


ft_int16_t hal_rtc_i2c_init ()

{

Wire.begin ();

ft_delay (100);

return 0;

}


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

ft_int16_t hal_rtc_i2c_read (ft_uint8_t addr, ft_uint8_t * međuspremnik, ft_uint16_t duljina)

{

ft_uint16_t i;

kratki broj = 0;

ft_uint8_t writeResult = 0;

dok (duljina> 28)

{

hal_rtc_i2c_read (addr, pufer, 28);

pufer + = 28;

addr + = 28;

duljina - = 28;

}


Wire.beginTransmission (0x6f); // prijenos 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 * /

writeResult = Wire.endTransmission (false); // držite bus kako biste pročitali sljedeće podatke

if (0! = writeResult)

{

povratak -1; // slučaj pogreške

}

Wire.requestFrom (0x6f, duljina); // bajtovi zahtjeva duljine od podređenog uređaja i završetak prijenosa nakon toga

za (i = 0; i

{

/ * potrebno je razmotriti trenutak *

// blokiranje poziva - najmanje jedan bajt mora biti dostupan

bafer [i] = Wire.read ();

}

return 0;

}

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

ft_int16_t hal_rtc_i2c_write (ft_uint8_t addr, ft_uint8_t * međuspremnik, ft_uint16_t duljina)

{

ft_uint16_t i;

bajt writeResult = 0;

ako (0 == duljina)

{

povratak -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

{

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

}


/ * završiti prijenos stop stop * /

// završi prijenos postavljanjem zaustavnog bita

if (0! = writeResult)

{

return writeResult;

}

return 0;

}

/ * Ništa izvan ovog * /