在 Linux 中,要使用 SMBus(System Management Bus)讀取數(shù)據(jù),你需要使用 i2c-tools 包中的一些命令行工具
首先,確保你的 Linux 系統(tǒng)已經(jīng)安裝了 i2c-tools。如果沒有,請使用以下命令安裝:
對于基于 Debian 的系統(tǒng)(如 Ubuntu):
sudo apt-get update
sudo apt-get install i2c-tools
對于基于 RHEL 的系統(tǒng)(如 CentOS、Fedora):
sudo yum install i2c-tools
加載 I2C 內(nèi)核模塊。根據(jù)你的硬件,你可能需要加載不同的模塊。例如,對于 Raspberry Pi,你需要加載 i2c-bcm2708
和 i2c-dev
模塊:
sudo modprobe i2c-bcm2708
sudo modprobe i2c-dev
使用 i2cdetect
命令檢測連接到 I2C 總線的設(shè)備。這將顯示設(shè)備的地址和類型。例如,要檢測 I2C 總線 1 上的設(shè)備,請運(yùn)行:
sudo i2cdetect -y 1
使用 i2cget
命令讀取 SMBus 設(shè)備的數(shù)據(jù)。例如,要從地址為 0x40 的設(shè)備的寄存器 0x00 讀取一個字節(jié),請運(yùn)行:
sudo i2cget -y 1 0x40 0x00
這里,-y
參數(shù)表示不提示確認(rèn),1
是 I2C 總線編號,0x40
是設(shè)備地址,0x00
是要讀取的寄存器地址。
如果你需要連續(xù)讀取多個字節(jié),可以使用 i2cdump
命令。例如,要從地址為 0x40 的設(shè)備的寄存器 0x00 讀取 16 個字節(jié),請運(yùn)行:
sudo i2cdump -y 1 0x40 0x00 16
這里,16
是要讀取的字節(jié)數(shù)。
通過這些步驟,你應(yīng)該能夠在 Linux 中使用 SMBus 讀取數(shù)據(jù)。請注意,不同的設(shè)備可能需要不同的命令和參數(shù)。請查閱設(shè)備的文檔以獲取更多信息。