2018年3月27日 星期二

【Linux Tool】i2c-tools 的使用方法, i2cdetect 、 i2cdump、i2cset

i2c-tools是一套OpenSource,透過這個tools我們可以透過i2c 介面與 IC 去作溝通

我們可以到下面的網站去抓整包的SourceCode,然後再透過你的toolchain去編譯出你板子上可以使用的工具,而編譯的方式我這邊就不贅述,我們這篇著重在tool如何使用

Download Path:
https://i2c.wiki.kernel.org/index.php/I2C_Tools

====================================================================
編譯完成後你應該會有i2cdetect、i2cdump、i2cset 這幾個執行檔

i2cdetect  ===> 會列出 i2c的 Bus上所有的Device
i2cdump   ===> 會列出 Device上所有的 Register值
i2cset       ===> 可寫入到某個 Bus上的某個 Device上的 Register值


以下是實際操作的範例:
#./i2cdetect -l     ===> 列出總共有幾個 i2c Bus












從上圖我們可以知道,這台設備上總共有 0 ~ 8 個 I2C Bus


另外我們也可以使用 i2cdetect 來確認 Bus上有哪些 Device
#./i2cdetect -r -y 1   ===> 列出 Bus 1上的所有Device













從上圖我們可以知道,這台設備的 I2C Bus1上,有4個Device,位置分別在 0x37, 0x4a, 0x4b, 0x50


接著我們來使用i2cdump來把某個 Register的值列出來吧!
#./i2cdump -f -y 1 0x50  ===> 列出 Bus1 的 Device 0x50的 Register值














最後我們使用 i2cset來更改Register的值吧!
#./i2cset -y 1 0x50 0x36 0x05  ===> 寫入 Bus1 的 Device 0x50的 0x36 Register值 寫入 0x05

註: i2cset的用法:
#./i2cset -y <bus> <device> <register> <value>

4 則留言:

  1. 請問在i2cdump一個感測器後,出現的資料不是ff就是XX是什麼問題呢?該感測器工作正常、使用arduino也能順利讀取到值。

    回覆刪除
    回覆
    1. https://imgur.com/GCQXmgF
      這是terminal的畫面

      刪除
  2. 抱歉,這個我就不太清楚了,但是FF有可能是預設值,XX我不清楚是甚麼~

    回覆刪除
  3. XX 可能連線異常
    或 Device 位址錯誤

    回覆刪除