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>
請問在i2cdump一個感測器後,出現的資料不是ff就是XX是什麼問題呢?該感測器工作正常、使用arduino也能順利讀取到值。
回覆刪除https://imgur.com/GCQXmgF
刪除這是terminal的畫面
抱歉,這個我就不太清楚了,但是FF有可能是預設值,XX我不清楚是甚麼~
回覆刪除XX 可能連線異常
回覆刪除或 Device 位址錯誤