STM32 ADC_SQR 理解 一看就懂 转载

2019-08-17 07:02发布

ARM STM32F中ADC中 规则通道 注入通道 序列寄存器(SQR JSQR)的使用方法


      STM32F中的ADC是十分强大的,使用方法多,寄存器多,操作也复杂。下面就来看看ADC中规则通道,注入通道及序列寄存器(SQR JSQR)到底该如何使用。       第一,看看规则通道与注入通道的区别      可以看到,我们常规的使用是规则通道,当有有一个触发来个,就执行注入通道,注入通道好比“紧急通道”。      一个不太恰当的比喻是规则通道组的转换好比是程序的正常执行而注入通道组的转换则好比是程序正常执行之外的中断服务程序。      这是根本区别,由此带来的不同可以看芯片手册。      第二,看看四种模式      (注:最后一种,“连线”应为“连续”)     以上四种模式如何选择呢? 通过CR1中的SCAN位来决定是单通道还是多通道,通过CR2中的CONT来决定是单次转换还是连续转换。    第三,SQR及JSQR的使用    不论是以上四种模式中的哪一种,都要对序列序列寄存器进行操作。    单通道单次转换模式下,使用规则通道,如何来操作呢?首先,假如你的通道为CH1那么,对ADC_SQR3寄存器中的SQ1[4:0]赋值0x01,若通 道为CH16,则赋值0x10。注意不论是哪一个通道被使用,均只对SQ1[4:0]进行操作,因为只有一个通道,第一次转换的就是它了!    单通道单次转换模式下,使用注入通道,如何来操作呢?必须明白,使用注入通道的前提是规则通道还在使用的。    比如用注入通道来转换CH16温度传感器电压。首先,可以设置CR1的JAUTO位为1,即在规则通道转换完成后自动转换成注入通道。然后,设置JAQR 寄存器的JSQ4[4:0]为0x10,表明使用的是CH16。为什么不是JSQ1而是JSQ4呢?第一次转换的通道应该在JSQ1里面啊?因为JSQR 与SQR的使用准则不同,JSQR是从4-JL开始的。所以,这里JL为0x00(一个),所以JSQR是从4开始的,即JSQ4是第一个通道号所在地。    多通道就依照上面的方法进行操作即可,比如使用规则通道,第一个转换通道号的在SQ1中,第二个在SQ2中,。。。依次类推即可。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。