内核驱动 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 是块读取命令。

更多详细信息请参阅数据手册。