[技术问答] nano130 DAC

[复制链接]
2438|4
 楼主| yytpy2008 发表于 2013-9-6 15:59 | 显示全部楼层 |阅读模式
各位大侠:
  新唐nano130开发板的平台。
12DAC。基准电源电压,实测3.06V,跟它数字码2048,测量电压是1.53。这个没有什么问题。
可是我分别给了不同的数据,测试结果差的比较多,数据如下:
测的数据如下:3000.3235V5000.4620V8000.6693V12000.9460V15001.1538V.
直接测板子的108引脚。例如跟定数字量为800
(800/4095)*3.05=0.596.但是实际测量是0.669V
代码如下:
void DAC_IRQHandler(void)
{
if(DAC->STS0 & DAC_STS_IFG) {
DAC->DATA0=800;//Increase value of output data
DAC_CLEAR_CH0_INTERRUPT; //Clear DAC interrupt
}
}
const uint8_t us = ((PCLK) / 1000000);
#define ECLK 6000000    // clock feed to timer
int32_t main (void)
{
TIMER_Init(TIMER0, 11, 1000, TIMER_CTL_MODESEL_PERIODIC);//Set periodic mode and 1000 tick/second
/* Enable triggger event for DAC.*/
TIMER_ConfigTriggerEvent(TIMER0, TIMER_CTL_DACTEEN, TIMER_CTL_TIMEOUTTRGEN);
GCR->PC_L_MFP = (GCR->PC_L_MFP & ~PC6_MFP_MASK) | PC6_MFP_DA_OUT0; // Set GPC6 for DAC0
DAC_Init(); //Initiate DAC
DAC_SetRefVol(DAC_COMCTL_REFSEL_AVDD); //Set AVDD for reference voltage
DAC_SetDelayTime(0, us * 6, us * 2); //Initiate delay time
DAC_SetLoadSel(0, DAC_CTL_LSEL_TIMER0_CH0); //Set trigger source from timer 0
DAC_CH0_POWER_ON; //Turn on DAC power
while(DAC_GetState(0) != DAC_IDLE); // Wait for power stable
DAC_EnableInterrupt(0); //Enable interrupt
TIMER_Start(TIMER0);//Start timer
while(1);
}
缥缈九哥 发表于 2013-9-7 21:40 | 显示全部楼层
测量是否准确 ?基准用什么?有没有注意半导体的非线性误差?
zxf0168 发表于 2014-1-27 22:03 来自手机 | 显示全部楼层
基准呢,楼主你的基准呢
zxf0168 发表于 2014-2-3 18:32 来自手机 | 显示全部楼层
楼主基准没把握啊
598330983 发表于 2015-2-28 15:11 来自手机 | 显示全部楼层
基准电压很重要的,这种需要量化的,必须有准确的参考
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

75

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部