הבית > חֲדָשׁוֹת > תוכן

FT_Hal_I2C.cpp

May 06, 2019

/ * הקובץ מכיל apis קשור ל i2c * /

/ * רגיל כולל * /

#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 לקרוא n בתים מ addr * /

ft_int16_t hal_rtc_i2c_read (ft_uint8_t addr, ft_uint8_t * buffer, ft_uint16_t length)

{

ft_uint16_t i;

ספירה קצרה = 0;

ft_uint8_t writeResult = 0;

בעוד (אורך> 28)

{

hal_rtc_i2c_read (addr, buffer, 28);

מאגר + 28;

addr + = 28;

אורך - = 28;

}


Wire.beginTransmission (0x6f); // transmit to device (0x23)

/ * כתובת בתים עבור rtc הם מ 00 ל 0xff * /

Wire.write (addr); // שולח בית ערך


/ * לסיים את השידור אבל לא לשחרר את האוטובוס - שימוש הוא נתונים אקראיים לקרוא מקרה שימוש מ rtc * /

WriteResult = Wire.endTransmission (false); / להחזיק את האוטובוס כדי לקרוא את הנתונים הבאים

אם (0! = writeResult)

{

Return -1; במקרה השגיאה

}

Wire.requestFrom (0x6f, אורך); // בקשת אורך בתים מהתקן העבד ולסיים את השידור לאחר מכן

עבור (i = 0; i <אורך; i="" +="">

{

/ * צריך לשקול פסק זמן כאן * /

בעוד (0 == Wire.available ()); / / חסימת שיחה - לפחות בית אחד חייב להיות זמין

מאגר [i] = Wire.read ();

}

Return 0;

}

/ * API לכתוב נתונים במיקום מסוים * /

ft_int16_t hal_rtc_i2c_write (ft_uint8_t addr, ft_uint8_t * buffer, ft_uint16_t length)

{

ft_uint16_t i;

בייט writeResult = 0;

אם (0 == אורך)

{

לחזור -1;

}

/ * עבור לקרוא את החלק התחתון צריך להיות מוגדר 1 עבור לכתוב להגדיר 0 * /

Wire.beginTransmission (0x6f);


/ * כתובת בתים עבור rtc הם מ 00 ל 0xff * /

Wire.write (addr); // שולח בית ערך

/ * לבדוק עבור כל בית * /

עבור (i = 0; i <אורך; i="" +="">

{

Wire.write (* מאגר + +); / / לשלוח את הנתונים לעבד

}


/ * לסיים את השידור על ידי bit bit * /

.RRult = Wire.endTransmission (); / / / לסיים את השידור על ידי הגדרת סיבית לעצור

אם (0! = writeResult)

{

לחזור לכתוב

}

Return 0;

}

/ * שום דבר מעבר לכך * /