查看: 1081|回复: 0

ADI EVAL-ADuCM360QSPZ开发套件试用报告四

[复制链接]

该用户从未签到

发表于 2018-5-29 08:44:47 | 显示全部楼层 |阅读模式
分享到:
这一期给大家带来的是DAC的电压控制输出,在实际控制过程中需要对某些电机进行电压控制。以往在使用DAC的时候,一般都是5V输出,这次改换为3.3V输出(实测为3.28V)有点难搞,需要增加一个升压电路才能达到原来的控制效果。我就给大家讲一下ADC的控制,至于升压电路嘛,大家可以发挥自己的才智去思考一下。老规矩,贴代码。
void StartDAC(){        if(Tab[0]==0x02)        {                a=(Tab[1]<<24)|(Tab[2]<<16)|(b<<8)|c;              DacCfg(DACCON_CLR_Off,DACCON_RNG_IntVref,DACCON_CLK_HCLK,DACCON_MDE_12bit);                printf("DAC=%fmV\r\n",(1200.0/4095*((Tab[1]<<8)|Tab[2])));                DacWr(0,a);    Tab[0]=0x00;     Tab[1]=0x00;    Tab[2]=0x00;                 }}不需要初始化函数了,直接在while循环里见吧。上面的函数就是对DAC输出的直接控制了,函数也挺容易理解的,我就给大家简单说一下吧。还是接着之前的几篇经验,所以这里就比较好理解了。首先这个数组在之前就已经定义过了,这里只需要调用一下就好,然后由于DacWr()函数需要写入32位数据,所以我将数组里第二位数据左移24位(第一位数据是标志),然后和后面的数据组合就可以组成DAC控制数据了。举个例子,比如D540000,输出就是1V,因为调用的是内部参考电压,所以计算过程就是:1200/4095*D54=1000mV,当然D54要转换成十进制数的。才串口界面打印出来的就是DAC的输出电压,还是比较精确的。经过多次测试,误差大概在0.1mv左右,基本上满足测试要求。初始化函数不需要,但是记得要和之前几篇经验中写的一样,将Start函数放到指定位置。
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条

手机版|小黑屋|与非网

GMT+8, 2024-4-19 05:07 , Processed in 0.132265 second(s), 16 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.