核心驅動 max6875¶
支援的晶片
Maxim MAX6874, MAX6875
字首:‘max6875’
掃描地址:無(見下文)
作者:Ben Gardner <bgardner@wabtec.com>
描述¶
Maxim MAX6875 是一款 EEPROM 可程式設計的電源時序器/監控器。如果正確接線,它提供可作為看門狗的定時輸出。它還提供 512 位元組的使用者 EEPROM。
復位時,MAX6875 將配置 EEPROM 讀入其配置暫存器。晶片隨後根據暫存器中的值開始執行。
Maxim MAX6874 是一款類似且大部分相容的裝置,具有更多的輸入和輸出
vin |
gpi |
vout |
|
|---|---|---|---|
MAX6874 |
6 |
4 |
8 |
MAX6875 |
4 |
3 |
5 |
更多資訊請參閱資料手冊。
Sysfs 條目¶
eeprom - 512 位元組的使用者自定義 EEPROM 空間。
一般說明¶
MAX6875 的有效地址為 0x50 和 0x52。
MAX6874 的有效地址為 0x50、0x52、0x54 和 0x56。
驅動程式不探測任何地址,因此您需要顯式例項化裝置。
示例
$ modprobe max6875
$ echo max6875 0x50 > /sys/bus/i2c/devices/i2c-0/new_device
MAX6874/MAX6875 忽略地址位 0,因此此驅動程式會附加到多個地址。例如,對於地址 0x50,它還會保留 0x51。偶數地址例項稱為‘max6875’,奇數地址例項稱為‘dummy’。
使用 i2c-dev 對晶片進行程式設計¶
使用 i2c-dev 介面來訪問和程式設計晶片。
讀寫操作根據地址範圍的不同而有所不同。
配置暫存器位於地址 0x00 - 0x45。
使用 i2c_smbus_write_byte_data() 寫入暫存器,並使用 i2c_smbus_read_byte_data() 讀取暫存器。
命令是暫存器號。
示例
向暫存器 0x45 寫入 1
i2c_smbus_write_byte_data(fd, 0x45, 1);
讀取暫存器 0x45
value = i2c_smbus_read_byte_data(fd, 0x45);
配置 EEPROM 位於地址 0x8000 - 0x8045。
使用者 EEPROM 位於地址 0x8100 - 0x82ff。
使用 i2c_smbus_write_word_data() 向 EEPROM 寫入一個位元組。
命令是地址的高位元組:0x80、0x81 或 0x82。資料字是地址的低位元組與資料 << 8 的或運算結果
cmd = address >> 8;
val = (address & 0xff) | (data << 8);
示例
向地址 0x8003 寫入 0x5a
i2c_smbus_write_word_data(fd, 0x80, 0x5a03);
從 EEPROM 讀取資料略微複雜。
使用 i2c_smbus_write_byte_data() 設定讀取地址,然後使用 i2c_smbus_read_byte() 或 i2c_smbus_read_i2c_block_data() 讀取資料。
示例
要從偏移量 0x8100 開始讀取資料,首先設定地址
i2c_smbus_write_byte_data(fd, 0x81, 0x00);
然後讀取資料
value = i2c_smbus_read_byte(fd);
或
count = i2c_smbus_read_i2c_block_data(fd, 0x84, 16, buffer);
塊讀取應讀取 16 位元組。
0x84 是塊讀取命令。
更多詳細資訊請參閱資料手冊。