2024/12/08

i2c-tools工具程式一瞥

摘要

本文概要記錄i2c-tools工具程式的安裝步驟,搭配MCP2221A通用序列匯流排橋接器、和DS3231高精度時鐘進行測試。

本文

Ubuntu作業系統的i2c-tools工具的安裝步驟如下,相關說明可以參考這裡、也就是執行sudo apt-get install i2c-tools

隨後的測試選用了MCP2221A通用序列匯流排橋接器進行之。

當MCP2221A連接至個人電腦時,Ubuntu 24.04將會載入預設的驅動程式;名稱為MCP2221 usb-i2c bridge

於MCP2221A官網下載軟體包裹並依據ReadMe文件來編譯驅動程式後,執行driver_load.sh腳本令Ubuntu 24.04載入官方驅動程式;名稱變更為i2c-mcp2221 at bus 003 device 014。這裡使用sudo i2cdetect -l指令查詢到的裝置名稱為i2c-0、即裝置編號為0。

MCP2221A的I2C介面連接至I2C slave之前,sudo i2cdetect -y 0指令對編號0查詢I2C slave得到的皆為--的回應。直到MCP2221A的I2C介面連接至I2C slave、也就是這裡選用的DS3231高精度時鐘之後,sudo i2cdetect -y 0指令對編號0查詢I2C slave在0x68得到非--的回應。

接下來就可以透過MCP2221A來讀取DS3231各暫存器的內容,例如sudo i2cget -y 0 0x68 0x00讀取第0號暫存器的內容、而sudo i2cget -y 0 0x68 0x01讀取第1號暫存器的內容,再例如sudo i2cdump -y -r 0x00-0x12 0 0x68可以傾印(整批讀取)從0x00至0x12的暫存器內容,至於暫存器的有效範圍需要參考datasheet

當然,也可以透過time來計算傾印的耗用時間(即time sudo i2cdump -y -r 0x00-0x12 0 0x68 b)、以及可以使用shell的迴圈來每隔一定的時間來傾印暫存器內容(while sleep 1.5; do sudo i2cdump -y -r 0x00-0x12 0 0x68 b; done)來確認DS3231高精度時鐘的計時行為。

完成。


參考文獻

https://b8807053.pixnet.net/blog/post/347698301
https://ww1.microchip.com/downloads/en/DeviceDoc/mcp2221_0_1.tar.gz
https://www.analog.com/media/en/technical-documentation/data-sheets/DS3231.pdf
https://stackoverflow.com/questions/1289026/syntax-for-a-single-line-while-loop-in-bash


沒有留言:

張貼留言