基于靈動(dòng)微電子MM32F013系列ADC任意通道工作模式在MCU的應(yīng)用場(chǎng)景中,處處都有用到ADC,比如電池電量的采集、溫度采集、電機(jī)應(yīng)用中電流檢測(cè)等等。MM32F013x的ADC模塊新增了任意通道工作模式,支持在多種應(yīng)用場(chǎng)景中更靈活的應(yīng)用;本文靈動(dòng)微電子代理英尚微針對(duì)任意通道工作模式,分享在MM32F013系列上實(shí)現(xiàn)任意通道工作模式的使用與具體配置。
任意順序多通道功能 在MM32F013x系列的MCU中新增了ADC對(duì)任意通道的支持,在任意通道配置(ADC_ANY_CR.CHANY_MDEN)使能后,其優(yōu)先級(jí)高于常規(guī)通道配置,后續(xù)的轉(zhuǎn)換按任意通道配置的方式轉(zhuǎn)換。
任意通道模式支持單次轉(zhuǎn)換模式、單周期轉(zhuǎn)換模式和連續(xù)掃描模式。
A/D轉(zhuǎn)換開始條件: ?軟件啟動(dòng) ?外部觸發(fā)啟動(dòng),且軟件可配置外部觸發(fā)延時(shí) ?Timer1/2/3匹配或TRGO信號(hào),外部EXTI信號(hào)源
相關(guān)的寄存器 具體功能與詳細(xì)描述,請(qǐng)參考MM32F013x系列的用戶手冊(cè)。
任意通道工作模式 1、單次轉(zhuǎn)換模式 在單次轉(zhuǎn)換模式下,A/D轉(zhuǎn)換相應(yīng)通道上只執(zhí)行一次,具體流程如下: ?軟件設(shè)置寄存器ADC_ANY_CFG,ADC_CHANY0,ADC_CHANY1,設(shè)置轉(zhuǎn)換通道,置位CHANY_MDEN。(單次轉(zhuǎn)換模式,只需設(shè)置CHANY_SEL0) ?通過(guò)軟件、外部觸發(fā)輸入及定時(shí)器溢出置位ADCR寄存器的ADST,開始A/D轉(zhuǎn)換。 ?A/D轉(zhuǎn)換完成時(shí),A/D轉(zhuǎn)換的數(shù)據(jù)值將存儲(chǔ)于數(shù)據(jù)寄存器ADDATA和ADDRn中。 ?A/D轉(zhuǎn)換完成時(shí),狀態(tài)寄存器ADSTA的ADIF位置1。若此時(shí)控制寄存器ADCR的ADIE位置1,將產(chǎn)生AD轉(zhuǎn)換結(jié)束中斷請(qǐng)求。 ?A/D轉(zhuǎn)換期間,ADST位保持為1。A/D通道采樣結(jié)束后,ADST位自動(dòng)清0,A/D轉(zhuǎn)換器進(jìn)入空閑模式。 ?若在A/D轉(zhuǎn)換過(guò)程中,軟件更新ADC_ANY_CFG,ADC_CHANY0,ADC_CHANY1,硬件不會(huì)立即更新這些配置,只會(huì)在當(dāng)前設(shè)置的通道都轉(zhuǎn)換結(jié)束時(shí)更新,然后等待下一次軟件置位ADST。 該模式仍然支持通過(guò)過(guò)配置當(dāng)外部事件(比如TIMTrig或EXTI)觸發(fā)轉(zhuǎn)換時(shí)序。
單周期掃描模式 在單周期掃描模式下,A/D轉(zhuǎn)換相應(yīng)通道上執(zhí)行一遍按配定順序的轉(zhuǎn)換,具體流程如下: ?軟件設(shè)置寄存器ADC_ANY_CFG,ADC_CHANY0,ADC_CHANY1,將需要轉(zhuǎn)換的通道、數(shù)量設(shè)置好,然后置位CHANY_MDEN。 ?通過(guò)軟件、外部觸發(fā)置位ADCR寄存器的ADST,外部觸發(fā)可軟件配置觸發(fā)延時(shí),A/D轉(zhuǎn)換方向從CHANY_SEL0到CHANY_SEL15,轉(zhuǎn)換通道數(shù)量由CHANY_NUM配置,且CHANY_SEL0到CHANY_SEL15是任意配置的,可以完全相同,或完全不相同。 ?每路A/D轉(zhuǎn)換完成時(shí),A/D轉(zhuǎn)換的數(shù)據(jù)值將有序裝載到相應(yīng)通道的數(shù)據(jù)寄存器中,ADIF轉(zhuǎn)換結(jié)束標(biāo)志被設(shè)置,若此時(shí)控制寄存器ADCR的ADIE位置1,將產(chǎn)生AD轉(zhuǎn)換結(jié)束中斷請(qǐng)求。 ?A/D最后一個(gè)通道采樣結(jié)束后,ADST位自動(dòng)清0,A/D轉(zhuǎn)換器進(jìn)入空閑模式。 ?若在A/D轉(zhuǎn)換過(guò)程中,軟件更新ADC_ANY_CFG,ADC_CHANY0,ADC_CHANY1,硬件不會(huì)立即更新這些配置,只會(huì)在當(dāng)前設(shè)置的通道都轉(zhuǎn)換結(jié)束時(shí)更新,然后等待下一次軟件軟件置位ADST。 在一些場(chǎng)景中,需要在執(zhí)行一遍上述采樣后,對(duì)采樣順序做調(diào)整;或減少采樣通道數(shù),以減少采樣總體時(shí)間,可以通過(guò)簡(jiǎn)單的配置一兩個(gè)寄存器實(shí)現(xiàn)靈活的配置;
3、連續(xù)掃描模式 在連續(xù)掃描模式下,A/D轉(zhuǎn)換通道依軟件配置一直執(zhí)行,直到軟件禁止。具體流程如下: ?軟件設(shè)置寄存器ADC_ANY_CFG,ADC_CHANY0,ADC_CHANY1,將需要轉(zhuǎn)換的通道、數(shù)量設(shè)置好,然后置位CHANY_MDEN。 ?通過(guò)軟件、外部觸發(fā)置位ADCR寄存器的ADST,外部觸發(fā)可軟件配置觸發(fā)延時(shí),A/D轉(zhuǎn)換方向從CHANY_SEL0到CHANY_SEL15,轉(zhuǎn)換通道數(shù)量由CHANY_NUM配置,且CHANY_SEL0到CHANY_SEL15是任意配置的,可以完全相同,或完全不相同。 ?每路A/D轉(zhuǎn)換完成時(shí),A/D轉(zhuǎn)換的數(shù)據(jù)值將有序裝載到相應(yīng)通道的數(shù)據(jù)寄存器中,ADIF轉(zhuǎn)換結(jié)束標(biāo)志被設(shè)置,若此時(shí)控制寄存器ADCR的ADIE位置1,將產(chǎn)生AD轉(zhuǎn)換結(jié)束中斷請(qǐng)求。 ?通過(guò)軟件、外部觸發(fā)置位ADCR寄存器的ADST,外部觸發(fā)可軟件配置觸發(fā)延時(shí),A/D轉(zhuǎn)換方向從CHANY_SEL0到CHANY_SEL15,轉(zhuǎn)換通道數(shù)量由CHANY_NUM配置,且CHANY_SEL0到CHANY_SEL15是任意配置的,可以完全相同,或完全不相同。 ?只要ADST位保持為1,持續(xù)進(jìn)行A/D轉(zhuǎn)換。當(dāng)ADST位被清0,當(dāng)前A/D轉(zhuǎn)換完成后停止,A/D轉(zhuǎn)換器進(jìn)入空閑狀態(tài)。 ?若在A/D轉(zhuǎn)換過(guò)程中,軟件更新ADC_ANY_CFG,ADC_CHANY0,ADC_CHANY1,硬件不會(huì)立即更新這些配置,只會(huì)在當(dāng)前設(shè)置的通道都轉(zhuǎn)換結(jié)束時(shí)更新,即下一個(gè)掃描周期開始新的通道轉(zhuǎn)換。 應(yīng)用還可以結(jié)合外部觸發(fā)功能與DMA傳輸功能,實(shí)現(xiàn)TIM觸發(fā)多通道ADC轉(zhuǎn)換,DMA裝載數(shù)據(jù)的功能。 |