使用的型号是 MSP430F2616
DAC初始化时,校准一直不能通过。代码如下:
DAC12_0CTL_bit.DAC12ENC = 0u; // DAC12 is disabled
DAC12_1CTL_bit.DAC12ENC = 0u; // DAC12 is disabled
// Reset the control registers to thier default power-up states.
DAC12_0CTL = 0x0000u;
DAC12_1CTL = 0x0000u;
DAC12_1CTL_bit.DAC12OPS = 0u; // outputs: DAC0 = P6.6, DAC1 = P6.7
DAC12_1CTL_bit.DAC12SREFx = 2u; // DAC reference = eVref+
DAC12_1CTL_bit.DAC12RES = 0u; // 12-bit resolution
DAC12_1CTL_bit.DAC12LSELx = 0u; // DAC12 values loaded immediately
DAC12_1CTL_bit.DAC12IR = 1u; // DAC output at 1X reference input
DAC12_1CTL_bit.DAC12AMPx = 7u; // In/out buffers = high speed/current
DAC12_1CTL_bit.DAC12DF = 0u; // staright binary data (0 to 0xFFFF)
DAC12_1CTL_bit.DAC12IE = 0u; // DAC12 interrupts disabled
DAC12_1CTL_bit.DAC12IFG = 0u; // clear any existing flags
DAC12_1CTL_bit.DAC12GRP = 0u; // DAC outputs are not grouped
DAC12_1DAT = 0u; // Set initial output = 0V
DAC12_1CTL_bit.DAC12ENC = 1u; // DAC12 is enabled
DAC12_1CTL_bit.DAC12CALON = 1u; // Initiate DAC12 Calibration
// Wait for calibration complete. bit will automatically reset
do {TEST_HARNESS_TICK;} while(1u == DAC12_1CTL_bit.DAC12CALON);
请问这应该是什么问题,是DA的输出引脚电压一致有波动导致有问题吗?或者有什么定位的。
灰小子:
楼主是从dsp转过来的吧?
TEST_HARNESS_TICK是宏定义?
weifeng liu1:
回复 灰小子:
是宏定义, nop指令。
weifeng liu1:
回复 weifeng liu1:
是概率性的,从boot跳转到主程序后,DAC校准会概率性的不能通过,且跟板卡相关,有的板卡会出现,有的做几千次也不会出现,我想了解下DAC的校准原理,datasheet上的太简单了。或者说,这个校准跟外部电路有关系吗
weifeng liu1:
回复 灰小子:
好的,多谢。
Susan Yang:
回复 weifeng liu1:
DAC校准的原理是 在比较器模式下,用运算放大器检查DAC的输出。将结果与偏移量进行比较。如果关闭,则使用微调阵列修改DAC的输出放大器。目前使用二进制搜索算法。
但这方面资料确实很少,我去确认下再给您回复
灰小子:
回复 Susan Yang:
hi,Susan Yang
这个自检的过程,dac输出和外部电路有没有断开?如果没有断开,自检就会受外部电路的影响。
weifeng liu1:
回复 Susan Yang:
我断开了外部电路,也是校准通不过的。请问您这里找到相关资料了吗
Susan Yang:
回复 weifeng liu1:
是不是踩中了勘误表里的坑?
weifeng liu1:
回复 Susan Yang:
我确认下,有结果了回复您。