linux i2c 裝置節點讀寫

2022-09-16 18:21:14 字數 1604 閱讀 2249

最近需要操作24c02,封裝了一下函式方便以後操作。

原始碼:

#include #include #include #include #include #include #include #include #define i2c_default_timeout     1

#define i2c_default_retry 3

/* * fd : 檔案描述符

* timeout : 傳送超時時間

* retry : 重**送次數

*///重**送次數可以設多一點,在除錯的時候,只設定了一次,導致有時候傳送會失敗。

int i2c_set(int fd, unsigned int timeout, unsigned int retry)

/* * fd : 檔案描述符

* addr : i2c的裝置位址

* reg : 暫存器位址

* val : 要寫的資料

*/int i2c_byte_write(int fd, unsigned char addr, unsigned char reg, unsigned char val)

/*

* fd : 檔案描述符

* addr : i2c的裝置位址

* reg : 暫存器位址

* val : 要寫的資料

* len : 資料長度

* 24c02以8位元組為1個page,如果在乙個page裡面寫,寫的位元組長度超過這個page的末尾,

* 就會從page的開頭寫,覆蓋開頭的內容

*/int i2c_nbytes_write(int fd, unsigned char addr, unsigned char reg, unsigned char *val, int len)

messages.buf[0] = reg;

for (i = 0; i < len; i++)

ret = ioctl(fd, i2c_rdwr, (unsigned long)&packets);//讀出來

if (ret < 0)

err:

free(messages.buf);

return ret;

}/*

* fd : 檔案描述符

* addr : i2c的裝置位址

* val : 儲存讀取資料

*/int i2c_byte_read(int fd, unsigned char addr, unsigned char *val)

/* * fd : 檔案描述符

* addr : i2c的裝置位址

* reg : 暫存器位址

* val : 儲存讀取的資料

* len : 讀取資料的長度

* 描述 :讀取達到eeprom的末尾時,會讀取最開頭的位元組

*/int i2c_nbytes_read(int fd, unsigned char addr, unsigned char reg, unsigned char *val, int len)

tony liu

2016-9-23, shenzhen

Linux I2C裝置驅動學習

一 i2c 簡介 1 i2c簡介 a 優點 i2c匯流排僅用兩根訊號線 scl sda 就實現了裝置之間的資料互動,極大簡化了對硬體資源和pcb板佈線空間的占用 b 用途 eeprom 實時鐘 小型lcd等裝置與cpu的介面中 2 i2c驅動體系 i2c框架 通用 適應性強 i2c核心 i2c匯流排...

linux I2C裝置驅動例項 EEPROM

開發板 優龍公司的fs2410 核心版本 linux2.6.28.6 開發環境 ubuntu12.04 交叉編譯器 arm none linux gnueabi gcc 4.3.2 目標 在fs2410上驅動eeprom,實現應用層對eeprom的讀寫操作 一 linux2.6.28.6 系統上 i...

Linux I2C裝置驅動編寫(一)

在linux驅動中i2c系統中主要包含以下幾個成員 i2c adapter 即i2c介面卡 i2c driver 某個i2c裝置的裝置驅動,可以以driver理解。i2c client 某個i2c裝置的裝置宣告,可以以device理解。是cpu整合或外接的i2c介面卡,用來控制各種i2c從裝置,其驅...