本文主要是介绍AD5758单通道16位电流和电压输出DAC的软件应用特性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
概述
1 AD5758的软件流程图
1.1 软件流程框图
1.2 编程顺序使输出
1.3 一个范例:改变量程
2 输出FAULT pin
3 ADC_IP_SELECT
4 AD5758的寄存器
4.1 寄存器列表
4.2 寄存器参数介绍
4.2.1 NOP Register
4.2.2 DAC Input Register
4.2.3 DAC Output Register
4.2.4 Clear Code Register
4.2.5 User Gain Register
4.2.6 User Offset Register
4.2.7 DAC Configuration Register
4.2.9 Key Register
4.2.10 General-Purpose Configuration 1 Register
4.2.11 General-Purpose Configuration 2 Register
4.2.12 DC-to-DC Configuration 1 Register
4.2.13 DC-to-DC Configuration 2 Register
4.2.14 Watchdog Timer (WDT) Configuration Register
4.2.15 Digital Diagnostic Configuration Register
4.2.16 ADC Configuration Register
4.2.17 FAULT Pin Configuration Register
4.2.18 Two Stage Readback Select Register
4.2.19 Digital Diagnostic Results Register
4.2.20 Analog Diagnostic Results Register
4.2.21 Status Register
概述
本文主要介绍AD5758的软件控制流程,包括各个寄存器功能和每个bit位的含义。AD5758是一款单通道、电压和电流输出数模转换器(DAC),采用AVSS ?33 V(最小值)至AVDD1 +33 V(最大值)电源供电,两个供电轨之间的最大工作电压为60 V。片内动态功率控制(DPC)利用一个针对最小片内功耗而优化的降压型DC-DC转换器,在5 V至27 V范围内将输出驱动器电路的电源电压(VDPC+)调节至VIOUT,使封装功耗较小。CHART引脚可将HART?信号耦合到电流输出上。
该器件采用多功能四线式串行外设接口(SPI),能够以最高50 MHz的时钟速率工作,并与标准SPI、QSPI、MICROWIRE、DSP和微控制器接口标准兼容。该接口还具有可选SPI循环冗余校验(CRC)和看门狗定时器(WDT)。与前款产品相比,AD5758改善了诊断功能,如输出电流监控和集成12位诊断模数转换器(ADC)。通过在VIOUT、+VSENSE和VSENSE引脚上集成故障保护开关,提供额外的鲁棒性。
1 AD5758的软件流程图
1.1 软件流程框图
1.2 编程顺序使输出
要在开机或复位状态下对设备进行写入和设置,请使用以下步骤:
Step -1:执行硬件或软件复位,等待100µs
Step -2: 通过将0xFCBA写入密钥寄存器来执行校准内存刷新。在进入步骤3之前,等待至少500µs,以便时间完成内部校准。作为等待500µs刷新周期完成的替代方案,轮询的CAL_MEM_UNREFRESHED位DIGITAL_DIAG_RESULTS寄存器,直到它为0。
Step -3: 将1写入DIGITAL_DIAG_RESULTS寄存器中的D13位,以清除RESET_OCCURRED标志
Step -4: 如果需要CLKOUT,请通过GP_CONFIG1寄存器配置并启用该特性。在启用dc- dc转换器之前配置此功能非常重要。
Step -5: 写入DCDC_CONFIG2寄存器设置dc- dc电流限制。等待300µs,让3线接口通信完成。作为等待的替代选择300µs用于3线接口通信完成,轮询BUSY_3WI位DCDC_CONFIG2寄存器,直到它为0。
Step -6: 写入DCDC_CONFIG1寄存器以设置dc- dc转换器模式(从而启用dc- dc转换器)。等待300µs,让3线接口通信完成。作为等待的替代选择300µs到3线接口通信完成,轮询DCDC_CONFIG2寄存器中的BUSY_3WI位,直到它为0
Step -7: 写入DAC_CONFIG寄存器来设置INT_EN位(在未使能的情况下上电DAC和内部放大器输出)和配置输出范围,内部/外部复位和回转率。此时请禁用OUT_EN位点。等待至少500µs,然后继续执行步骤8留出时间完成内部校准。作为一个除了等待500µs刷新周期完成之外,还可以轮询CAL_MEM_ unrefresh位DIGITAL_DIAG_RESULTS寄存器,直到它为0。
Step -8: 将零标度DAC代码写入DAC_INPUT寄存器。(如果在步骤7中选择了双极范围,则必须将表示0 mA/0 V输出的DAC代码写入DAC_INPUT注册)。即使DAC_INPUT寄存器的内容没有改变,完成这个步骤也是很重要的。
Step -9: 如果正在使用LDAC功能,请执行软件或硬件LDAC命令。
Step -10: 将相同的单词重写到DAC_CONFIG寄存器中,如第7步,除了这一次启用了OUT_EN位。在步骤6和步骤9之间允许至少1.25 ms;这是从dc-to-dc启用到使能VIOUT输出
Step -11: 将所需的DAC代码写入DAC_INPUT寄存器。‘
1.3 一个范例:改变量程
开启输出功能后,更改输出范围时,请参考以下步骤:
step - 1: 写 DAC_INPUT 寄存器. 设置 output 的值 0 mA或0 V.
step - 2: 写入到DAC_CONFIG寄存器。禁用输出(OUT_EN = 0),并设置新的输出范围。保持
INT_EN位设置。在进行步骤3之前,等待至少500µs,以便有时间完成内部校准。
step - 3: 写代码0x0000(双极范围时,写代码0x8000)到DAC_INPUT寄存器。重要的是,这一步必须完成,即使内容DAC_INPUT寄存器没有改变。
step - 4: 重新加载步骤2中的DAC_CONFIG寄存器字,但这次将OUT_EN位设置为1以启用输出。
step - 5: 将所需的DAC代码写入DAC_INPUT寄存器。
2 输出FAULT pin
AD5758配有FAULT引脚。该引脚是一个有源低漏开输出,允许多个AD5758器件连接到一个上拉电阻上,用于全局故障检测。当没有检测到故障时,该引脚具有高阻抗,当检测到某些故障时,例如电流模式下的开路、电压模式下的短路、CRC错误或过温错误时,该引脚被断言为低阻抗。表17显示了自动强制fault引脚激活的故障条件,并突出显示了通过FAULT_PIN_CONFIG注册表可用的用户可屏蔽故障位。
DIG_DIAG_STATUS, ANA_DIAG_STATUS和WDT_状态寄存器的STATUS位与FAULT引脚和FAULT_PIN_STATUS位一起使用,以通知用户哪个故障条件导致FAULT引脚或FAULT_PIN_STATUS位被激活。
3 ADC_IP_SELECT
AD5758集成了一个12位ADC,为用户可选择的输入提供诊断信息,如电源、接地、内部芯片温度、参考和外部信号。看到表18给出了可选输入的完整列表。用于ADC的参考来自REFOUT,如有必要,提供了一种独立于DAC参考(REFIN)的方法。ADC_CONFIG寄存器通过ADC_IP_SELECT位配置多路复用ADC输入通道的选择
ADC的输入范围为0 V至2.5 V,可用于数字化各种不同的节点。ADC的输入集包括单极和双极范围,从高电压值到低电压值不等。因此,为了能够数字化它们,必须将0 V至2.5 V ADC输入范围之外的电压范围进行细分。ADC传递函数方程取决于所选择的ADC输入节点(所有传递函数方程的总结见下表)
4 AD5758的寄存器
4.1 寄存器列表
AD5758内部共有29个寄存器,可供用户使用,其具体定义如下:
4.2 寄存器参数介绍
4.2.1 NOP Register
Address: 0x00, Reset: 0x000000, Name: NOP
将0x0000写入该地址的Bits[D15:D0]以执行NOP (no operation)命令。这个寄存器的位[15:0]总是读回0x0000。
4.2.2 DAC Input Register
Address: 0x01, Reset: 0x010000, Name: DAC_INPUT
Bits[D15:D0]由写入DAC的16位数据组成。如果LDAC引脚处于低位(即活动),则将DAC_INPUT寄存器的内容直接写入DAC_OUTPUT寄存器,而不依赖于任何LDAC功能。如果LDAC引脚处于高位,那么当LDAC引脚处于低位或编写软件LDAC命令时,将DAC_INPUT寄存器的内容写入DAC_OUTPUT寄存器。
4.2.3 DAC Output Register
Address: 0x02, Reset: 0x020000, Name: DAC_OUTPUT
DAC_OUTPUT是一个只读寄存器,包含最新校准的16位DAC输出值。如果由于WDT故障而发生清除事件,则该寄存器包含清除代码,直到DAC更新为另一个代码。
4.2.4 Clear Code Register
Address: 0x03, Reset: 0x030000, Name: CLEAR_CODE
当写入CLEAR_CODE寄存器时,位[D15:D0]由清除代码组成,当发生清除事件(例如,WDT故障)时,DAC将清除该代码。在清除事件之后,必须用要写入DAC的16位数据重写DAC_INPUT寄存器,即使它与之前在清除事件之前写入的数据相同。执行LDAC写入操作(无论是硬件还是软件)不会将DAC_OUTPUT寄存器更新为新的代码,直到DAC_INPUT寄存器被首次写入。
4.2.5 User Gain Register
Address: 0x04, Reset: 0x04FFFF, Name: USER_GAIN
16位USER_GAIN寄存器允许用户以1 LSB的步骤调整DAC通道的增益。USER_GAIN寄存器编码是直接二进制的。默认为0xFFFF。理论上,增益可以在整个输出范围内进行调谐。在实践中,最大推荐增益修剪约为编程范围的50%,以保持精度。
4.2.6 User Offset Register
Address: 0x05, Reset: 0x058000, Name: USER_OFFSET
16位的USER_OFFSET寄存器允许用户将DAC通道的偏移量调整为−32,768 LSB至+32,768 LSB,每步调整1 LSB。USER_OFFSET寄存器编码是直接二进制的。默认代码是0x8000,这导致输出中编程的零偏移量。
4.2.7 DAC Configuration Register
Address: 0x06, Reset: 0x060C00, Name: DAC_CONFIG
该寄存器配置DAC(范围,内部/外部RSET和输出使能),启用输出级电路,并配置压摆率控制功能。
2.2.8 Software LDAC Register
Address: 0x07, Reset: 0x070000, Name: SW_LDAC
将0x1DAC写入该寄存器,在SPI帧内匹配ADDRESS位的设备上执行软件LDAC更新。如果设置了GP_CONFIG2寄存器中的GLOBAL_SW_LDAC位,则忽略AD0和AD1位,并且通过SW_LDAC命令更新共享相同SPI总线的所有设备。这个寄存器的位[15:0]总是读回0x0000。
4.2.9 Key Register
Address: 0x08, Reset: 0x080000, Name: Key
这个寄存器接受特定的关键代码来执行任务,如校准存储器刷新和软件复位。这个寄存器的位[15:0]总是读回0x0000。保留所有未列出的键代码。
4.2.10 General-Purpose Configuration 1 Register
Address: 0x09, Reset: 0x090204, Name: GP_CONFIG1
该寄存器用于配置温度比较器阈值和CLKOUT等功能,以及启用其他杂项功能。
4.2.11 General-Purpose Configuration 2 Register
Address: 0x0A, Reset: 0x0A0200, Name: GP_CONFIG2
该寄存器用于配置和启用诸如电压比较器和全局软件LDAC之类的功能。
4.2.12 DC-to-DC Configuration 1 Register
Address: 0x0B, Reset: 0x0B0000, Name: DCDC_CONFIG1
该寄存器用于配置dc-to-dc控制器模式。
4.2.13 DC-to-DC Configuration 2 Register
Address: 0x0C, Reset: 0x0C0100, Name: DCDC_CONFIG2
该寄存器配置各种dc- dc模块特性,例如dc- dc转换器电流限制和dc- dc模块节点,以便复用到ADC。
4.2.14 Watchdog Timer (WDT) Configuration Register
Address: 0x0F, Reset: 0x0D0009, Name: WDT_CONFIG
这个寄存器配置WDT超时值。该寄存器还根据可接受的重置和对WDT故障的响应(例如,清除输出或重置设备)来配置WDT设置。
4.2.15 Digital Diagnostic Configuration Register
Address: 0x10, Reset: 0x10005D, Name: DIGITAL_DIAG_CONFIG
此寄存器为特定应用程序配置各种感兴趣的数字诊断特性
4.2.16 ADC Configuration Register
Address: 0x11, Reset: 0x110000, Name: ADC_CONFIG
该寄存器将ADC配置为四种操作模式之一:键排序、自动排序、当前选择的ADC_IP_SELECT节点的单次立即转换或单键转换。
4.2.17 FAULT Pin Configuration Register
Address: 0x12, Reset: 0x120000, Name: FAULT_PIN_CONFIG
如果需要,这个寄存器用于屏蔽fault引脚的特定故障位。
4.2.18 Two Stage Readback Select Register
Address: 0x13, Reset: 0x130000, Name: TWO_STAGE_READBACK_SELECT
该寄存器选择两阶段读回操作所需的寄存器的地址。所选读回寄存器的地址存储在Bits[D4:D0]中。
4.2.19 Digital Diagnostic Results Register
Address: 0x14, Reset: 0x14A000, Name: DIGITAL_DIAG_RESULTS
该寄存器包含片上数字诊断功能的错误标志,其中大多数可以使用数字诊断配置寄存器进行配置。这个寄存器还包含一个标志来指示重置发生,以及一个标志来指示校准存储器没有刷新或无效的SPI访问尝试。除了CAL_MEM_UNREFRESHED和SLEW_BUSY标志外,所有这些标志都需要写入1才能将它们更新为当前值。cal_mem_unrefresh_和SLEW_BUSY标志在校准备忘时自动清除。
4.2.20 Analog Diagnostic Results Register
Address: 0x15, Reset: 0x150000, Name: ANALOG_DIAG_RESULTS
这个寄存器包含一个错误标志,对应于四个电压节点(VLDO, INT_AVCC, REFIN和REFOUT)背景由比较器,以及每个模具温度的标志,这也是由比较器监测。电压输出短电路,电流输出开路和直流到直流的错误标志也包含在这个寄存器中。比如DIGITAL_DIAG_RESULTS寄存器中包含的所有标志都需要向它们写入1来更新或清除它们。当相应的未启用诊断功能,则相应的错误标志被读取为零。
4.2.21 Status Register
Address: 0x16, Reset: 0x100000, Name: Status
该寄存器包含ADC数据和状态位,以及WDT、OR模拟和数字诊断以及FAULT引脚状态位
这篇关于AD5758单通道16位电流和电压输出DAC的软件应用特性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!