MCP3421使用详解 | 您所在的位置:网站首页 › 494芯片4脚电压 › MCP3421使用详解 |
0 摘要
因某项目需要,需要采集微弱的电压信号,且对电压精度要求较高,于是选中MCP3421这款18 bit 高精度IIC AD转换芯片。本文将结合MCP3421的手册,对该芯片的使用进行详细解释,并配合Proteus,完成基于MCP3421的仿真。 关键词:MCP3421, Proteus,MSP430,PT100,TCK,TCJ,TCE,AT89C51/AT89C52 1 所使用的工具主控单元:MSP460F249 显示模块:LCD1602 采集芯片:MCP3421 程序开发软件: IAR7.10.1 for MSP430 仿真软件:Proteus 8.6 2 安装包链接 Proteus 8.6链接:https://pan.baidu.com/s/1yAxgS7nuEd7MziVn-tSMuw 提取码:civu IAR链接:https://pan.baidu.com/s/1Uk6u6o8rXh5oXdv2yHBvHg 提取码:fs2q 3 MCP3421介绍MCP3421采用IIC串行通讯协议,具有单通道、高精度(最高18bits)、差分输入 A/D转换器;片上精密基准参考电压为2.048V。采用单电源供电(2.7V-5.5V)。其主要特点如下: 封装:SOT-23-6差分输入具备自校正功能 片内参考电压 精度:2.048V±0.05%温漂:15ppm/℃ 可编程增益放大器 PGA = 1V/V 2V/V 4V/V 8V/V 可编程速率位 3.75 SPS 18位 -131072~131071,最高位D17为符号位15 SPS 16位 60 SPS 14位240 SPS 12位 可编程转换模式 单次转换模式连续转换模式 IIC接口单电源供电 2.7V~5.5V典型应用场合: 便携式仪表电子秤和电量计使用RTD、热敏电阻和热电偶的温度测量测量压力、张力和应变的电桥MCP3421的框图如图3-1所示 图3-1 MCP3421内部框图 4 MCP3421寄存器介绍R/W-1 R/W-0 R/W-0 R/W-1 R/W-0 R/W-0 R/W-0 R/W-0 RDY(低电平有效) C1 C0 O/C S1 S0 G1 G0 1* 0* 0* 1* 0* 0* 0* 0* Bit7
Bit0
*代表上电复位时的默认配置 所以,MCP3421上电后,如果未输入新的配置信息时,系统的默认状态为: 连续转换模式;SPS为240 SPS,12bit;PGA为 1V/V
Bit7: RDY:就绪标志位 此位为数据就绪标志。在读模式,此位表示输出寄存器是否被最新的转换数据更新。在单次转换模式 下,向此位写入 1 将启动一次新的转换。 使用读命令读取 RDY 位: 1 = 输出寄存器未更新 0 = 输出寄存器被最新转换结果更新
使用写命令写 RDY 位: 连续转换模式:无影响 单次转换模式: 1 = 开始一次新的转换 0 = 无影响 Bit6-5: C1-C0:MCP3421中无效 Bit4: O/C:转换模式位 1 = 连续转换模式 (默认) 。器件进行连续数据转换。 0 = 单次转换模式。器件进行单次转换并进入低功耗待机模式,直至收到新的读或写命令 Bit3-2: S1-S0:采样率选择位 00 = 240 sps ( 12 位) (默认) 01 = 60 sps (14 位) 10 = 15 sps (16 位) 11 = 3.75 sps (18 位) Bit1-0: G1-G0: PGA 增益选择位 00 = x1 (默认) 01 = x2 10 = x4 11 = x8 5 MCP3421配置方式MCP3421寄存器的配置根据其写命令来执行。写操作对应的时序图如图5-1所示。
图5-1 MCP3421写操作时序图 由图5-1可以看出,MCP3421写操作共包含以下几个部分: 第一步:主器件发出启动位 IIC_Start(); 第二步:向MCP3421写入第一个字节。包括器件地址和读写标志位 常规为0xd0。计算方法如下: 地址位格式如下:1 1 0 1 A2 A1 A0 其中A2、A1、和A0出厂就已经定义号好了,默认为A2=A1=A0 = 0,如果需要挂接多个MCP3421,需要联系厂家进行自定义。 最后一位为读写标志位,1为Read模式,0为Write模式。
所以实际写入MCP3421的第一个字节为 1101 0000 = 0xD0 第三步:主机等待MCP3421发出应答信号IIC_Wait_Ack() 第四步:向MCP3421 写入第二个字节(配置字节)。进行寄存器的配置 不同配置方式的组合如下: 单次转换共有以下几种组合: 若选择单次转换模式,器件仅进行一次转换,并更新输出数据寄存器,清除数据就绪标志位(RDY 位 = 0)然后进入低功耗待机模式。当器件接收到新的写命令,并RDY = 1 时,则开始新的单次转换。 所以,使用MCP3421推荐系统工作在单次转换模式下,按需触发采集,可以降低系统功耗。 转换模式 转换速率 增益 RDY C1 C0 O/C S1 S0 G1 G0
单次转换 240 SPS 12BIT
1V/V 1 0 0 0 0 0 0 0 0X80 2V/V 1 0 0 0 0 0 0 1 0X81 4V/V 1 0 0 0 0 0 1 0 0x82 8V/V 1 0 0 0 0 0 1 1 0x83 60 SPS 14BIT
1V/V 1 0 0 0 0 1 0 0 0x84 2V/V 1 0 0 0 0 1 0 1 0x85 4V/V 1 0 0 0 0 1 1 0 0x86 8V/V 1 0 0 0 0 1 1 1 0x87 15 SPS 16BIT
1V/V 1 0 0 0 1 0 0 0 0x88 2V/V 1 0 0 0 1 0 0 1 0x89 4V/V 1 0 0 0 1 0 1 0 0x8a 8V/V 1 0 0 0 1 0 1 1 0x8b 3.75 SPS 18BIT
1V/V 1 0 0 0 1 1 0 0 0x8c 2V/V 1 0 0 0 1 1 0 1 0x8d 4V/V 1 0 0 0 1 1 1 0 0x8e 8V/V 1 0 0 0 1 1 1 1 0x8f 注意:由于在单次转换模式下,通过置位RDY位可以启动新的转换,所以在读取数据前,需要重新写入该寄存器。否则无法开启下次转换。 连续转换共有以下几种组合: 转换模式 转换速率 增益 RDY C1 C0 O/C S1 S0 G1 G0
连续转换 240 SPS 12BIT
1V/V 0/1 0 0 1 0 0 0 0 0X10/0x90 2V/V 0/1 0 0 1 0 0 0 1 0X11/0x91 4V/V 0/1 0 0 1 0 0 1 0 0x12/0x92 8V/V 0/1 0 0 1 0 0 1 1 0x13/0x93 60 SPS 14BIT
1V/V 0/1 0 0 1 0 1 0 0 0x14/0x94 2V/V 0/1 0 0 1 0 1 0 1 0x15/0x95 4V/V 0/1 0 0 1 0 1 1 0 0x16/0x96 8V/V 0/1 0 0 1 0 1 1 1 0x17/0x97 15 SPS 16BIT
1V/V 0/1 0 0 1 1 0 0 0 0x18/0x98 2V/V 0/1 0 0 1 1 0 0 1 0x19/0x99 4V/V 0/1 0 0 1 1 0 1 0 0x1a/0x9a 8V/V 0/1 0 0 1 1 0 1 1 0x1b/0x9b 3.75 SPS 18BIT
1V/V 0/1 0 0 1 1 1 0 0 0x1c/0x9c 2V/V 0/1 0 0 1 1 1 0 1 0x1d/0x9d 4V/V 0/1 0 0 1 1 1 1 0 0x1e/0x9e 8V/V 0/1 0 0 1 1 1 1 1 0x1f/0x9f 注意:当连续模式下RDY模式位为1和为0均可以。 第五步:主机等待MCP3421发出应答信号IIC_Wait_Ack() 第六步:主机发送停止信号IIC_Stop() 参考配置代码如下: void Write_MCP3421(unsigned char WR_Data) { IIC_Start(); IIC_SendByte(MCP3421_ADDREDD); // 1101 a2 a1 a0 0 发送给第一个字节数据 MCP3421地址字节+R/W命令 // 1101 0000 0xd0 IIC_Wait_Ack(); IIC_SendByte(WR_Data); //RDY O/C C1 C0 S1 S0 G1 G0
IIC_Wait_Ack(); IIC_Stop(); } 6 MCP3421数据读取MCP3421数据读取按照图6-1、6-2所示的读操作时序图进行。其中6-1为18bit模式读操作时序图,6-2为12-16bit模式读操作时序图。在此仅对18bit模式读操作时序图进行分析,12-16bit的分析方法类似。 图 6-1 18bits MCP3421读操作时序图 由图6-1可以看出,MCP3421读操作共包含以下几个部分: 第一步:主机发送启动信号,IIC_Start(); 第二步:向MCP3421写入第一个字节。包括器件地址和读写标志位 常规为0xd1。计算方法如下: 地址位格式如下:1 1 0 1 A2 A1 A0 其中A2、A1、和A0出厂就已经定义号好了,默认为A2=A1=A0 = 0,如果需要挂接多个MCP3421,需要联系厂家进行自定义。 最后一位为读写标志位,1为Read模式,0为Write模式。
所以实际写入MCP3421的第一个字节为 1101 0001 = 0xD1 第三步:主机等待MCP3421发出应答信号IIC_Wait_Ack() 第四步:读取第二个数据字节,根据时序图可以看出,其格式如下: D17 D17 D17 D17 D17 D17 D17 D16 所以,其前6位为重复数据,可以认为是无效位,D17是符号位,D17=1,采集到的Vin+ - Vin-小于0,D17=0,采集到的Vin+ - Vin-大于0,所以可以根据D17判断输入的数据正负 第五步:主机发送应答信号 IIC_Ack(); 第六步:读取第三个数据字节,读取中间字节,其格式如下: D15 D14 D13 D12 D11 D10 D9 D8 第七步:主机发送应答信号 IIC_Ack(); 第八步:读取第四个数据字节,读取数据位低八位,其格式如下 D7 D6 D5 D4 D3 D2 D1 D0 第九步:主机发送应答信号 IIC_Ack(); 第十步:读取第五个字节,读取寄存器配置数据,其格式如下: RDY C1 C0 O/C S1 S0 G1 G0 第五个字节数据可忽略,不进行读取。 第十一步:主机发送非应答信号,IIC_Nack() 最后一步:主机发送停止信号,IIC_Stop() 参考读取代码如下: IIC_Start(); IIC_SendByte(0xd1); //0xd1=0b11010001, 最后一位1表示单片机接收数据 IIC_Wait_Ack(); //MCP3421发出应答ACK信号 //读取第二个字节数据 Upper Data Byte elech=(long int)IIC_ReadByte(); //NULL NULL NULL NULL NULL NULL D17 D16 IIC_Ack(); //主器件发出应答信号 //读取第三个字节数据 Lower Data Byte elecm=(long int)IIC_ReadByte(); //D15 D14 D13 D12 D11 D10 D9 D8
IIC_Ack(); 主器件发出应答信号
elecl=(long int)IIC_ReadByte(); //D7 D6 D5 D4 D3 D2 D1 D0 IIC_Ack(); config = (long int)(IIC_ReadByte()); //RDY C1 C0 O/C S1 S0 G1 G0 IIC_NAck();// 停止接收 IIC_Stop();
图 6-2 12-16bits MCP3421读操作时序图 7 MCP3421数据转化在分析数据转换前,需要了解MCP3421数据存储格式,然后才能将采集得到的数据进行正确转换。 数字输出代码与输入电压和 PGA 设置成正比。输出数据为二进制补码格式。在这种编码方式下, MSB 位可以作为符号位。当 MSB 为逻辑 0,表示为正值;当 MSB为逻辑 1,表示为负值。 输出代码与实际输入电压之间的关系如下: 输出代码 = (指定采样速率下的最大代码+1)*PGA * (Vin+ - Vin-)/LSB 其中不同采样速率对应的最大代码如下: LSB对应的表达式如下: LSB = 2*VREF/2^SPS=2*2.048V / 2^SPS 所以基于以上表述可以得到输出电压的计算表达式如下: 当MSB=0(输入正电压) 输入电压=(输出代码)* LSB /PGA 当MSB=1(输入负电压) 输入电压=(输出代码的二进制补码) * LSB /PGA 以18bit采样 PGA =1V/V为例数据转化参考代码如下: //开始进行数据转化 AD_B_Result=(elech |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |