407vgt7的vref是3.03v,设置4095时DAC输出是3.16v?
采用的是单独设计的基准源,应该是准确的,设置0时DAC输出0.18v,这种能通过程序解决吗?还是需要程序来做补偿才行?可以找一个最小系统板试试看这个现在还存在不。
具体排查的话,有以下几个思路
1.检查整颗芯片的所有模拟IO口(不管是否有使用)有无接入超过Vdd+0.3V的电压,因为模拟IO为非FT口,外接超过Vdd+0.3V的电压的话就会存在漏电情况;
2.检查代码配置,用于DAC输出的IO有无配置正确的模式,比如如果错误的配置为了上拉输入的话就会存在问题;
3.核对DAC口上的外部电路,因为DAC驱动能力有限,若外部电路负载过大,也有可能导致实际DAC输出电压出现异常。 你是不是没启动校准啊?
一般来说,可以自己补偿的,这样的话也可以
你最好多测几组数据试试,看看是不是这方面的问题
分析可能的原因
DAC 输出在设置为 0 时不为 0,可能是由于 DAC 本身存在偏移误差。这可能是由于芯片内部的模拟电路元件(如放大器等)的特性不完全匹配导致的。当设置为 0 时,理论上输出应该为 0V,但实际输出了 0.18V,说明存在一个固定的偏移量。
设置 DAC 输出为满量程(4095)时,输出电压高于预期的 3.03V(达到 3.16V),这可能是增益误差。即实际的增益比理论增益稍高,导致输出电压偏高。
可以在程序中进行偏移补偿。在每次设置 DAC 输出值之前,先减去偏移量对应的数字值。首先需要确定偏移量对应的数字值,假设 DAC 是 12 位的(0 - 4095),根据线性关系计算偏移量对应的数字值。
对于增益误差,同样可以通过计算来补偿。已知当数字值为 4095 时,输出电压为,理论参考电压。实际增益,理想增益。
所以在设置 DAC 输出值时,实际写入 DAC 寄存器的数字值(需要将转换为整数,并且保证在 0 - 4095 范围内)。例如,如果要输出一个理论上数字值为 2000 对应的电压,实际写入 DAC 寄存器的值约为(转换为整数后)。
在进行补偿后,需要对不同的输出值进行测试和验证。可以使用高精度电压表来测量 DAC 输出电压,检查输出是否符合预期。如果仍然存在误差,可以进一步调整补偿系数或者检查硬件电路是否存在其他问题(如电源噪声、布线不合理等)。 可以通过程序解决的,用补偿的方式就好了,但是需要多取几组数据,做个线性均衡,不然补偿也是有误差的
页:
[1]