CPU是100脚封装,512K的STM32F103VET6, 有独立的参考电压管脚。 (1)参考电压接2.5V的参考稳压源(LM285-2.5)。 (2)DAC1输出串联1K电阻接LM358同相输入端. (3) 万用表是UT71B(4位半)。
直接测量CPU的DAC1管脚的电压, 测试结果如下:
寄存器 DAC1管脚电压V 0 0.0584 1 0.0583 2 0.0598 3 0.0580
4 0.0604 5 0.0594 6 0.0602 7 0.0578
8 0.0606 9 0.0602 10 0.0615 11 0.0593
12 0.0614 (异常值,测量了多次均如此) 13 0.0601 14 0.0605 15 0.0578
16 0.0607 17 0.0605 18 0.0621 19 0.0602
20 0.0626
2000 0.6608 2001 0.6618 2002 0.66 2003 0.6634 2004 0.6603 2005 0.6629
4090 1.4427 4091 1.4566 4092 1.4468 4093 1.4568 4094 1.4571 4095 1.4820
注: (1)IO脚浮空状态也测量过,跟上面的值相差在1mV内, 但变大变小的规律是一样的. (2)寄存器每递增4个值才能保证大部分输出是单调递增的,也就是说大部分情况只有10bit分辨率,但有一个异常值12, 0.0614v说明连10bit分辨率都达不到。
我的疑问: (1) 输出电压为何不是单调递增的? (2) 当数据寄存器值等于 4095时,为何输出不是2.5V, 就算按手册的指标也应该有2.5-0.2v = 2.3V.
希望高人指点一下, 如果STM32的DAC的性能却是如此,那我们必须得加一个专业的12bitDAC芯片了.
|