PCF8591 AD-DA 转换模块 模块原理图,相关代码 树莓派3

PCF8591 AD-DA 转换模块,低功耗,8-bit CMOS。具有4个模拟输入、1个模拟输出和1个串行I²C总线接口。内置跟踪保持、8-bit模数转换和8-bit数模转换,速率由I2C速率决定。文章内容包括:模块原理图,相关代码。

模拟输入:10-5,9-4,8-3,7-2 四组,AOUT为D/A 转换输出端。(原理图仅供参考)

PCF8591 AD-DA

引脚信息

AIN0~AIN3:模拟信号输入端。PCF8591

引脚A0~A2:引脚地址端。

VDD、VSS:电源端。(2.5~6V)

SDA、SCL:I2C 总线的数据线、时钟线。

OSC:外部时钟输入端,内部时钟输出端。

EXT:内部、外部时钟选择线,使用内部时钟时 EXT 接地。

AGND:模拟信号地。

AOUT:D/A 转换输出端。

VREF:基准电源端。

查询i2c设备的地址:gpio i2cdetect (0x27为1602A屏幕,0x84为PCF8591)
1
2
3
4
5
6
7
8
9
10
pi@raspberrypi:~/Documents/code/13-PCF8591AD-DA实验/c $ gpio i2cdetect
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- 27 -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

相关代码:wiringPiNewNode: pinBase of 0 is < 64(扩展pin必须大于64)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <wiringPi.h>
#include <pcf8591.h> //PCF8591头文件

#define PCF 120 //设定wiringPiNewNode

int main (void)
{
int value ;
wiringPiSetup () ;
// Setup pcf8591 on base pin 120, and address 0x48
pcf8591Setup (PCF, 0x48) ;
while(1) // loop forever
{
value = analogRead (PCF + 3) ;
printf("%d\n", value);
analogWrite (PCF + 0, value) ;
delay (10) ;
}
return 0 ;
}

更多内容:

从入门到放弃的学习RASPBERRYPI https://tl8517.com/category/raspberrypi/

文章参考:

https://blog.csdn.net/xukai871105/article/details/18033945

https://baike.baidu.com/item/PCF8591/3916799?fr=aladdin