基于硬件二分法的ADC自动校准方法与流程

文档序号:20675798发布日期:2020-05-08 17:48阅读:789来源:国知局
基于硬件二分法的ADC自动校准方法与流程

本发明涉及mcu校准技术领域,尤其涉及一种基于硬件二分法的mcu芯片adc自动校准方法。



背景技术:

现有adc类mcu常规校准是通过cp测试(中测)或者ft测试(成测)进行修调,由于每个芯片修调值不是固定的,常规测试机只能通过串行测试逐个修调,测试时间成倍增加,而且测量电压会有误差,以图1所示的芯片为例,测试时,芯片6脚sck端口、7脚sda端口上电并分别串行输入固定的时钟和数据进入adc内部基准修调模式,之后通过sck端口配合sda端口串行输入不同的校准值vcal<4:0>,芯片8脚vrefout端口会输出不同的电压,直至vrefout输出的电压值符合标准设计值,校准测试结束,然后将此校准值烧录至mcu的配置字中,上述校准测试过程串行输入数据以及等待vrefout端口输出后测量电压的时间都会较长。因此现有的mcu芯片adc自动校准方法存在测试时间长,测试程序繁杂的问题。



技术实现要素:

针对现有技术中的问题,本发明提供一种基于硬件二分法的mcu芯片adc自动校准方法。

为实现以上技术目的,本发明的技术方案是:

一种基于硬件二分法的mcu芯片adc自动校准方法,包括以下步骤:

a.设定目标修调电压值vg;

b.设定修调校准值范围,校准值vcal以<x:0>变化,即校准值一共有2x+1个档位,逐级递增,内部基准电压值vref随着校准值vcal的递增而递增,校准值vcal为第1档时,内部基准电压值为最小值vrefmin,校准值vcal为第2x+1档时,内部基准电压值为最大值vrefmax,校准值的初始设定档位为第2x+1档;

若每一档修调的电压值为vt,校准值vcal每递增一个档位,vref递增vt,则2x+1档的修调电压范围为2x+1*vt,修调完成后的修调校准允许误差范围δvt≤vt/2,修调范围为vg±vt/2;

c.根据mcu芯片功能说明,在mcu芯片的sck端口输入时钟信号,在sda串行输入端口输入相应数据,使mcu芯片进入adc内部基准修调模式;

d.进入adc内部基准修调模式后,首先判定内部状态机输出的内部基准电压值vref是否落入修调范围vg±vt/2;如果未落入,则修调失效,如果落入,则修调有效,在sck端口输入一个时钟信号,开始修调;

e.开始修调后,外部输入目标修调电压值vg,内部状态机输出校准值vcal为第2x+1档时对应的内部基准电压值vref,利用adc模块内部的比较器该内部基准电压值vref与目标修调电压值vg进行比较,根据比较结果变化校准值vcal的设定档位,采用二分法,每输入一个时钟信号进行一次比较,直至比较结果符合修调校准允许误差范围δvt时,结束比较,最后一次比较所采用的修调校准值即为正确的修调校准值,将其烧写入mcu芯片的配置字,修调校准结束,sda串行输入端口返回高电平以示修调校准结束。

作为优选,步骤d包括以下步骤:

d1.进入adc内部基准修调模式后,外部输入测试修调电压值vg-vt/2,内部状态机给出校准值vcal为第2x+1档时对应的内部基准电压值vrefmax,利用adc模块内部的比较器将内部基准电压值vrefmax与测试修调电压值vg-vt/2进行比较,若vrefmax<vg-vt/2,则比较器输出0,判定为可修调的最大值小于目标电压,sda输出高电平,修调失效;否则在sck端口输入一个时钟信号,进入d2步骤;

d2.外部输入测试修调电压值vg+vt/2,内部状态机给出校准值vcal为第1档时对应的内部基准电压值vrefmin,利用adc模块内部的比较器将内部基准电压值vrefmin与测试修调电压值vg+vt/2进行比较,若vrefmin>vg+vt/2,则比较器输出1,判定为可修调的最大值小于目标电压,sda输出高电平,修调失效;否则在sck端口输入一个时钟信号,进入步骤e。

从以上描述可以看出,本发明具备以下优点:

利用本发明所述方法对mcu芯片进行adc修调校准时,不仅可以实现并行测试,成倍地减少测试时间,而且测试机可以提供非常精准的电压,使得修调精度得以提高,并且现有的普通烧写器就可以实现上述方法,在芯片竞争日益激烈的环境下不仅大大降低了测试成本和测试难度,而且提高了芯片的价格竞争力。

附图说明

图1是现有mcu芯片的结构示意图;

图2是本发明的应用示意图。

具体实施方式

结合图2,详细说明本发明的一个具体实施例,但不对本发明的权利要求做任何限定。

如图2所示,一种基于硬件二分法的mcu芯片adc自动校准方法,包括以下步骤:

a.设定目标修调电压值vg;

b.设定修调校准值范围,校准值vcal以<x:0>变化,即校准值一共有2x+1个档位,逐级递增,内部基准电压值vref随着校准值vcal的递增而递增,校准值vcal为第1档时,内部基准电压值为最小值vrefmin,校准值vcal为第2x+1档时,内部基准电压值为最大值vrefmax,校准值的初始设定档位为第2x+1档;

若每一档修调的电压值为vt,校准值vcal每递增一个档位,vref递增vt,则2x+1档的修调电压范围为2x+1*vt,修调完成后的修调校准允许误差范围δvt≤vt/2,修调范围为vg±vt/2;

c.根据mcu芯片功能说明,在mcu芯片的sck端口输入时钟信号,在sda串行输入端口输入相应数据,使mcu芯片进入adc内部基准修调模式;

d.进入adc内部基准修调模式后,首先判定内部状态机输出的内部基准电压值vref是否落入修调范围vg±vt/2;如果未落入,则修调失效,如果落入,则修调有效,在sck端口输入一个时钟信号,开始修调,具体包括以下步骤:

d1.进入adc内部基准修调模式后,外部输入测试修调电压值vg-vt/2,内部状态机给出校准值vcal为第2x+1档时对应的内部基准电压值vrefmax,利用adc模块内部的比较器将内部基准电压值vrefmax与测试修调电压值vg-vt/2进行比较,若vrefmax<vg-vt/2,则比较器输出0,判定为可修调的最大值小于目标电压,sda输出高电平,修调失效;否则在sck端口输入一个时钟信号,进入d2步骤;

d2.外部输入测试修调电压值vg+vt/2,内部状态机给出校准值vcal为第1档时对应的内部基准电压值vrefmin,利用adc模块内部的比较器将内部基准电压值vrefmin与测试修调电压值vg+vt/2进行比较,若vrefmin>vg+vt/2,则比较器输出1,判定为可修调的最大值小于目标电压,sda输出高电平,修调失效;否则在sck端口输入一个时钟信号,进入步骤e

e.开始修调后,外部输入目标修调电压值vg,内部状态机输出校准值vcal为第2x+1档时对应的内部基准电压值vref,利用adc模块内部的比较器该内部基准电压值vref与目标修调电压值vg进行比较,根据比较结果变化校准值vcal的设定档位,采用二分法,每输入一个时钟信号进行一次比较,直至比较结果符合修调校准允许误差范围δvt时,结束比较,最后一次比较所采用的修调校准值即为正确的修调校准值,将其烧写入mcu芯片的配置字,修调校准结束,sda串行输入端口返回高电平以示修调校准结束。

根据上述方法,给出具体应用示例:

设定目标修调电压值为4v,修调校准值vcal以<4:0>变化,即校准值vcal一共有32个档位,逐级递增,内部基准电压vref随着校准值vcal递增而递增,校准值vcal为第1档(即vcal=00000)时,内部基准电压为最小值,校准值为第32档(即vcal=11111)时,内部基准电压为最大值,校准值的初始设定档位为第17档(即vcal=10000);

假设每一档可修调vt=0.01v,校准值vcal每递增一个档位,vref递增0.01v,则32档修调范围为0.32v,最终修调后误差应<=vt/2=0.005v;

若修调校准值vcal的中间值(即初始设定档位)为vcal=10000,则初始vref只需3.845v<=vref<=4.165v范围内则可通过修调满足结果3.995v至4.005v范围内。

利用adc模块内部的比较器将内部基准电压与外部输入的目标修调电压值进行比较,且采用二分法比较的比较过程如下:

首先判断是否在可修调范围内:

第一步:外部测试机给出测试修调电压3.995v,内部状态机初始值为vcal=11111,若vref<3.995v,比较器输出0,此时判定为可修调的最大值小于目标电压,sda输出高电平,修调失效;否则输入一个sck时钟,进入第二步;

第二步:外部测试机给出测试修调电压4.005v,输入一个sck时钟,内部状态机使得vcal=00000,若vref>4.005v,比较器输出1,此时判定为可修调的最小值大于目标电压,sda输出高电平,此修调失效;否则输入一个sck时钟,进入第三步;

第三步:

(1)第一种情形:假设初始vref=4.153v:

第一次比较,外部测试机给出电压4.000v,内部状态机vcal=10000:

则vref=4.153v,vref>目标修调电压4v,比较器输出1,输入一个sck时钟vcal<4>置0,vcal<3>置1;

第二次比较,内部状态机vcal=01000:

则vref=4.153v-0.08v=4.073v,vref>目标修调电压4v,比较器输出1,输入一个sck时钟vcal<3>置0,vcal<2>置1;

第三次比较,内部状态机vcal=00100:

则vref=4.153v-0.12v=4.033v,vref>目标修调电压4v,比较器输出1,输入一个sck时钟vcal<2>置0,vcal<1>置1;

第四次比较,内部状态机vcal=00010:

则vref=4.153v-0.14v=4.013v,vref>目标修调电压4v,比较器输出1,输入一个sck时钟vcal<1>置0,vcal<0>置1;

第五次比较,内部状态机vcal=00001:

则vref=4.153v-0.15v=4.003v,vref>目标修调电压4v,比较器输出1;

第五次比较所采用的修调校准值vcal=00001即为正确的修调校准值,输入一个sck时钟将其烧写入mcu芯片的配置字,sda串行输入端口返回高电平以示修调校准结束。

(2)第二种情形:假设初始vref=3.889v,

第一次比较,外部测试机给出电压4.000v,内部状态机vcal=10000:

则vref=3.889v,vref<目标修调电压4v,比较器输出0,输入一个sck时钟vcal<3>置1;

第二次比较,内部状态机vcal=11000,则vref=3.889v+0.08v=3.969v,vref<目标修调电压4v,比较器输出0,输入一个sck时钟vcal<2>置1;

第三次比较,内部状态机vcal=11100,则vref=3.889v+0.12v=4.009v,vref>目标修调电压4v,比较器输出1,输入一个sck时钟vcal<2>置0,vcal<1>置1;

第四次比较,内部状态机vcal=11010,则vref=3.889v+0.10v=3.989v,vref<目标修调电压4v,比较器输出0,输入一个sck时钟vcal<0>置1;

第五次比较,内部状态机vcal=11011,则vref=3.889v+0.11v=3.999v,vref<目标修调电压4v,比较器输出0;

第五次比较所采用的修调校准值=11011即为正确的修调校准值,输入一个sck时钟将其烧写入mcu芯片的配置字,sda串行输入端口返回高电平以示修调校准结束。

从上述两种比较情形可以看出,若vref在修调范围内,则五次比较后,vref一定会在修调误差范围内。

从上述过程可以看出,利用本发明所述方法进行adc修调校准时,不仅可以实现并行测试,成倍地减少测试时间,而且测试机可以提供非常精准的电压,使得修调精度得以提高,并且现有的普通烧写器就可以实现上述方法,在芯片竞争日益激烈的环境下不仅大大降低了测试成本和测试难度,而且提高了芯片的价格竞争力。

综上所述,本发明具有以下优点:

利用本发明所述方法对mcu芯片进行adc修调校准时,不仅可以实现并行测试,成倍地减少测试时间,而且测试机可以提供非常精准的电压,使得修调精度得以提高,并且现有的普通烧写器就可以实现上述方法,在芯片竞争日益激烈的环境下不仅大大降低了测试成本和测试难度,而且提高了芯片的价格竞争力。

可以理解的是,以上关于本发明的具体描述,仅用于说明本发明而并非受限于本发明实施例所描述的技术方案。本领域的普通技术人员应当理解,仍然可以对本发明进行修改或等同替换,以达到相同的技术效果;只要满足使用需要,都在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1