12位数模转换器DAC7311的通信控制及其电流驱动电路设计
扫描二维码
随时随地手机看文章
摘要:采用TI公司的TMS320F28335系列DSP作为主控制器与12bit的数模转换芯片DAC731进行串行通信,通信采用SPI方式。通过CCS软件编程实现数模转换芯片DAC7311的输出电压的的设定,且利用INA132U差分运放及其后端电路构成的电压到电流的转换电路实现驱动电流的输出,电流输出范围可以从0~20mA不等。
关键字:DSP;SPI;数模转换芯片
在工业现场,存在许多的电流驱动型的电气设备,仪器仪表,例如机车用的双针速度表等。而且与电压信号相比,电流对噪声并不敏感,所以如果用电流来传输信号的话可以避免传输线受到噪声的干扰造成系统不稳定甚至误操作。在工业自动化控制系统,及仪器仪表、传感器应用中,广泛采用4~20mA电流来传输控制、检测信号。本文就是针对此类设备和仪器仪表,阐述设计输出驱动电流范围从0~20mA的方法。
1 硬件设计分析
1.1 总体结构说明
本设计主控制器件选择TI公司的TMS320F28335.数模转换芯片选择TI公司的DAC7311芯片,后端的差分放大器选择INA132U。整个设计的结构框图为图1所示。
[!--empirenews.page--]
1.2 主控制器使用分析
本设计数模转换器DAC7311与主控制器的接口采用SPI (Serial Peripheral Interlface)接口。SPI接口是一种高速串行输入输出接口用于CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度可达到几Mbps。
本文主控制器为TMS320F28335系列的DSP。芯片内部集成有SPI模块,与SPI模块相关的信号线为SPISIMO;SPISOMI;;SPICLK。本设计只用到SPISIMO和SPICLK,并且用一个普通的GPIO引脚用作DAC7311的同步脉冲输入信号(DACS)。本设计SPI模块采用主模式工作,波特率选择250Kbps,传输的数据位数为16位,时钟方式为无延迟的上升沿方式(Rising edge wilbout delay)即SPI模块在上升沿的前半周期发送数据,在上升沿接收数据。主控制器控制着整个设计的工作流程,首先它给从器件DAC7311的同步输入脉冲引脚输入低电平DACS,选中DAC73 11并对其进行初始化。然后通过SPI模块设定串行传输时钟脉冲,并且也决定着从器件数模转换器DAC7311的波特率。SPI模块的内部结构框图如图2所示。如图可知,在时钟脉冲的控制下,数据从SPIDAT移位寄存器按既定的波特率从SPISIMO引脚按位移出数据入DAC7311的数据输入引脚。
1.3 DAC7311数模转换芯片介绍
DAC7311芯片是一个12bit的,低功率、单通道、电压输出的数模转换芯片。采用通用的三线串行接口,时钟频率可达50MHz与标准的SPI,QSPI,数字信号处理器(DSP)的接口兼容。
它内部的数模转换采用的是电阻网络的组成形式。它的结构框图如图3所示,其中AVDD由外部的基准源提供了。二进制位流从DAC Regist er移入芯片,通过电阻网络(Register String)转换为相应的电压,通过输出放大器输出。
DAC7311的输入位流为标准的二进制位流,其输出电压计算公式为
其中n为转换精度(本设计为12);D为输入的二进制流对应的十进制值:AVDD为外部基准源电压(本设计为4.096V)。
1.4 V/I转换电路的分析
本部分电路主要是对数模转换芯片DAC7311的电压输出V_OUT进行处理,把电压输出转换为电流输出。在V/I转换电路中采用一个差分放大器INA132U作为输入端,能够起到抑制共模和零点漂移的作用。电路原理图如图4所示。Q1和Q2组成复合管,电流放大倍数为两个管子各自的电流放大倍数的乘积,有效的增大了电流的输出范围。并且与采用单管相比可以大大缓解工作负荷以及发热量。U2为运算放大器,采用射极跟随的接法。它的输入阻抗为无穷大,输出阻抗为0。这样,就能够起到增大输出驱动电流的作用。因为,从R1(精密电阻)支路流出的电流就全部从负载Rload流出以驱动后级的仪表设备。
[!--empirenews.page--]
根据图4以及运算放大电路的“虚短”和“虚断”的概念可以得出输出驱动电流的计算公式为
从公式中可以得出输出的电流只与DAC7311的输出电压V_out和精密电阻R1大小有关。其中由软件编程设定,如果R1确定,那么电流的输出范围就完全可以通过软件编程设定。
2 软件设计分析
本设计的软件集成开发环境为CCS3.3 (Code Composer Studio 3.3),采用查询的方式进行软件设计。根据DAC7311的datasheet可知,其输入移位寄存器为16位,故要求F28335的SPI模块发送的数据为16位,且最高两位(PD1,PD0)为模式选择位,见表1,本设计采用正常模式。接下来的12 bit为数据位,最后两位任意。
软件设计的流程图如图5所示。
SPI初始化子程序主要是对F28335中与SPI模块及本程序相关的GPIO口进行设置:SPI的FIFO寄存器设置;SPI控制及状态寄存器进行配置。通过公式(1)和(2),得出不同的输出电流对应的二进制值sdata。并通过软件编程给变量sdata复不同的16位二进制数值(最高两位为“00”)。
3 数据分析
由于受DA转换器的转换精度,分辨率,建立时间,十进制与二进制的转换误差,以及其他元器件特别是精密电阻R1的精度的影响,理论值与实测值有一定的误差。表2为不同的12位二进制值对应的输出电流值(R1=125Ω+0.1%),测试工具为福禄克FLUKE741B校准器(电流测量精度及范围为:30.000 mA 0.01%+0.015%)。
4 结束语
从表2中的测量数据可知,在R1为125Ω±0.1%,输出电流为0~20mA时,与理论值相比,电流的输出精度范围为±1%左右,基本符合一般的电流驱动型仪器仪表(如机车的双针速度表)的使用要求。