<p><strong>Microchip Technology Inc.</strong></p>
<p><strong>MCU8 产品部</strong><strong>市场推广经理</strong></p>
<p><strong>Paul Zhang张荣宝</strong></p>
<p><span>单片机</span><span>(MCU)和传感器测控系统中,经常遇到需要模拟量传感器输入的情况。 这种输入的模拟量,需要由模拟数字转换器外设,简称ADC</span><span>,</span><span>来转换为N位数字量后再由CPU进行处理。近年来,随着智能传感器技术和物联网技术等的发展, MCU和传感器连接的系统应用也越来越广泛。比如在目前全球研究最多的新兴市场之一</span><span>——</span><span>物联网(I</span><span>o</span><span>T)中,传感器作为物联网系统数据的重要入口,<span> </span></span><span>正在成为电子基础设施向物联网转变的无处不在的元素。</span><span>据中国信息通信研究院2</span><span>020</span><span>年1</span><span>2</span><span>月发布的《物联网白皮书》,预计到2</span><span>025</span><span>年,全球物联网总连接数规模将从2</span><span>019</span><span>年的1</span><span>20</span><span>亿增长到2</span><span>46</span><span>亿,年复合增长率高达1</span><span>3%</span><span>。 我国物联网连接数全球占比高达3</span><span>0%</span><span>,2</span><span>019</span><span>年我国的物联网连接数3</span><span>6.3</span><span>亿,到2</span><span>025</span><span>年预计我们物联网连接数将达到8</span><span>0.1</span><span>亿,年复合增长率1</span><span>4.</span><span>1(来源:中国信息通信研究院)。</span></p>
<p><span>对于MCU中集成的用于连接模拟传感器的ADC,设计者在以往的努力多在于提高其采样</span><span>速度</span><span>和量化的性能指标,比如提高ADC的分辨率(精度),减少误差(量化误差</span><span>、</span><span>偏移误差</span><span>和</span><span>满刻度误差等),提高转换率来采集更高频率的输入等等</span><span>,</span><span>而现在的集成ADC的新特性,除了提高以上性能参数,则更是考虑了ADC</span><span>在</span><span>系统中的应用场景和信号处理过程。</span></p>
<p><span>对于模拟信号的输入,</span><span>单片机</span><span>系统典型的处理过程如下所示:</span></p>
<p><img alt="干货 | 面向信号处理过程的ADC特性使传感器连接变得简单" data-entity-type="file" data-entity-uuid="f405b05c-abf3-4fec-9c24-f150f39f9fea" src="http://new.eetrend.com/files/2021-04/wen_zhang_/100099112-192715-1.jpg&…; /></p>
<p><span>针对这种典型的模拟信号处理过程,MCU设计者对ADC外设创新地赋予了新的特性,以使其连接传感器更为高效。</span></p>
<p><span>1.</span><span>独立于内核的事件机制</span><span>——</span><span>联动其他外设,自动触发ADC启动</span></p>
<p><span>在模拟信号采样阶段,<span> </span>简便的方式就是</span><span>冲激</span><span>串采样</span><span>——</span><span>通过一个周期</span><span>冲激</span><span>串去乘待采样的连续时间信号</span><span>。<span> </span></span><span>在MCU中,需要通过</span><span>定时器</span><span>来设定采样周期T。在传统的处理方式中,CPU要么响应</span><span>定时器</span><span>产生的周期性中断,要么轮询</span><span>定时器</span><span>计数器的溢出标志,来启动ADC。</span></p>
<p><span>新的ADC触发方式则是采用了事件机制,它提供了一个完全由硬件自动完成的触发到ADC产生响应的通道。<span> </span>在没有任何CPU干预的情况下精确控制ADC的采样周期。这种机制节省了中断资源,<span> </span></span><span>无需</span><span>软件的参与,提高了ADC的响应速度。下图为AVR</span><span>®</span><span>单片机事件系统的示意图。</span></p>
<p><img alt="图1: AVR®单片机中的事件系统图示" data-entity-type="file" data-entity-uuid="5fb63068-885f-444b-98bf-f16302290167" src="http://new.eetrend.com/files/2021-04/wen_zhang_/100099112-192716-2.jpg&…; /></p>
<p><em><span>图1</span><span>: AVR</span><span>®</span><span>单片机中的事件系统图示</span></em></p>
<p><span>这种硬件上的联动响应,更为迅速直接。因为不需要CPU干预,也减少了不必要的中断或唤醒,即使在CPU处于某种休眠状态下,该触发机制仍可以在低功耗的情况下运行。当然除了用于触发ADC之外,这种事件机制还可以用于其他外设的联动。</span></p>
<p><span>2.</span><span>带有计算功能的ADC</span><span>——</span><span>对</span><span>转换</span><span>结果自动进行计算处理</span></p>
<p><span>ADC的</span><span>转换</span><span>结果,被用来做某种类型的计算或分析。比如验证结果是否在一定的范围内或者用来滤除信号中的噪声。尽管用来滤波的软件算法</span><span>都</span><span>比较成熟,比如中值滤波</span><span>、</span><span>算数平均滤波</span><span>和</span><span>滑动平均滤波等</span><span>,</span><span>但是无论是什么样的软件算法,它们都是需要较大的RAM空间</span><span>和CPU运算资源。</span><span>首先在系统的RAM区保留一段时间内的</span><span>转换</span><span>值,然后对这些</span><span>转换</span><span>值进行分析、滤波,并进行处理。而在MCU系统中,RAM空间都是很有限的,而且软件滤波算法的运行,需要消耗CPU的能力和时间,导致整个</span><span>转换数值的</span><span>滤波系统运行效率不高。</span></p>
<p><span>创新的ADC设计,使得ADC自身具有转换后的计算功能,可以对ADC</span><span>转换</span><span>的数据进行复杂的运算,而无需CPU干预。使用这种具有运算能力的智能ADC, 在转换完成后, 结果可以通过预定的计算功能来传递,将不需要编写代码来查看ADC结果是否落在某个窗口之内或之外,也可以直接获取ADC平均样本值或者滤波器样本数据值等。这种计算由ADC外设本身执行,加速了通常由软件完成的算术任务,不再需要占用CPU资源和额外的RAM缓冲空间。例如,如下图PIC</span><span>®</span><span><span> </span>Q10系列MCU上ADC的计算功能简化框图所示, 可以通过配置ADC的ADMD位来控制ADC计算模块以选择五种不同的操作模式之一</span><span>:</span><span>基本模式</span><span>、</span><span>累加模式</span><span>、</span><span>平均模式</span><span>、</span><span>突发平均模式和低通滤波器模式等。</span></p>
<p><img alt="图 2: PIC® Q10单片机中的ADC计算模块框图" data-entity-type="file" data-entity-uuid="061b69cc-7edb-4444-a682-d5ce4043b0f1" src="http://new.eetrend.com/files/2021-04/wen_zhang_/100099112-192717-3.jpg&…; /></p>
<p><em><span>图</span><span><span> </span>2: PIC</span><span>®</span><span><span> </span>Q10单片机中的ADC计算模块框图</span></em></p>
<p><span>3.</span><span>自动上下文保存</span><span>——</span><span>使ADC通道切换应用自如</span></p>
<p><span>在传感器系统应用中,经常会遇到多个模拟输入通道共用一个内部ADC硬件的情况。<span> </span>比如在一个环境检测系统中, 温度</span><span>、</span><span>湿度</span><span>、</span><span>气压</span><span>和</span><span>光线强度等传感器的模拟输入将会使用同一个ADC(同一个采样保持电路)的不同通道。ADC通过切换各个通道,分时进行A/D转换。对于复用ADC的模拟输入,每个通道的控制方式,都可能是不同的</span><span>,</span><span>比如状态和数据寄存器配置</span><span>和</span><span>转换后的计算方式等等。例如,通道一将ADC配置为突发平均模式,通道二将ADC配置为累加模式……不同通道的独特控制方式,使得ADC在切换通道时需要附加软件开销,比如首先停止ADC,按照ADC采集通道的预定顺序找到相应的状态和寄存器,重新配置对应的控制方式,再启动ADC…</span><span>,</span><span>运行过程中的频繁切换无疑降低了ADC的运行效率。</span></p>
<p><span>解决这一问题的最新ADC特性,是把每个通道的特定转换控制方式,按照预定采集顺序,保存为上下文。该上下文只能通过A/D上下文选择寄存器,或者直接存储器访问(DMA)。这样ADC运行时,ADC硬件模块会自动从内存中传输当前活动通道的上下文,进入相关的ADC寄存器并执行所需的转换。这样就显著提高了ADC切换通道采集数据的效率,也不占用CPU资源。有趣的是,Microchip将带有运算特性的ADC称为ADCC<span> </span></span><span>(</span><span>ADC with Computation</span><span>),</span><span>而将又带有上下文保存特性的ADCC称为ADCCC (ADC with Computation and Context)。</span></p>
<p><span>单片机</span><span>和传感器连接的应用越来越多,幸运的是,MCU设计者一直在扩展其MCU外设的功能。 类似ADC上这些新功能的创新,已不仅仅在其自身转换方面,而是实现了与其他外设联动启动采样,转换后的计算,以及多个复用通道的自动切换等,集成了针对模拟信号处理链路上的多个环节。这些环节可以自动运行,不占用系统总线,这对降低CPU负载,降低系统功耗,增强系统响应效率,增强系统健壮性等都</span><span>有</span><span>非常大的意义。</span><span>单片机</span><span>设计者们以其创新性的智慧,以及对嵌入式系统应用细致入微的洞察,将会使得MCU和传感器的连接应用设计,越来越灵活,越来越高效!</span></p>