内核驱动 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。 数据字是地址的低位,与 data << 8 或运算。
cmd = address >> 8;
val = (address & 0xff) | (data << 8);
示例
要将 0x5a 写入地址 0x8003
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 是块读取命令。
有关详细信息,请参阅数据手册。