内核驱动 pcf8591

支持的芯片

作者

描述

PCF8591 是由飞利浦半导体(现为恩智浦)生产的用于 I2C 总线的 8 位 A/D 和 D/A 转换器(4 个模拟输入和一个模拟输出)。它旨在为多达 4 个独立的设备提供字节 I2C 接口。

PCF8591 有 4 个模拟输入,可编程为单端或差分输入

  • 模式 0四个单端输入

    引脚 AIN0 到 AIN3 是通道 0 到 3 的单端输入

  • 模式 1三个差分输入

    引脚 AIN3 是公共负差分输入,引脚 AIN0 到 AIN2 是通道 0 到 2 的正差分输入

  • 模式 2单端和差分混合

    引脚 AIN0 和 AIN1 是通道 0 和 1 的单端输入,引脚 AIN2 是通道 3 的正差分输入,引脚 AIN3 是通道 3 的负差分输入

  • 模式 3两个差分输入

    引脚 AIN0 是通道 0 的正差分输入,引脚 AIN1 是通道 0 的负差分输入,引脚 AIN2 是通道 1 的正差分输入,引脚 AIN3 是通道 1 的负差分输入

有关详细信息,请参阅数据手册。

模块参数

  • input_mode int

    模拟输入模式

    • 0 = 四个单端输入

    • 1 = 三个差分输入

    • 2 = 单端和差分混合

    • 3 = 两个差分输入

通过 /sys 接口访问 PCF8591

PCF8591 根本无法检测到!因此,驱动程序甚至不会尝试。您必须通过平台数据或使用 sysfs 接口显式实例化相关地址(在 [0x48..0x4f] 范围内)的设备。有关详细信息,请参阅如何实例化 I2C 设备

正在为每个实例化的 PCF8591 创建目录

/sys/bus/i2c/devices/<0>-<1>/

其中 <0> 是芯片连接的总线(例如 i2c-0),<1> 是芯片地址 ([48..4f])

在这些目录中,有这样的文件

in0_input, in1_input, in2_input, in3_input, out0_enable, out0_output, name

Name 包含芯片名称。

in0_input、in1_input、in2_input 和 in3_input 文件是 RO。读取会给出相应通道的值。根据当前的模拟输入配置,文件 in2_input 和 in3_input 可能不存在。单端输入的值范围为 0 到 255,差分输入的值范围为 -128 到 +127(8 位 ADC)。

out0_enable 文件是 RW。读取会给出“1”表示启用模拟输出,给出“0”表示禁用模拟输出。写入接受相应的“0”和“1”。

out0_output 文件是 RW。写入 0 到 255 之间的数字(8 位 DAC)会将该值发送到数模转换器。请注意,仅当 aout0_enable 等于 1 时,AOUT 引脚上才会出现电压。读取会返回上次写入的值。