AD7124的调试总结

AD7124芯片的调试闭坑总结
AD7124的评估板资料 https://www.analog.com/media/en/technical-documentation/user-guides/EVAL-AD7124-8SDZ_UG-856.pdf

1,SPI通讯速率尽量不要大于5M,但是实测,短线情况下9M通讯正常。
2,SYNC引脚一定要拉高,拉低的话不转换。(之前我的电路,本引脚直接悬空,我本来调通了,然后运行了几天,居然停止转换了,实际读寄存器,都是正常的,检查电路也没有损坏,多放查找,这个引脚需要拉高才行,在官方的评估板资料里,也是这样接的,MGR坏得很,说明书里面并没说,如下图)。
在这里插入图片描述

3,有好多网友用官方驱动发现无法通过ADC_CONTROL寄存器控制内部基准,设置完以后,读取其他寄存器数据正常,唯独该寄存器读取为0.解决方法:寄存器写入的时候前后加10ms左右即可,太快会导致control寄存器写入失败。具体原因没有深究。所以对芯片初始化完成后务必要重新读取寄存器看是否写入成功。
4,注意选择参考电压,如果选择外部参考电压,首先保证外部连接了外部基准;如果选择内部基准,要保证ADC_CONTROL寄存器里把内部基准电压打开。否则的话转换会失败,结果出错。为了测试方便刚开始可以选择AVDD为基准。
5,REFOUT引脚,需要对地接一个0.1uF电容,否则会出问题。(这个我也是在网上看的,出什么问题,我也忘了,但是我记得,确实必须接0.1uF电容。在官方的评估板里,也是这样接的,MGR坏得很,说明书里面并没说,如下图
在这里插入图片描述
6,在初始化写入AD7124寄存器前,最好一定读一次状态寄存器,否则可能写入寄存器失败。我在使用中,AD7124-8就不用读状态寄存器,每次AD重新上电,或者只是MCU重启,都能写入寄存器数据;但是同样的程序,只是芯片换成AD7124-4,就不许,后发现只要读一次状态寄存器,就正常了。实际就是读状态寄存器,清除上电复位标志
在这里插入图片描述
7,AI引脚可以配置为读取内部20mv信号,我配置成读内部20mv信号,基准也采用内部基准2.5V(可以配置内部基准从REFOUT输出,我测量过,确实比较准),计算得出应该是18.9mv,也有网友说是就18mv,看来这一点和官方数据有点出入,不过也不算什么了,还需要注意的是,测内部20mV信号时,请断开外部AI连接,否则可能AD芯片死机
8,精度问题,按官方文档,最高也就能到22位精度。我用本芯片做RTD测量电路,感觉也就能达到18位精度而已,这一点和官方文档说法其实还是比较吻合的了。更多精度分析,请看我另一篇文章。总体来讲,精度可达21至22位。
9,AD工作模式及校准:
连续转换模式(默认):就是一直转换
单次转换模式:当ADC_CONTROL寄存器配置为单次模式,就对当前通道进行一次转换,然后转入待机模式。我拿来做了低功耗,需要测量时,就配置成单次转换模式,然后就不用管AD芯片了,它转换完会自动进入待机模式。
待机模式:寄存器内容会保持,具体看说明书吧,我只说一点,待机模式时,激励电流源会自动关断(不会修改IO_CONTROL_1寄存器内容,不要理解错了)。
关断模式:全部功能关闭,寄存器会复位,退出关断模式时,所有寄存器必须重新编程。
空闲模式:在内部零电平(失调)校准、系统零电平(失调)校准完成后,会自动进入空闲模式,(除失调寄存器外)寄存器内容不会改变。
内部满量程(增益)校、零电平(失调)校准:这两种模式,一般都是要同时执行的,一般不会单独只执行一个。所谓内部校准,就是在芯片内部,将 AI 输入端正负,分别与基准REF正负端短接,然后得出内部的偏移值、或定值。
执行 内部满量程(增益)校、零电平(失调)校准的过程:如果是单通道模式,先把其他寄存器配置好(如果不是单通道模式,那就一个一个通道的关闭吧),设置为 中功率 --> 空闲模式 --> 对应通道失调寄存器 写入0x800000(或上电复位值本身就是) --> 设置为 内部满量程(增益)校准模式 --> 校准完成自动进入空闲模式 --> 设置为 内部零电平(失调)校准 --> 校准完成自动进入空闲模式; 应当在校准完成后,读取 失调寄存器、增益寄存器的值,保存起来,然后以后上电、重启后,应在设置为 空闲模式/待机模式 时,才准写入这二个寄存器的值。
系统校准,也就是外部校准,需要在外部手动短接零电平 或 满量程电平,不过不需要设置 空闲模式、中功率那些,按理说,外部校准应该比内部校准准确度更好。
满量程校准,会重新设置 增益寄存器的值,零电平校准,会设置 失调寄存器的值。
10、REFIN(+) 与 REFIN(-)之差的范围是 1V到3.3V ,这个一定要注意,低于1V,芯片可能会不转换,这个问题折磨了我很久。并且就算转换,也会导致精度不稳定。。我做RTD测量时,选定过2K电阻,横流500uA,刚好1V,实际测试中,刚开始没问题,一二个小时、几小时、几十小时后,芯片会停止转换,一会行一会不行。
11、在实际使用过程中,注意 AI通道的对AVSS的绝对电压范围,REFIN(+) (-) 对AVSS的绝对电压范围,恒流输出通道对对AVSS的绝对电压范围,这个请查看手册参数。
12、电源问题:AVSS 与 IVSS ,最好单独供电,比如用2个LDO电源分开供电,我是直接用了2个独立的隔离电源3.3V。在我最开始使用时,采用1个3.3V给AVSS和 IVSS一起供电,直接连接在一起,并且有1mA的恒流输出,运行一段时间后(可能是几天),测电流变成了0.2mA了,好像恒流源坏掉了,重启也是0.2mA;虽然是不是AVSS和 IVSS共同供电导致,无从考证,但是可以想象,这种同时供电,又有恒流输出,极有可能会影响到内部的供电问题;并且说明书上也有建议,有条件的话,最好单独供电。并且我采用单独供电后,就没再出现过这种情况了。
13、还是紧接着电源问题,当我用2个独立电源时,最开始,我买错了电源芯片,导致用了2个3.6V给AD芯片供电,然后MCU与其通信,好像没有什么问题,然后用了1天后,就开始通信故障,经过我反复不停重复,发现居然报了ROM故障(AD7124的ERR寄存器)。重启,或者MCU重新配置后,又可以用一段时间了。后面这颗芯片就算采用3.3V供电了,还是会出问题。最后,我采用了新的芯片+2个3.3V电源,就再没出现过了。很显然,这个问题就是3.6V供电造成的。。。
综上所述,可见该芯片,并没有想象中那么NB。

  • 23
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 26
    评论
AD9910是一款由Analog Devices公司推出的高精度频率合成器,可用于无线通信系统、测量仪器、射频信号生成器等应用中。 Verilog是一种硬件描述语言(HDL),它用于描述电子系统的硬件结构和行为。使用Verilog可以对AD9910进行功能模拟、性能分析和验证。 AD9910的Verilog代码可以通过对AD9910的寄存器进行编程来实现对其各项功能的控制。Verilog代码中的各个模块可以分别描述AD9910的PLL、DDS以及数字控制部分,通过编写相关的寄存器读写操作来完成对AD9910的配置和控制。 编写AD9910的Verilog代码时需要了解AD9910的寄存器结构和各个寄存器的功能。编写代码时需要正确设置寄存器的位掩码和相应的数值,以实现对AD9910各项功能的启用和配置。同时,还需要注意时序和时钟的设置,以确保数据的正确传输和处理。 AD9910的Verilog代码可以通过仿真工具进行功能验证和性能分析。通过对仿真结果的观察和分析,可以评估AD9910的工作性能和设定参数的准确性,同时也可以通过仿真来识别潜在的问题和优化设计。 总结来说,AD9910的Verilog代码用于对其进行功能模拟和验证,可以通过编写和调试代码来控制AD9910的各项功能,并通过仿真工具进行性能分析和优化设计。这种硬件描述语言的使用可以提高AD9910的开发效率和可靠性,为应用领域的设计带来更好的灵活性和可扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值