中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux I2C App開發的示例分析

發布時間:2021-10-21 17:12:52 來源:億速云 閱讀:176 作者:柒染 欄目:互聯網科技

今天就跟大家聊聊有關Linux I2C App開發的示例分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

1 , 頭文件

/linux/i2c-dev.h

2 , 打開文件,請看示例代碼

int file;
  int adapter_nr = 1; /* I2C適配器編號 */
  char filename[20];
 
  snprintf(filename, 19, "/dev/i2c-%d", adapter_nr);
  file = open(filename, O_RDWR);
  if (file < 0) {
    /* 打開失敗 */
    exit(1);
}

3 , 指定I2C從設備地址

int addr = 0x40; /* I2C 從機地址 */
  if (ioctl(file, I2C_SLAVE, addr) < 0) {
    /* 打開失敗 */
    exit(1);
}

4 , 使用SMBUS API 訪問設備

5 , SMBUS 詳細接口時序說明

標記符長度說明
S1 bitI2C啟動
P1 bitI2C停止
Rd/Wr1 bit控制字中的讀寫標志位,讀操作為1,寫操作為0
A, NA1 bit應答標志
Addr7 bits7位I2C地址
Data8 bits字節數據
Comm8 bits命令字節,可理解為I2C設備寄存器地址
[..]N charI2C設備返回的數據

6  , 相關接口及相應時序說明

【1】__s32 i2c_smbus_write_quick(int file, __u8 value);
發送一個寫控制字,可用于測試I2C設備是否存在。
S Addr Rd [A] [Data] NA P

【2】__s32 i2c_smbus_read_byte(int file);
發送一個讀控制字,并從I2C設備中讀取一個字節。
S Addr Rd [A] [Data] NA P

【3】__s32 i2c_smbus_write_byte(int file, __u8 value);
發送一個寫控制字,并向I2C設備中寫入一個字節。
S Addr Wr [A] Data [A] P

【4】__s32 i2c_smbus_read_byte_data(int file, __u8 command);
向I2C設備發送一個寫控制字+控制指令(寄存器地址),再發送一個讀控制字,此時I2C從設備內部的讀寫指針轉移到指定的位置,并返回一個字節,最后返回一個無應答NA。
S Addr Wr [A] Comm [A] S Addr Rd [A] [Data] NA P

【5】__s32 i2c_smbus_write_byte_data(int file, __u8 command, __u8 value);
向I2C設備發送一個寫控制字+控制指令(寄存器地址),緊接著發送指令內容(寄存器內容,單字節)。
S Addr Wr [A] Comm [A] Data [A] P

【6】__s32 i2c_smbus_read_i2c_block_data(int file, __u8 command, __u8 *values);
向I2C設備發送一個寫控制字+控制指令(寄存器地址),再發送一個讀控制字,此時I2C從設備內部的讀寫指針轉移到指定的位置,并連續返回多個字節,I2C主機讀取到一定數量字節內容之后發送無應答NA。
S Addr Wr [A] Comm [A] S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P

【7】__s32 i2c_smbus_write_i2c_block_data(int file, __u8 command, __u8 length, __u8 *values);
向I2C設備發送一個寫控制字+控制指令(寄存器地址),接著發送發送指令內容(寄存器內容,多字節)
S Addr Wr [A] Comm [A] Data [A] Data [A] ... [A] Data [A] P

【注意點1】
這些函數如果返回-1代表操作失敗。在一些具有寫功能的函數中,返回0代表操作成功,在具有讀功能的函數中,返回讀取的字節數(除i2c_smbus_read_block_data)。讀塊(block)操作時不應超過32個字節。

看完上述內容,你們對Linux I2C App開發的示例分析有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沁源县| 金平| 彭阳县| 梁河县| 志丹县| 新邵县| 府谷县| 河源市| 大丰市| 溧阳市| 平泉县| 德保县| 郯城县| 油尖旺区| 敦煌市| 蚌埠市| 卓资县| 革吉县| 庆安县| 思南县| 原平市| 义马市| 青川县| 日土县| 甘泉县| 丰宁| 岗巴县| 海原县| 河池市| 莱西市| 桑日县| 桃江县| 临安市| 佛学| 金川县| 昭平县| 大冶市| 兴隆县| 天门市| 涞水县| 宁远县|