蓝桥杯笔记之 PCF8591驱动程序(十)

一、芯片介绍

1.原理图

PCF8591原理图

2.引脚功能介绍

引脚功能
AIN0-AIN3模拟信号输入端
A0-A2引脚地址端
VDD,VSS电源端
SDA,SCLiic总线的数据线,时钟线
OSC内部时钟输入端,外部时钟输入端
EXT内部外部时钟选择,接地选择内部时钟
AGND模拟信号地
AOUTD/A转换输出端
VREF基准电源端

3.主要参数

AD的位数:表明这个AD共有2^n个刻度,8位AD,输出的刻度是0~255。 (255=2^8-1)

分辨率(转换精度):就是AD能够分辨的最小的模拟量变化,假设5.10V的系统用8位的AD采样,那么它能分辨的最小电压就是5.10/255=0.02V。

INL:Interger NONliner 积分非线性度,表示了ADC器件在所有的数值点上对应的模拟值,和真实值之间误差最大的那一点的误差值。也就是,输出数值偏离线性最大的距离。单位是LSB(即最低位所表示的量)。比如12位ADC:TLC2543,INL值为1LSB。那么,如果基准4.095V,测某电压得的转换结果是1000,那么,真实电压值可能分布在0.999~1.001V之间。这里是这样这样计算得来的,12位ADC最小分辨率是1/4095。在这里即为4.095*(1/4095)=0.001V。那么1LSB就为0.001V,。转换结果为1000即为1V。

DNL:Differencial NonLiner-差分非线性度,理论上说,模数器件相邻量个数据之间,模拟量的差值都是一样的。就相一把疏密均匀的尺子。但实际并不如此。一把分辨率1毫米的尺子,相邻两刻度之间也不可能都是1毫米整。那么,ADC相邻两刻度之间最大的差异就叫差分非线性值(Differencial NonLiner)。DNL值如果大于1,那么这个ADC甚至不能保证是单调的,输入电压增大,在某个点数值反而会减小。这种现象在SAR(逐位比较)型ADC中很常见。

基准源:有内部基准源、外部基准源等等。
获取基准电压的一般有三种,第一种:直接连接电源,将电源作为基准电压。第二种:通过基准电压芯片获取,如REF3140,还有价格便宜一些的TL431系列。第三种:使用ad转换芯片内部基准电压。,,,推荐使用第二种

转换速率(采样速率):也就是转换周期的倒数,转换周期就是完成一次AD转换所需的时间。

三.原理分析(A/D)

1. pcf8591是一个八位转换器所以其分辨率为Vref/256
2. 返回结果为
在这里插入图片描述

3.进行AD转换时,操作步骤为
(1) 起始信号
(2) 向器件发送地址(写)
(3) 接收应答
(4) 发送命令字
(5) 接收应答

(6) 重新发送起始信号
(7) 发送地址(读)
(8) 等待应答
(9) 读数据
(10) 停止信号

4.写时序图
写时序

5. 读时序图
读时序图
6. 地址
地址字符
高四位固定为1001
D0位为读写标志位(1为读,0为写)
D3,D2,D1为器件地址位

7.命令字
命令字符
最高位固定为0
D6位为模拟输出标志位(进行AD转换时置0就行)
D5,D4为转换模式,初赛是设置为00就行
D3位固定为0
D2位为自动增量允许位
D1,D0为通道选择位:

00–通道0–接光敏电阻
01–通道1–外接
10–通道2–接滑动变阻器
11–通道3–外接

四、程序例程

底层驱动可直接调用赛点提供的资源包

uchar pcf8591_read()
{
	uchar num;
	IIC_Start();	//起始信号
	IIC_SendByte(0x90);	//发送地址(写)
	IIC_WaitAck();	//等待应答
	IIC_SendByte(0x03);	//发送命令字(转换通道3,滑动电阻器)
	IIC_WaitAck();	//等待应答

	IIC_Start();	//起始信号
	IIC_SendByte(0x91);	//发送地址(读)
	IIC_WaitAck();	//等待应答
	num=IIC_RecByte();	//读数据
	IIC_Stop();	//

	return num;
}
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值