MM32F5270:高速ADC和COMP及三合一控制案例

描述

漫谈系列的上一期中介绍了外设间互联矩阵 MindSwitch,用户可以通过 MindSwitch 将系统中的常用外设进行同步。本期,笔者就来聊聊 MM32F5270 中的高性能模拟外设,并以一个典型的 3 合 1 控制的例子来对前面几期的内容做一个综合的讲解。



1、高速 ADC

ADC 用于将模拟信号转换成数字信号,是微控制器应用中必不可少的外设之一。

MM32F5270 中包含了 2 组高速 SAR 结构 ADC,每组 ADC 支持最高 12 位分辨率和最高 3MSPS 采样率。其中 ADC1 支持 17 路外部通道(ADC1_INx),ADC2 支持 19 路外部通道(ADC2_INx),两组 ADC 有 12 个通道是共用引脚的(ADC12_INx),因此总计可用的外部通道数是 17 + 19 – 12 = 24 通道。MM32F5270 中的具体 ADC 通道分布整理如下表:

 

 

高速ADC

 

 

ADC 的具体特点这里就不一一介绍,感兴趣的读者可以阅读 MM32F5270 用户手册。(https://www.mindmotion.com.cn/download/products/UM_MM32F5270_SC.pdf

这里,对 MM32F5270 ADC 的部分创新特色做如下总结:

支持任意通道转换

支持转换通道的任意排列,最高可支持 16 个通道。这相对于仅能固定顺序扫描的 ADC 而言有两个优势:一是实际应用中通道间的采样顺序可能会变化,二是实际应用中不同通道的采样频繁程度是不同的,而任意转换序列 ADC 能够很好的应对这些场景。下图是一个例子,任意通道转换模式下,前 5 次转换中的通道编号是乱序的(任意可配的),且通道 12 和 通道 6 仅转换 1 次,而通道 3 则转换了 3 次。

 

 

高速ADC

 

 

每个任意通道都有独立的结果寄存器

除了最近一次转换的结果,MM32F5270 的每个任意通道都有一个独立的结果寄存器,存储对应通道最近一次的转换结果。这样用户可以在所有ADC通道转换完毕后在需要使用的时刻再读取对应ADC通道的结果寄存器的值,而不需要每次转换后都读取,有效的降低了 DMA 或 CPU 对 ADC 的访问次数和软件复杂度。

支持自动注入模式

在任意通道转换方式下,完成任意通道转换后会自动开始注入通道转换。每个 ADC 支持最高 4 路注入通道,同样支持任意序列转换。需要注意的是,注入通道的触发源和常规通道的触发源是独立的,后文将要讲到的 ADC 分时复用就需要用到这个功能。

支持最高 256 次硬件过采样

MM32F5270 支持 2 到 256次可配的硬件过采样,当配置为 256次时,ADC 将 256 次的采样数值进行累加和硬件平均,并将结果存储在一个 16 位寄存器中。很多应用为提高采样准确度都需要进行多次采样求平均的操作,硬件过采样的优势是不需要 DMA 或 CPU 的数据搬运和计算就能得到平滑滤波后的结果。

触发源通过 MindSwitch 配置

通过 MindSwitch 配置的触发可以实现更灵活可配的触发,后文中的应用案例就将用到这一功能。


2、高速 COMP

比较器 COMP 用于比较两个模拟信号的电平,比较器因其比较速度快和响应速度快等特点,在实际应用中常用于做过流保护等安全保护措施。

MM32F5270 中包含了 3 组高速比较器 COMP1~3,每组比较器都具备如下特点:

参考源丰富

带窗口 Blanking 功能

支持轮询

支持滤波

带极性选择功能

在实际应用中,往往是将外部的模拟信号和一个参考电压值通过比较器进行比较,这个参考电压值往往是一个固定电平,其可以从芯片外部输入,也可以由芯片内部提供。MM32F5270 的比较器支持这两种方式,并且提供了丰富的电压参考源包括:

CRV 的输出

DAC1 的输出

DAC2 的输出

这里,CRV 的全称是 Comparator Reference Voltage,是一个低分辨率的电阻分压网络,可提供 1/20 到 16/20 共 16 档参考电压,其分压源可以选择是 VDDA 或者内部 1.2V 带隙基准电压。以 VDDA = 3V 为例,其分压范围为 150mV 到 2.4V,每 150mV 一档,共 16 档。

如果需要更精确的参考电压,则可以采用 DAC1 或 DAC2 的输出,这里的两个 DAC 都是 12 位分辨率。以 VDDA = 3V 为例,其分压范围为 0V 到 3V,共 4096 档,分辨率约为 0.7 mV(仅是理想分辨率,真实分辨率会更大)。

不论是 CRV 还是 DAC,其相较于外部输入的最大优势是其电压可随时调整。

每组 COMP 支持 4 路正向输入和7路负相输入,其中正向输入全部由外部引脚输入,而 7 路负相输入中包含了 3 路外部引脚输入、1 路 CRV 输出、1 路 DAC1 输出和 1 路 DAC2 输出,总结如下表:

 

 

高速ADC

 

 

上面的提到的 2 组 DAC 除了可以为比较器提供参考电压外,它们还带有一定的输出驱动能力,支持最快 1MSPS 转换率,可以不需要外部放大器而直接驱动负载,非常适用于一些音频应用。此外,DAC 还支持硬件自动生成三角波,用户也可以通过精确的触发控制和数据输入来通过 DAC 生成更复杂的正弦波或任意波形。

3、应用场景:3 合 1 控制

经过上述介绍,相信读者对于 MM32F5270 中的高性能模拟外设已经有所了解。接下来,笔者就将前几期介绍内容和本期内容结合在一起,通过一个常见的应用案例来讲解。

实际应用中的一个趋势是系统的集成度越来越高,很多嵌入式系统会将原本分布在多个 MCU 中的功能集成在同一个主控 MCU 中,在汽车、家电和消费电子领域中都能观察到这种趋势,这样做能够带来开发便捷、节省空间、节省成本、节省线束等多种好处,通常可以把这种多功能合并的结构叫做多合一控制,举几个典型的例子:

2 合 1

2 合 1 典型场景是双电机控制,具体应用包括洗烘一体洗衣机中的滚筒电机 + 热泵风扇控制、割草机中的割草电机 + 行进电机控制、电动三轮车中的差速电机控制等等。对于此类应用,灵动的 MM32SPIN0280 就非常适合,其配备了96MHz M0 内核、硬件除法和开方、双 3MSPS ADC + 双高级定时器、多路运放和比较器,感兴趣的读者可以点击链接进一步了解。  

3 合 1

3 合 1 典型的应用是空调外机中的 PFC + 压缩机 + 风机控制,对于此类应用,其对于 CPU 性能的要求往往更高,因此,目前市面上的方案往往是 Cortex-M4 及以上性能的 MCU 或 DSP 来实现。MM32F5270 配备了 120MHz 的 Armv8 “星辰”处理器,带有 DSP 和 FPU 扩展,单位主频性能相较于 Cortex-M4 提升约 20%,并配有多并发的总线架构、高效互联系统 MindSwitch、多路定时器以及本期重点讲解的高性能模拟外设,非常适合用于此类 3 合 1 的应用场景。

4 合 1

典型的应用是四旋翼飞行器的四个螺旋桨控制,甚至可以将电机控制和飞控进行合并,此类应用往往需要 Cortex-M7 或以上性能的 MCU 或 MPU 来实现。

 

这里,笔者就以空调外机 3 合 1 控制这个典型应用来说明 MM32F5270 的高性能配置。

空调外机的主体部分包括 1 路 PFC、1 路压缩机和 1 路风机。这里,对这3个模块的参数做如下约束:

PFC

采用 Boost 结构,通过 1 路 PWM 驱动 MOS 管以控制功率因数校正网络,PWM 周期为 64KHz,电流环为 32KHz,带过流保护。

压缩机

永磁同步电机,采用无感 FOC 控制,单电阻采样,PWM 周期和电流环均为 16KHz,带过流保护。

风机

永磁同步电机,采用无感 FOC 控制,单电阻采样,PWM 周期和电流环均为 16KHz,带过流保护。

其中,Boost PFC 的原理图如下:

 

 

高速ADC

 

 

单电阻无感 FOC 电机控制原理图如下:

 

 

高速ADC

 

 

 

根据上述约定:每路电机需要 3 相互补 PWM 来驱动,1 路高速 ADC 去做电流采样,多个定时器通道去控制 ADC 的采样点,以及 1路比较器做过流保护;PFC 则需要 1 路 PWM 输出去做功率因数校正,1 路高速 ADC 去做电流采样,1个定时器通道去控制 ADC 的采样点,以及 1 路比较器做过流保护。

这里,考虑到两路电机的 PWM 周期完全一致,因此可以很容易的将两路电机的处理(包括采样和计算)在时序上分割开,这样, 两路电机就可以共用一组 ADC 进行分时采样,而另一组 ADC 可以留给 PFC 使用。

MM32F5270 中配置了 2 组高级定时器(TIM1 & TIM8)、4 组通用定时器(TIM2~5)、3 组比较器(COMP1~3)、2 组独立 DMA(DMA1~2,可分别用于两组 ADC),并通过 MindSwitch 和 CLU 将上述外设进行精确同步,能够满足上述资源需求。资源分配整理如下表:

 

 

高速ADC

 

 

其对应的系统框图如下图所示:

 

 

高速ADC

 

 

一种可行的时序分配和 PWM 波形如下图所示。

这里,因 TIM1 和 TIM8 的 PWM 周期都是 16KHz,因此,TIM1 和 TIM8 可以做 180° 相位差的严格同步。这样电机1(M1)和电机2(M2)的采样可以分时复用 ADC1 而不互相干扰。CPU 也可以分时处理 M1 和 M2 的电流环而不互相干扰。

这里电机 1 的电流采样点通过任意通道的触发控制(ADC1_TRIG),而电机 2 的电流采样点通过自动注入通道的触发控制(ADC1_JTRIG)。

TIM3 的 PWM 周期是 64KHz,而电流环是 32KHz,因此,其刚好可以利用 M1 和 M2 电流环的处理间隙做 PFC 的电流环。当然,这也得益于 “星辰”处理器的高性能运算能力,有足够的 CPU 带宽可以用于三路算法的运算。

 

 

高速ADC

 

 

此时,MindSwitch 和 CLU 的内部连接如下图所示:

 

 

高速ADC

 

 

可以看到,上述 3 合 1 的应用场景用到了 MM32F5270 的多个模块:

高性能“星辰”处理器

MindSwitch 和 CLU

2 组高速 ADC

3 组高速比较器

2 组高级定时器

1 组通用定时器

2 组 DAC

MM32F5270 以高性能运算能力和丰富的外设资源,很好的满足了 3 合 1 应用的需求。



4、小结 & NEXT

本文介绍了MM32F5270 中的 ADC、DAC 和比较器等模拟外设,并结合前几期的知识点,以 3 合 1 的应用实例来说明了这些高性能外设间如何协同配合来满足复杂应用的需求。

来源:灵动MM32MCU

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分