【硬件SPI】STM32 AD5422芯片手册学习/例程
手册解析文章参考AD5422的使用(控制输出不同范围的电压电流值)-CSDN博客目录AD5422一、AD5422简介二、AD5422的使用1.写数据2.读数据3.AD5422操作流程1操作复位寄存器2操作控制寄存器进行初始化。3操作数据寄存器 控制输出电流值初始化配置的时候讲数据寄存器清零(4)读取寄存器写入值(5)总体代码调用AD5422一、AD5422简介AD5422是低成本、精密、完全集成、12/16位数模转换器(DAC)内置可编程电流源和可编程电压输出。输出电流范围可编程设置为4 mA至20 mA、0 mA至20 mA或者超量程的0 mA至24 mA。电压输出由一个独立引脚提供该引脚可配置成提供0 V至5 V、0 V至10 V、±5 V或±10 V输出范围所有范围均提供10%的超量程。含有一个异步清零引脚(CLEAR)它可将输出设置为零电平/中间电平电压输出或将输出设置为选定电流范围的低端。灵活的串行接口为SPI和MICROWIRE兼容型可以采用三线式模式工作从而极大地降低隔离应用的数字隔离要求。简言之就是可以控制输出不同的电流和电压以匹配我们的需求。可应用于在检测到不同信号时调整不同输出。二、AD5422的使用AD5422通过一个多功能三线式串行接口受控该接口以最高30 MHz的时钟速率工作与SPI、QSPI™、MICROW-IRE和DSP标准兼容。本文AD5422的使用主要通过SPI进行数据的读写传输。而后在不同寄存器中写值来完成不通的操作。也可通过读数据来获取寄存器中写入的值。书写代码时最重要的就是写数据和读数据的操作。1.写数据下图为写入数据的时序图输入移位寄存器为24位宽。数据在串行时钟输入SCLK的控 制下首先作为24位字载入器件MSB中。数据在SCLK的上升 沿逐个输入。输入寄存器包括8个地址位和16个数据位 如表7所示。该24位字在LATCH引脚的上升沿无条件锁存。 数据继续逐个输入与LATCH的状态无关。在LATCH的 上升沿锁存输入寄存器中存在的数据换言之要在 LATCH的上升沿之前逐个输入的最后24位是锁存的数据。写入时序图给出了这种操作的时序图。上述的话通俗来讲意思就是在 LATCH 引脚上升沿之前把完整 24 位数据移入 24 位输入移位寄存器LATCH 上升沿到来时会锁存此刻移位寄存器内的全部数据更新硬件输出端口并保持稳定。匹配上面时序图可以书写写数据的代码void Func_AD5422SpiTx(STR_GpioStruct *pCs, STR_SpiStruct *pSpi, uint8_t nRegister, uint16_t wData) // AD5422 { uint8_t nData[3] {0}; nData[0] nRegister; //寄存器地址 nData[1] wData 8;//高八位数据 nData[2] wData; //低八位数据 Gpio_setPinStatus(pCs, PIN_SET_LOW);//拉点LATCH引脚 while(pSpi-pxDriver-GetStatus().busy 1) {}//等待SPI通信开始 pSpi-pxDriver-Send(nData, 3);//提供24个SCLK 传输数据 while(pSpi-pxDriver-GetStatus().busy 1) {}//等待SPI通信结束 Gpio_setPinStatus(pCs, PIN_SET_HIGH);//锁存数据 osDelay(1); }写入操作Func_AD5422SpiTx(pCs, pSpi, 0x01, wRet);//wRet为需要SPI传输的码值0x01为数据寄存器说明0X01为数据寄存器wRet为SPI传输的码值。2.读数据下图为回读数据的时序图回读操作通过在写入输入寄存器时设置地址字节0x02和读取地址0x01(见表9 和表11)可调用回读模式。接下来写入AD5412/AD5422的应 该是一个NOP命令该命令从先前寻址的寄存器逐个输出 数据如图3所示。寻址AD5412/AD5422进行读取操作之后SDO引脚默认禁 用LATCH的上升沿使能SDO引脚预测逐个输出的数据。 数据在SDO上逐个输出后LATCH的上升沿禁用(三态) SDO引脚。例如要读回数据寄存器实施如下序列1.将0x020001写入输入寄存器。这采用选定数据寄存器配置用于读取模式的器件。2.然后进行第二次写入一个NOP条件即0x000000。在此写入期间来自寄存器的数据在SDO线路上逐个输出。匹配上面时序图可以书写写数据的代码uint16_t Func_AD5422Read(STR_GpioStruct *pCs, STR_SpiStruct *pSpi, uint8_t nRegister, uint16_t wData) // AD5422 { uint8_t nData[3] {0}; uint16_t nRback 0;; uint8_t nRead_Data[3] {0}; nData[0] nRegister;//0x02 nData[1] wData 8; nData[2] wData;//0x0001 Gpio_setPinStatus(pCs, PIN_SET_LOW); while(pSpi-pxDriver-GetStatus().busy 1) {} pSpi-pxDriver-Send(nData, 3);//发送0X020001指令 while(pSpi-pxDriver-GetStatus().busy 1) {} Gpio_setPinStatus(pCs, PIN_SET_HIGH); osDelay(1); Gpio_setPinStatus(pCs, PIN_SET_LOW); while(pSpi-pxDriver-GetStatus().busy 1) {} pSpi-pxDriver-Receive(nRead_Data, 3);//接收的时候底层会自己发送NOP哑数据 while(pSpi-pxDriver-GetStatus().busy 1) {} Gpio_setPinStatus(pCs, PIN_SET_HIGH); nRback (nRead_Data[1] 8) nRead_Data[2];//拼接回传的U16数据 return nRback; }回读操作Func_AD5422Read(pCs, pSpi, 0x02, 0x0001);0x02是回读寄存器0x0001是数据寄存器拼接起来即0x020001之后RECEIVE函数接收的时候回自己发送NOP哑指令。3.AD5422操作流程1.操作复位2.初始化配置控制寄存器3.在数据寄存器中写入值控制输出电流4.可以读取寄存器的值判断数据是否正确写入例如读取状态寄存器检测故障下图是操作流程图 1操作复位寄存器由图可知复位只需向复位寄存器的地址0x56中的D0位写入1即可完成复位操作直接调用我们的Func_AD5422SpiTx函数(函数原型在上文写操作)代码如下Func_AD5422SpiTx(pCs, pSpi, 0x56, 0x0001);2操作控制寄存器进行初始化。控制寄存器通过将输入移位寄存器的地址字设置为0x55寻址。要写入控制寄存器的数据输入D15至D0位置中如表14所示。控制寄存器功能如表15所示。这个要根据工程所使用的参数来填入相对应的数据这里我写的数据仅以我工程中的配置举例。Func_AD5422SpiTx(pCs, pSpi, 0x55, 0x31B1);参数解析0x31B1转成二进制数为0011 0001 1011 0001对应上图中置位了REXT OUTEN SR时钟 SR跳跃 SREN DCEN输出范围是0-10V电压3操作数据寄存器 控制输出电流值初始化配置的时候讲数据寄存器清零数据寄存器通过将输入移位寄存器的地址字设置为0x01寻址。对于AD5412要写入至数据寄存器的数据输入D15至D4位置中而对于AD5422输入D15至D0位置。数据寄存器写入的值匹配输出的电压或是电流存在一个计算公式如下电压输出对以下公式进行变换求出我们需要的D也就是我们给到数据寄存器的值。其中DAC分辨率为16。VREFIN一般要求输入5V。REFOUT输出5V一般直接连接到REFIN。电流输出电流输出同上计算出我们需要的D值。其中DAC分辨率为16。Func_AD5422SpiTx(pCs, pSpi, 0x01, 0);(4)读取寄存器写入值例如读状态寄存器读寄存器类似不再说明。直接调用上述回读函数Func_AD5422Read读0x02回读寄存器中的以下指令即可0x0000 状态寄存器0x0001 数据寄存器0x0010 控制寄存器(5)总体代码调用1.复位2.初始化配置例如电压、电流输出范围。3.根据要输出的电流值转换成给到AD5422的值,配置数据寄存器从而输出电流。4.根据需要选择读取寄存器检测故障等。初始化代码如下void Func_AD5422_RegisterInit(STR_GpioStruct *pCs, STR_SpiStruct *pSpi, uint8_t nMode) { Func_AD5422SpiTx(pCs, pSpi, 0x56, 0x0001); osDelay(1); Func_AD5422SpiTx(pCs, pSpi, 0x55, 0x31B1); osDelay(1); Func_AD5422SpiTx(pCs, pSpi, 0x01, 0); }手册部分大部分文字描述转载开头博客供个人理解学习参考

相关新闻

第2篇:初识味美——一部用数据语言写成的公司简史

第2篇:初识味美——一部用数据语言写成的公司简史

一、好奇心 入职第三天,林悦对“味美”依然没有整体的认知。 她知道味美卖酱油、方便面、坚果,知道公司有三个品牌——味美、味臻、味刻,也知道全国分八个大区。但这些信息像散落在地上的拼图碎片,看不到全貌。 “老王,有没有什么资料能让我了解一下公司的整体业务?”…

2026/6/26 8:07:58阅读更多 →
进销存出入库流程怎么做最规范?一文看懂仓库管理核心

进销存出入库流程怎么做最规范?一文看懂仓库管理核心

在企业运营中,仓库往往被戏称为“碎钞机”——货找不到了、账实不符、临期损耗、发错货物……这些让人头疼的问题,90% 都是因为出入库流程不规范导致的。仓库管理的核心其实就六个字:账清、物准、流顺。想要做到这六个字,一套闭环…

2026/6/26 8:07:58阅读更多 →
资料分析怎么提速?粉笔题库适合做哪些限时训练

资料分析怎么提速?粉笔题库适合做哪些限时训练

资料分析是行测里很特殊的一个模块:它看起来数字多、材料长、计算烦,但一旦方法熟起来,反而比很多模块更容易形成稳定手感。 很多考生资料分析做得慢,不是因为完全不会,而是卡在几个细节上:材料找数慢、公式…

2026/6/26 8:07:58阅读更多 →
汽车线控系统核心:飞思卡尔56F8300在转向、制动与智能传感器中的应用与开发实战

汽车线控系统核心:飞思卡尔56F8300在转向、制动与智能传感器中的应用与开发实战

1. 从模拟到数字:汽车控制系统的范式转变在汽车工业的演进长河中,控制系统的核心正经历一场静默但深刻的革命。回想十几年前,当我第一次拆解一辆老式汽车的转向柱和制动总泵时,里面是错综复杂的液压管路、充满油液的助力缸和依靠机…

2026/6/26 12:09:36阅读更多 →
MTKClient终极指南:掌握联发科设备底层操作的7大核心能力

MTKClient终极指南:掌握联发科设备底层操作的7大核心能力

MTKClient终极指南:掌握联发科设备底层操作的7大核心能力 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient MTKClient是一款功能强大的开源工具,专为联发科芯片设备提…

2026/6/26 12:09:36阅读更多 →
高精度RTC芯片PCF2127T/PCF2129AT与OM13513评估板深度实操指南

高精度RTC芯片PCF2127T/PCF2129AT与OM13513评估板深度实操指南

1. 项目概述:为什么我们需要一颗高精度RTC?在嵌入式项目里混久了,你会发现一个有趣的现象:很多开发者对主控芯片、传感器、通信协议如数家珍,但往往对系统里那颗默默无闻的“实时时钟”(RTC)芯片…

2026/6/26 12:09:36阅读更多 →
Bently Nevada 135613-01-00 机壳膨胀 LVDT 位移传感器

Bently Nevada 135613-01-00 机壳膨胀 LVDT 位移传感器

一、完整型号分段释义 135613-01-00 1. 135613:基础系列 — 高温型机壳膨胀专用 LVDT 位移传感器(Case Expansion Transducer) 2. 01:量程编码,25.4mm(1 英寸) 测量行程 3. 00:标…

2026/6/26 12:09:36阅读更多 →
Linux系统下Libero SoC安装部署全攻略:从依赖排查到稳定运行

Linux系统下Libero SoC安装部署全攻略:从依赖排查到稳定运行

1. 从一次典型的安装失败说起:为什么你的Libero SoC在Linux上“水土不服”?如果你是一名FPGA开发者,或者正在涉足Microsemi(现在是Microchip的一部分)的FPGA设计,那么Libero SoC Design Suite大概率是你绕不…

2026/6/26 12:09:36阅读更多 →
英特尔CEO陈立武“纠错”14个月:股价涨超530%,18A工艺能否助力冲刺万亿市值?

英特尔CEO陈立武“纠错”14个月:股价涨超530%,18A工艺能否助力冲刺万亿市值?

裁员与降本增效在众多“纠错”手段中,裁员是改善公司财务状况最直接、快捷的方式。根据英特尔最新披露的数据,其员工数降至2012年以来的最低水平——从2024年第三季度末财报合并口径的120400人缩减至2026年一季度的83200人,净减少37200人&…

2026/6/26 12:04:35阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/26 11:03:22阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/26 4:15:25阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/26 9:29:01阅读更多 →
HPE (慧与) 服务器专用 ESXi 9 全套官方定制资源详解 + 完整部署升级教程

HPE (慧与) 服务器专用 ESXi 9 全套官方定制资源详解 + 完整部署升级教程

一、前言:企业运维痛点与资源价值自博通收购 VMware 之后,原 VMware 公开免费下载渠道全面关闭,企业运维人员想要获取适配 HPE 慧与服务器的 ESXi 9 原厂镜像,必须注册博通账号、绑定有效授权才能下载,无授权账号无法获…

2026/6/26 0:02:15阅读更多 →
Kotlin的@JvmStatic与@JvmField:与Java互操作的注解

Kotlin的@JvmStatic与@JvmField:与Java互操作的注解

Kotlin作为一门现代编程语言,与Java的互操作性一直是其核心优势之一。为了让Kotlin代码能够无缝对接Java,Kotlin提供了多种注解来优化互操作体验,其中JvmStatic和JvmField是两个关键注解。它们分别用于解决静态成员和字段在Java中的访问问题&…

2026/6/26 0:02:15阅读更多 →
深入解析musl libc中的mmap实现源码

深入解析musl libc中的mmap实现源码

最近在阅读musl libc源码时,发现其mmap的实现非常精妙,特分享给大家。 一、代码整体结构 这段代码实现了__mmap函数,并通过weak_alias导出为mmap。这是典型的musl libc风格——提供弱符号以便用户可以重写。 weak_alias(__mmap, mmap); 二…

2026/6/26 0:02:15阅读更多 →