每个ADC有12位、10位、8位和6位可选,具有多达19个复用通道,可测量来自16个外部源、2个内部源和VBAT通道的信号。这些通道的AD转换可在单次、连续、扫描或不连续采样模式下进行。ADC的结果存储在一个左对齐或右对齐的16位数据寄存器中。
从结构图上可以看出,16个GPIO可以通过模拟通道(模拟复用器)进行选择,如表8-2所示。其中注入通道最多选择4路进行AD转换,注入通道转化的总数写入ADC_JSQR寄存器的JL[1:0]中。同时规则通道也可以最多选择16路,输入ADC进行转换,规则通道转换的总数应写入ADC_SQR1寄存器的SQL[3:0]中。
表8-2 ADC对应的引脚通道
这里涉及两个概念:注入通道与规则通道。这两个通道都可以到达ADC进行转换,但区别是,注入通道的优先级高于规则通道,可以这样认为:规则通道是在正常情况下进行转换的,而注入通道具有中断性质,可以在规则通道进行的情况下强行停止转换而执行注入通道信号的转换。
比如测温系统放了7个热敏电阻,4个用于常规点检测,3个用于特殊点检测。平时显示器一直显示常规点的4个温度,当按键按下时,常规点检测暂停,马上进行3个特殊点的转换,并显示结果,直到松开这个按钮后,系统又回到常规点的检测。在该例中,4个常规点的温度检测相当于规则通道的概念,3个特殊点的温度检测相当于注入通道的概念。
对于多路信号转换的先后顺序(用于DMA模式下):规则通道的转换顺序在ADC_SQRx寄存器中选择;注入通道的转换顺序在ADC_JSQR寄存器中选择。
以规则通道为例,表8-3是规则通道序列寄存器ADC_SQRx的功能描述。所谓序列寄存器,指的是转换顺序,用于多个通道转换。三个寄存器SQR3、SQR2、SQR1共96位,其中96位数按5位数一组,分成16个组,用于存放转换顺序SQ1,SQ2,…,SQ16,分别代表第1个转换的对象,第2个转换的对象,…,第16个转换的对象。在相应的SQx中填入被转换的通道,就能形成多路模拟信号的转换顺序了。
表8-3 ADC_SQRx的功能描述
(www.xing528.com)
例如,小区住有16户住户,有16个公共信箱,邮递员每天按照编号1,编号2,…,编号16的顺序收取信箱里的信件,最先收取编号1,最后收取编号16。每个信箱只能放1封信,住户往这16个信箱放的信件可以根据喜好投递。每天可能有6封信、10封信等,但无论怎么投放,邮递员都只按照信箱的编号,从小到大来收取。这个例子里的SQ1,SQ2,…,SQ16这些位置类似于16个信箱,住户相当于通道编号,每天投放信件的数量相当于SQL的值。
假设要按顺序对通道9、通道3、通道1、通道8这4路模拟信号在规则通道内转换,首先设置SQL=3,表示有4路规则通道信号。按顺序,可以在第1、第2、第3、第4转换顺序位置SQ1、SQ2、SQ3、SQ4内分别填入通道9、通道3、通道1、通道8的代号ADC_IN9、ADC_IN3、ADC_IN1、ADC_IN8即可。
使用同样的方法使用注入通道。它也有注入序列寄存器,如表8-4所示。由于注入通道只有4条,因此不需要这么多控制位,因此只使用了ADC_JSQR3一个寄存器。32位数按5位一组,分成4组,分别是JSQ1,JSQ2,JSQ3,JSQ4,代表设置的第1个转换通道,第2个转换通道,…,第4个转换通道。注入通道的转换顺序与规则通道稍有不同。
当JL=3(4路注入通道)时,ADC转换通道的顺序为:JSQ1、JSQ2、JSQ3和JSQ4。
当JL=2(3路注入通道)时,ADC转换通道的顺序为:JSQ2、JSQ3和JSQ4。
当JL=1(2路注入通道)时,ADC转换通道的顺序为:JSQ3、JSQ4。
当JL=0(1路注入通道)时,ADC将仅转换JSQ4通道。
表8-4 ADC_JSQRx的功能描述
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。