一种超低功耗的adc控制器结构

文档序号:1798506 发布日期:2021-11-05 浏览:20次 >En<

阅读说明:本技术 一种超低功耗的adc控制器结构 (ADC controller structure with ultra-low power consumption ) 是由 刘云晶 刘梦影 陆皆晟 王琪 于 2021-08-11 设计创作,主要内容包括:本发明公开一种超低功耗的ADC控制器结构,属于ADC控制器领域,包括时钟控制模块和主控模块。该ADC控制器是基于AMBA系统中,挂载在APB总线上的外设。时钟控制模块用于产生ADC模块以及主控模块的工作时钟,在不同的工作模式下自动关闭主控模块的工作时钟以及ADC模拟模块的时钟,在需要的时候自动打开,以达到降低功耗的目的;主控模块采用APB总线协议,通过APB接口寄存器来控制整个ADC控制器的工作;由外部定时器采用硬件触发,或者由内核采用软件触发的方法开启转换。主控模块的工作状态反馈在状态寄存器中供APB主设备读取,ADC模拟模块的转换数据也通过串并转换保存在数据寄存器中;同时APB主设备可以通过配置主控制的配置存器来控制主控模块的工作流程。(The invention discloses an ADC controller structure with ultra-low power consumption, which belongs to the field of ADC controllers and comprises a clock control module and a main control module. The ADC controller is a peripheral device mounted on an APB bus in an AMBA system. The clock control module is used for generating working clocks of the ADC module and the main control module, automatically closing the working clocks of the main control module and the clocks of the ADC analog module in different working modes, and automatically opening the clocks when needed so as to achieve the purpose of reducing power consumption; the main control module adopts an APB bus protocol and controls the work of the whole ADC controller through an APB interface register; the conversion is started by an external timer in a hardware triggering mode or by a kernel in a software triggering mode. The working state of the main control module is fed back to the state register to be read by the APB main equipment, and the conversion data of the ADC analog module is also stored in the data register through serial-parallel conversion; and meanwhile, the APB master device can control the work flow of the master control module by configuring the configuration memory of the master control.)

一种超低功耗的ADC控制器结构

技术领域

本发明涉及ADC控制器技术领域,特别涉及一种超低功耗的ADC控制器结构。

背景技术

随着微控制器的快速发展,在目前的嵌入式应用,例如:指纹锁、蓝牙温湿度计等物联网设备,其对实时性要求不高,但是对功耗要求极高。ADC用于模拟前端数据采集的模块,需要监测系统中某些传感器数据,以此做出判断和操作。

对于微控制器中现有的ADC控制器,若需要对模拟数据采样和处理,主要有以下两种方法:(1)配置ADC控制器的工作模式,包括转换模式、转换通道、采样时间等,配置传输完成后产生中断,在中断函数中读取转换值;(2)配置ADC控制器的工作模式,包括转换模式、转换通道、采样时间等,配置传输完成后产生DMA请求,使用DMA把转换值搬到SRAM中,在DMA的中断函数中读取SRAM值。

上述两种方法都可以实现对模拟数据的采样和处理,但是在整个过程中,ADC模拟模块和ADC控制器始终处于使能状态。在采样的间隔中不可避免的会产生静态工作电流,造成不必要的电流损耗。因此,如何降低上述的问题是当前需要解决的问题。

发明内容

本发明的目的在于提供一种超低功耗的ADC控制器结构,以解决目前的ADC控制器采样和处理过程中始终处于使能状态,造成电流损耗的问题。

为解决上述技术问题,本发明提供了一种超低功耗的ADC控制器结构,用于控制ADC模拟模块,包括时钟控制模块和主控模块。

所述时钟控制模块在工作模式下自动关闭所述主控模块的工作时钟以及ADC模拟模块的时钟,并且在需要的时候自动打开;

所述主控模块采用APB总线协议,通过APB接口寄存器来控制整个ADC控制器的工作;由外部定时器采用硬件触发,或者由内核采用软件触发的方法开启通道转换。

可选的,所述时钟控制模块共有两个时钟输入:APB总线时钟pclk和异步时钟hsi14;

所述时钟控制模块用于产生主控模块的工作时钟adc_ctrl_clk,以及ADC模拟模块的工作时钟analog_clk,这两个时钟是同步时钟,并且相位相反;所述时钟控制模块能够切换这两个时钟的来源,来自于pclk的分频或者hsi14,也能够按顺序打开和关闭这两个时钟。

可选的,所述主控模块包括一个主状态机和6个子模块;6个子模块分别为reg_control,data_manage,trgi_and_int,calibrate,converse_ctrl,converse;

reg_control模块用于解析APB总线协议,包含所有的配置寄存器、状态寄存器和数据寄存器;data_manage模块用于对齐接收的数据并且检查是否发生上溢和下溢;trgi_and_int模块用于捕捉外部硬件触发以及产生中断;calibrate模块用于产生ADC模拟模块使能和校准相关的信号;converse_ctrl模块包含一个子状态机,与主状态机一起控制converse模块;converse模块用于产生ADC模拟模块采样和转换相关的信号。

可选的,所述主控模块配置如下9种转换模式:

单次转换模式:主状态机进入RDY状态以后等待触发,TRGI发生以后,ADC控制器把所有通道转换一遍,然后主状态机进入RDY状态等待下一次触发;

连续转换模式:与单次转换模式类似,但是一旦触发以后会循环转换;

不连续转换模式:与单次转换模式类似,但是每次转换都需要一次触发;

单次等待模式:主状态机进入RDY状态以后等待触发,TRGI发生以后,ADC控制器转换单个通道后进入WAIT状态;READ后自动开始下一次转换,所有通道转换完成以后进入RDY状态等待下一次触发;

连续等待模式:与单次等待模式类似,但是一旦触发以后会循环转换;

单次自动关闭模式:主状态机进入OFF状态以后等待触发,TRGI发生以后,ADC控制器会把所有通道转换一遍,然后主状态机进入OFF状态等待下一次触发;

不连续自动关闭模式:与单次自动关闭模式类似,但是每次转换都需要一次触发;

单次等待且自动关闭模式:主状态机进入OFF状态以后等待触发,TRGI发生以后,ADC控制器转换单个通道后进入OFF状态;READ以后自动开始下一次转换;所有通道转换完成以后进入OFF状态等待下一次触发;

连续等待且自动关闭模式:与单次等待且自动关闭模式类似,但是一旦触发以后会循环转换。

可选的,所述主控模块的主状态机包括8个状态:

IDLE:主控模块处于空闲状态,此时adc_ctrl_clk已关闭,收到aden使能或者adcal校准使能命令后跳转到STARTUP;如果是自动关闭模式,则收到触发或者数据读取信号后跳转到STARTUP;

STARTUP:主控模块启动时钟控制模块使能流程,并且在时钟打开完成后,即open_finsh信号有效时跳转到RDY或者CALI;

CALI:主控模块启动校准流程,控制calibrate模块开始工作,并且在校准完成后跳转到OFF;

OFF:启动时钟控制模块关闭流程,并且在时钟关闭完成后,即adc_ctrl_clk_open_syn信号无效时跳转到IDLE;

RDY:主控模块初始化完成,在非自动关闭模式下等待软件触发,即adstart后跳转到CONVERSE;在自动关闭模式下,跳转到OFF;

CONVERSE:表示ADC模拟模块正处于采样和转换过程,具体流程在子状态机中实现;CONVERSE的跳转状态需要根据此时的转换模式来确定;

STP:主控模块收到停止命令,执行停止流程,完成后跳转到RDY;

WAIT:主控模块正在等待总线读取数据寄存器,完成后跳转到CONVERSE。

可选的,所述主控模块的子状态机,位于converse_ctrl模块中,包括8个状态:

FREE:converse_ctrl模块处于空闲状态,等待主控模块进入CONVERSE后跳转到INI;

INI:重载待转换通道寄存器,等待硬件触发后跳转到START;

PAT1:仅打一拍,为了保持与INI状态等长的延迟周期,无条件跳转到START;

START:给converse模块发送一个脉冲的start信号后无条件跳转到CAL;

CAL:计算下一个需要转换的通道后无条件跳转到WAIT_NXT;

WAIT_NXT:等到converse模块反馈next_start信号后,WAIT_NXT的跳转状态需要根据此时的转换模式来确定;

REC:与FREE状态类似,等待主控模块进入CONVERSE后跳转到REC_INI;

REC_INI:与INI类似,不重载转换通道寄存器,等待硬件触发后跳转到START。

可选的,所述ADC模拟模块使用SAR结构,转换精度为12位,最高工作频率为14MHz,其转换数值串行传输给主控模块;一次采样最快为14个时钟周期,采样频率最高1MSPS。

在本发明提供的超低功耗的ADC控制器结构中,用于控制ADC模拟模块,ADC控制器结构包括时钟控制模块和主控模块。该ADC控制器是基于AMBA系统中,挂载在APB总线上的外设。所述时钟控制模块用于产生ADC模拟模块以及主控模块的工作时钟,在不同的工作模式下自动关闭所述主控模块的工作时钟以及ADC模拟模块的时钟,并且在需要的时候自动打开,以此达到降低功耗的目的;所述主控模块采用APB总线协议,通过APB接口寄存器来控制整个ADC控制器的工作;由外部定时器采用硬件触发,或者由内核采用软件触发的方法开启转换。所述主控模块控制整个采样和转换流程,主控模块的工作状态反馈在状态寄存器中供APB主设备读取,ADC模拟模块的转换数据也通过串并转换保存在数据寄存器中;同时APB主设备可以通过配置主控制的配置存器来控制主控模块的工作流程。

附图说明

图1为ADC采样和转换系统框图;

图2为ADC各种转换模式示意图;

图3为时钟控制模块实现原理示意图;

图4为ADC时钟开启、切换、关闭时序图;

图5为主控模块的主状态机示意图;

图6为主控模块的子状态机示意图;

图7为converse模块时序图。

具体实施方式

以下结合附图和具体实施例对本发明提出的一种超低功耗的ADC控制器结构作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。

实施例一

本发明提供了一种超低功耗的ADC控制器结构,用于控制ADC模拟模块,ADC控制器结构的结构如图1所示,包括时钟控制模块主控模块;所述时钟控制模块在工作模式下自动关闭所述主控模块的工作时钟以及ADC模拟模块的时钟,并且在需要的时候自动打开;所述主控模块采用APB总线协议,通过APB接口寄存器来控制整个ADC控制器的工作;由外部定时器采用硬件触发,或者由内核采用软件触发的方法开启转换。ADC模拟模块使用SAR(逐次逼近法)结构,转换精度为12位,最高工作频率为14MHz,其转换数值串行传输给主控模块;一次采样最快为14个时钟周期,采样频率最高1MSPS。

时钟控制模块共有两个时钟输入,一个是APB总线时钟pclk,一个是异步时钟hsi14。时钟控制模块用于产生主控模块的工作时钟adc_ctrl_clk,以及ADC模拟模块的工作时钟analog_clk,这两个时钟是同步时钟,并且相位相反。时钟控制模块可以切换这两个时钟的来源,来自于pclk的分频或者hsi14,也可以按顺序打开和关闭这两个时钟。

主控模块包含一个主状态机和6个子模块;6个子模块分别为reg_control,data_manage,trgi_and_int,calibrate,converse_ctrl,converse。reg_control模块用于解析APB总线协议,包含所有的配置寄存器,状态寄存器和数据寄存器;data_manage模块用于对齐接收的数据并且检查是否发生上溢和下溢;trgi_and_int模块用于捕捉外部硬件触发以及产生中断;calibrate模块用于产生ADC模块使能和校准相关的信号;converse_ctrl模块包含一个子状态机,与主状态机一起控制converse模块;converse模块用于产生ADC模拟模块采样和转换相关的信号。

图2为ADC控制器各种转换模式示意图,图中斜体加粗的内容表示主状态机的状态,TRGI代表触发信号,READ代表总线上有读取转换值的信号,EOC代表传输完成,EOS代表所有通道转换完成。主控模块可以配置如下9种转换模式:

单次转换模式:主状态机进入RDY状态以后等待触发,TRGI发生以后,ADC控制器会把所有通道转换一遍,然后主状态机进入RDY状态等待下一次触发。

连续转换模式:与单次转换模式类似,但是一旦触发以后会循环转换。

不连续转换模式:与单次转换模式类似,但是每次转换都需要一次触发。

单次等待模式:主状态机进入RDY状态以后等待触发,TRGI发生以后,ADC控制器转换单个通道后进入WAIT状态;READ后自动开始下一次转换;所有通道转换完成以后进入RDY状态等待下一次触发。该模式可以配合降低系统主频,达到降低整个系统功耗的目的。

连续等待模式:与单次等待模式类似,但是一旦触发以后会循环转换。

单次自动关闭模式:主状态机进入OFF状态以后等待触发,TRGI发生以后,ADC控制器会把所有通道转换一遍,然后主状态机进入OFF状态等待下一次触发。该模式在ADC控制器转换空闲时,自动关闭主控模块的时钟和ADC模拟模块的时钟和使能,降低静态功耗,达到降低整个系统功耗的目的。

不连续自动关闭模式:与单次自动关闭模式类似,但是每次转换都需要一次触发。

单次等待且自动关闭模式:主状态机进入OFF状态以后等待触发,TRGI发生以后,ADC控制器转换单个通道后进入OFF状态。READ以后自动开始下一次转换。所有通道转换完成以后进入OFF状态等待下一次触发。该模式结合了等待模式和关闭模式的优点,降低系统主频和采样系统自身功耗,达到大幅降低整个系统功耗的目的。

连续等待且自动关闭模式:与单次等待且自动关闭模式类似,但是一旦触发以后会循环转换。

图3为时钟控制模块实现原理。时钟切换原理如下,adc_ctrl_clk_pre来自pclk的2分频、pclk的4分频或者hsi14。当使用pclk作为时钟源时,主控模块的工作时钟与系统时钟相匹配,此时采样和转换速度与系统工作频率同步升高或者降低。当使用hsi14作为时钟源时,主控模块的工作时钟固定在14MHz,与ADC模拟模块的最高工作频率匹配,此时采样和转换速度无论系统是怎样的工作频率,都按ADC模拟模块的最高性能工作。REG1产生的ckmode用来选择需要的时钟源,时钟切换逻辑采用互斥的结构,同一时间只可以有一个时钟有效。REG4和REG5用hsi14的反向时钟打两拍同步,使用反向时钟避免GATE1产生时钟毛刺。REG6和REG7与上述寄存器功能类似,三个时钟源经过或门产生adc_ctrl_clk_pre。

时钟开启原理如下,REG0产生的adc_ctrl_clk_open为高时表示要打开时钟,为低时表示要关闭时钟。adc_ctrl_clk_open经过REG2和REG8用adc_ctrl_clk_pre的反向时钟打两拍同步。adc_ctrl_clk_pre_syn用来告诉主控模块adc_ctrl_clk_open已生效完成一次握手,同时打开GATE4产生adc_ctrl_clk。时钟关闭的过程与此类似。

图4为ADC控制器时钟开启、切换、关闭时序图。以默认使用hsi14开启时钟,然后切换到pclk_d2(pclk的2分频)时钟,最后关闭时钟为例。

T3时刻pclk的上升沿,主控模块的adc_ctrl_clk_open为高。T3时刻hsi14的下降沿,REG2/Q采到adc_ctrl_clk_open后拉高。T4时刻hsi14的下降沿,adc_ctrl_clk_open_syn把adc_ctrl_clk_open同步一拍拉高。T5时刻hsi14的下降沿,REG9/Q把adc_ctrl_clk_open_syn打一拍拉高。T6时刻hsi14的上升沿,REG9/Q作为GATE4的使能打开门控时钟,即adc_ctrl_clk,至此,时钟开启完毕。

T9时刻pclk的上升沿,ckmode由选择hsi14改变为选择pclk_d2。T9时刻hsi14的下降沿,REG4/Q采到chmode后拉低。T10时刻hsi14的下降沿,sel_hsi14把REG4/Q同步一拍拉低。T11时刻pclk_d2的下降沿,REG6/Q采到sel_hsi14后拉高。T15时刻pclk_d2的下降沿,sel_pclk_d2把REG6/Q同步一拍拉高。T17时刻pclk_d2的上升沿,sel_pclk_d2作为GATE2的使能打开门控时钟,即adc_ctrl_clk,至此,时钟切换完毕。

在T19时刻pclk的上升沿,主控模块的adc_ctrl_clk_open为低。T23时刻pclk_d2的下降沿,REG2/Q采到adc_ctrl_clk_open后拉低。T27时刻pclk_d2的下降沿,adc_ctrl_clk_open_syn把adc_ctrl_clk_open同步一拍拉低。T29时刻pclk_d2的上升沿,REG9/Q作为GATE4的使能关闭门控时钟,即adc_ctrl_clk,至此,时钟关闭完毕。

图5为主控模块的主状态机,共有8个状态:

IDLE:主控模块处于空闲状态,此时adc_ctrl_clk已关闭。收到aden使能或者adcal校准使能命令后跳转到STARTUP。如果是自动关闭模式(包括所有种类的自动关闭模式),则收到触发或者数据读取信号后跳转到STARTUP。

STARTUP:主控模块启动时钟控制模块使能流程,并且在时钟打开完成后,即open_finsh信号有效时跳转到RDY或者CALI。

CALI:主控模块启动校准流程,控制calibrate模块开始工作,并且在校准完成后跳转到OFF。

OFF:启动时钟控制模块关闭流程,并且在时钟关闭完成后,即adc_ctrl_clk_open_syn信号无效时跳转到IDLE。

RDY:主控模块初始化完成,在非自动关闭模式下等待软件触发,即adstart后跳转到CONVERSE;在自动关闭模式下,跳转到OFF。

CONVERSE:表示ADC模拟模块正处于采样和转换过程,具体流程在子状态机中实现。CONVERSE的跳转状态需要根据此时的转换模式来确定。

STP:主控模块收到停止命令,执行停止流程,完成后跳转到RDY。

WAIT:主控模块正在等待总线读取数据寄存器,完成后跳转到CONVERSE。

图6为主控模块的子状态机,位于converse_ctrl模块中,共有8个状态:

FREE:converse_ctrl模块处于空闲状态,等待主控模块进入CONVERSE后跳转到INI。

INI:重载待转换通道寄存器(该寄存器用于存储还未进行转换的通道),等待硬件触发后跳转到START。

PAT1:仅打一拍,为了保持与INI状态等长的延迟周期,无条件跳转到START。

START:给converse模块发送一个脉冲的start信号后无条件跳转到CAL。

CAL:计算下一个需要转换的通道后无条件跳转到WAT_NXT。

WAIT_NXT:等到converse模块反馈next_start信号后,WAIT_NXT的跳转状态需要根据此时的转换模式来确定。

REC:与FREE状态类似,等待主控模块进入CONVERSE后跳转到REC_INI。

REC_INI:与INI类似,不重载转换通道寄存器,等待硬件触发后跳转到START。

图7为converse模块时序图。该转换以采样时间1.5个时钟周期,转换周期14个时钟周期,连续2次转换为例。adc_ctrl_clk是主控模块的时钟,analog_clk是ADC模拟模块的时钟,两时钟相位相反。T2时刻,converse模块收到start信号和channel开始第一次转换。T3时刻,converse_channel有效,ADC模拟模块开始采样电压,cmp_cnt采样周期计数器开始工作。T4时刻,converse_start有效,持续一个时钟周期。T4后的analog_clk上升沿,ADC模拟模块收到converse_start信号,此时采样阶段结束,一共是1.5个时钟周期,并且在1.5个时钟周期后开始输出转换数据。T5时刻,cmp_cnt计数到1,converse_cnt转换计数器开始工作。T7时刻,移位寄存器shift_register开始保存转换值。T12时刻,next_start信号有效,其反馈给converse_ctrl模块。T16时刻,第二次转换的start信号和channel有效。T17时刻,第二次转换的converse_channel有效,重复T3时刻后的时序,同时第一次转换的最后一个数据输出。T18时刻,最后一个数据与移位寄存器中的数值一起保存到received_data寄存器中等待总线读取,同时end_of_converse有效,该信号会同步到状态寄存器中。T19时刻,第一次转换过程全部完成。

上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:具有集成存储器一致性互连的存储器和存储控制器

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!