内核驱动 pcf8591¶
支持的芯片
飞利浦/恩智浦 PCF8591
前缀:'pcf8591'
扫描地址:无
数据手册:可在恩智浦网站公开获取
- 作者
Aurelien Jarno <aurelien@aurel32.net>
Jan M. Sendler <sendler@sendler.de> 的宝贵贡献,
Jean Delvare <jdelvare@suse.de>
描述¶
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 引脚上才会出现电压。读取会返回上次写入的值。