PCF8591的基本使用方法

本文介绍了PCF8591AD/DA转换芯片的工作原理、I2C通信方法,以及软件和硬件I2C驱动的实现。作者试图通过AD采样和DA输出功能测试,但发现AD读取时无法同时模拟输出,寻求解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PCF8591简单介绍

芯片的作用是ADDA转换,有16脚,其中AIN0~AIN3为模拟信号输入,A0~A3为芯片地址,SDA、SCL为I2C引脚,AOUT为DA输出端。

PCF8951的器件地址为1010A3A2A1A0(二进制),我买的芯片A0~A3都接GND,所以地址为0x90。

PCF8951使用方法

通过I2C通信读取数据和写入数据。

读取AD数据:发送第一个字节为器件地址,第二个字节为寄存器地址。然后再发送期间地址,此时读取数据即可读取出AD值。

写入DA数据:发送器件地址,发送寄存器地址,发送8位DA值。 

寄存器
D7 D6 D5 D4 D3 D2 D1 D0

D7:0

D6:模拟输出启动标志位(为1有效)。

D5&D4:模拟输入方式:00四路单端输入,01三鹿差分输入,10单端差分缓和输入,11两个差分输入。

D3:0

D2:自动增量标志位(为1有效)(开启时通道在AD转换完成自动递增)。

D1&D0:AD通道选择:00通道0,01通道1,10通道2,11通道3。

软件I2C代码部分

这里我使用STM32F103C8T6驱动该芯片,分别使用软件I2C和硬件I2C驱动该芯片,顺便了解两者区别。

MyI2C.h(软件I2C的代码)

void MyI2C_W_SCL(uint8_t BitValue)//封装函数,方便操作
{
	GPIO_WriteBit(GPIOA, I2C_SCL, (BitAction)BitValue);//进行位操作
}

void MyI2C_W_SDA(uint8_t BitValue)//封装函数,方便操作
{
	GPIO_WriteBit(GPIOA, I2C_SDA, (BitAction)BitValue);
}

uint8_t MyI2C_R_SDA(void)//封装函数,方便操作
{
	uint8_t BitValue;
	BitValue = GPIO_ReadInputDataBit(GPIOA, I2C_SDA);//位读取
	return BitValue;
}

void MyI2C_In
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值