|
背景:公司之前的产品是采用AD7793,话说这个芯片稳定性和精度表现都很不错,但是采样率有点低,而且听ADI的技术人员说快停产了AD7124是AD7793的升级产品,未雨绸缪做个实验测试一下。之前发了一个关于AD7124的提问贴 https://www.amobbs.com/thread-5718644-1-1.html?_dsign=7e6c2407 由于各种原因调试过程坎坷,现在终于调通,分享一下调试注意事项和源代码,希望对坛友有用。
先吐槽一下ADI的驱动程序写的真的有点繁琐。
1,ADI技术人员说SPI通讯速率尽量不要大于5M,但是实测STM32F103,短线情况下9M通讯正常。再快就出错了。刚开始测试可以慢一点,具体SPI的配置就不多说了,看代码。
2,SYNC拉高即可,拉低的话不转换。注意AVDD范围是2.7~3.6V 做测试的时候不小心接了5V,竟然没烧还能用~~
3.有好多网友用官方驱动发现无法通过ADC_CONTROL寄存器控制内部基准,设置完以后,读取其他寄存器数据正常,唯独该寄存器读取为0.解决方法:寄存器写入的时候前后加10ms左右即可,太快会导致control寄存器写入失败。具体原因没有深究。
所以对芯片初始化完成后务必要重新读取寄存器看是否写入成功。(此功能已在附件代码里加入了)
4.注意选择参考电压,如果选择外部参考电压,首先保证外部连接了外部基准;如果选择内部基准,要保证ADC_CONTROL寄存器里把内部基准电压打开。否则的话转换会失败,结果出错。为了测试方便刚开始可以选择AVDD为基准。
5.附件代码是基于STM32F103C8T6的完整工程可以直接用,想懒省事可以直接用到STM32F103RE等,嘿嘿~~
ret = AD7124_Setup(&ad7124, AD7124_SLAVE_ID, (ad7124_st_reg *)ad7124_regs);
该函数完成芯片的初始化设置。新加入了读取所有寄存器的功能,仿真可以看到。
ad7124_regs.c这个源文件里有配置所有寄存器的数据,可以直接修改。新加入各种不同功能的配置数据,需要哪个直接把注释符号去掉使用,同时加了注释。
6.AD7124-4 和AD7124-8程序基本通用 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|