Casa > Notícies > Contingut

FT_Hal_I2C.CPP

May 06, 2019

/ * Aquest fitxer conté apis relacionats amb i2c * /

/ * Estàndard inclou * /

#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);

tornar 0;

}


/ * api llegir n bytes de addr * /

ft_int16_t hal_rtc_i2c_read (ft_uint8_t addr, ft_uint8_t * memòria intermèdia, és ft_uint16_t llarg)

{

ft_uint16_t m;

curt comte = 0;

ft_uint8_t writeResult = 0;

mentre (longitud > 28)

{

hal_rtc_i2c_read(addr,buffer,28);

memòria intermèdia + = 28;

+ tipus = 28;

longitud = 28;

}


Wire.beginTransmission(0x6f); transmetre al mecanisme (0x23)

  

/ * bytes adreça per rtc és de 00 a 0xff * /

Wire.Write(addr);        Envia byte de valor


/ * acabar la transmissió però no ho deixeu anar l'autobús - ús és dades aleatòries, llegir el cas d'ús de rtc * /

writeResult = Wire.endTransmission (false); //hold l'autobús per llegir les dades següents

 

Si (0! = writeResult)

{

-1 retorn; //error cas

}

Wire.requestFrom (0x6f, longitud); / / sol·licitar bytes de longitud del dispositiu d'esclau i acabar la transmissió després d'això

per a (m = 0; jo<>

{

/ * cal considerar aquí timout * /

While(0 == Wire.available()); //blocking trucada - com a mínim un byte han de disposar

memòria intermèdia [i] = Wire.read();

}

tornar 0;

}

/ * API per escriure les dades en lloc determinat * /

ft_int16_t hal_rtc_i2c_write (ft_uint8_t addr, ft_uint8_t * memòria intermèdia, és ft_uint16_t llarg)

{

ft_uint16_t m;

writeResult de byte = 0;

if(0 == length)

{

tornar -1;

}

/ * per llegir el bit inferior cal definir a 1 i per escriure posar a 0 * /

Wire.beginTransmission(0x6f);


/ * bytes adreça per rtc és de 00 a 0xff * /

Wire.Write(addr);        Envia byte de valor

  

/ * buscar cada byte * /

per a (m = 0; jo<>

{

Wire.Write(*buffer++); //send les dades a l'esclau

}


/ * acabar la transmissió per bit parada * /

writeResult = Wire.endTransmission (); //end la transmissió posant la mica de parada

  

Si (0! = writeResult)

{

tornar writeResult;

}

tornar 0;

}

/ * Res més enllà d'aquest * /