亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

东至县| 阜城县| 德州市| 班玛县| 涿鹿县| 德令哈市| 仁寿县| 临桂县| 侯马市| 中西区| 南宁市| 阿拉善盟| 合作市| 无极县| 铜鼓县| 大化| 涞源县| 益阳市| 宁远县| 鸡泽县| 镶黄旗| 繁昌县| 芜湖市| 舒兰市| 抚顺市| 铁岭市| 广平县| 永善县| 辉县市| 蛟河市| 大方县| 桐城市| 澎湖县| 嘉鱼县| 林甸县| 若羌县| 双城市| 金乡县| 山东省| 康定县| 元江|