查看: 1340|回复: 0

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

[复制链接]

该用户从未签到

发表于 2018-6-5 08:53:22 | 显示全部楼层 |阅读模式
分享到:
这一期给大家带来的是利用评估板上的热电阻(RTD)进行温度检测,不过不同的是检测RTD的电压值没有进行最后的温度换算。为了是测量值更精准一些,采用的是差分模式。先看一下热电阻部分的电路图。

如上图所示,J6和J7要短接起来。然后从AIN0端给一个正输入,给AIN1端口一个负输入,然后测量两个端口之间的差值即为测量值。当然需要给AIN6一个恒流源的输入,以便计算出电压值。分析完原理后就可以进行编程了。首先还是贴出来ADC的初始化函数。
void ADC1_Init(){   AdcGo(pADI_ADC1,ADCMDE_ADCMD_IDLE);                    AdcMski(pADI_ADC1,ADCMSKI_RDY,1);                                         AdcFlt(pADI_ADC1,124,14,FLT_NORMAL|ADCFLT_NOTCH2|ADCFLT_CHOP);              AdcRng(pADI_ADC1,ADCCON_ADCREF_INTREF,ADCMDE_PGA_G32,ADCCON_ADCCODE_INT);      AdcBuf(pADI_ADC1,ADCCFG_EXTBUF_OFF,ADCCON_BUFBYPN|ADCCON_BUFBYPP|ADCCON_BUFPOWP|ADCCON_BUFPOWN);    AdcPin(pADI_ADC1,ADCCON_ADCCN_AIN1,ADCCON_ADCCP_AIN0);             AdcGo(pADI_ADC1,ADCMDE_ADCMD_CONT);                             NVIC_EnableIRQ(ADC1_IRQn);                                 <br>选用的是ADC1,程序的第一行是将ADC1设置为空闲模式,以便于开始读取新值。下一行是使能ADC1的中断准备,接着是设置滤波,设置ADC 的输入范围,选择内部参考值,选择增益是32。然后下面一行是关闭输入缓冲和外部参考,接着就是选择AIN0的正输入和AIN1的负输入,然后启动ADC1的连续转换模式,最后就是使能ADC1的中断。然后是恒流源的初始化函数。
void IEXC_Init(){   IexcDat(IEXCDAT_IDAT_200uA,IDAT0En);      IexcCfg(IEXCCON_PD_off,IEXCCON_REFSEL_Int,IEXCCON_IPSEL1_Off,IEXCCON_IPSEL0_AIN6);}恒流源的初始化函数第一行是设置200uA的电流输出,提供给热电阻,然后设置AIN6为电流输出端。接着就可以写ADC1的中断函数,子函数先贴出来。void ADC1_Int_Handler (){   volatile unsigned int uiADCSTA = 0;   uiADCSTA = pADI_ADC1->STA;                  ulADC1Result = AdcRd(pADI_ADC1);                  bSendResultToUART = 1;                  }读取ADC1的状态寄存器,然后从ADC的结果寄存器中读取转换值。最后一行就是发送数据的判断标志。然后开始编写ADC采样的子函数,老规矩,贴出来函数。void StartTem(){                                                if (bSendResultToUART == 1)                                       {                 bSendResultToUART = 0;                     fVolts = fVoltage;         fVolts   = (1.2 / 268435456);               fVoltage = (ulADC1Result * fVolts);                   if(Tab[0]==0x03)                {                printf ("Temputer=%f V\r\n",fVoltage );                Tab[0]=0x00;          Tab[1]=0x00;         Tab[2]=0x00;                }                                                         }                        }首先清除掉发送数据的标志位,接下来就是计算ADC的采样电压了,最后输出电压值并清空数组。然后在主函数中调用初始化函数,并在while循环中使用温度采集函数,这样就可以在串口中通过发送指令测得热电阻两端的电压了。
回复

使用道具 举报

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

本版积分规则

关闭

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

手机版|小黑屋|与非网

GMT+8, 2024-11-18 10:54 , Processed in 0.135671 second(s), 18 queries , MemCache On.

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

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.