AD5758单通道16位电流和电压输出DAC的软件应用特性

2024-04-14 05:36

本文主要是介绍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的软件应用特性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/902200

相关文章

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

Python使用Colorama库美化终端输出的操作示例

《Python使用Colorama库美化终端输出的操作示例》在开发命令行工具或调试程序时,我们可能会希望通过颜色来区分重要信息,比如警告、错误、提示等,而Colorama是一个简单易用的Python库... 目录python Colorama 库详解:终端输出美化的神器1. Colorama 是什么?2.

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”