打印
[技术问答]

nano130 DAC

[复制链接]
1760|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 | 只看该作者
楼主基准没把握啊

使用特权

评论回复
5
598330983| | 2015-2-28 15:11 | 只看该作者
基准电压很重要的,这种需要量化的,必须有准确的参考

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

75

帖子

1

粉丝