eMIOS模块的介绍


背景

eMIOS(Enhanced Modular IO Subsystem)增强型模块化IO子系统,在多种控制器的外设模块中存在,本次来了解eMIOS的原理。助力开发中更好使用它。
本次介绍主要资料来源NXP S32K3的相关手册。该手册介绍的比较详细,更加方便我们了解eMIOS的原理,原理会了,在其他MCU中使用大同小异。

eMIOS模块说明

组成说明

每个eMIOS模块都有24或者更多个通道(UC),这些通道都是相互独立的且又是互相配合,但是这些通道在结构上并不是一模一样,基本以8个通道为一组,多组通道组成一个eMIOS模块。具体差异可以参考手册。这里主要原理说明。

模块

时钟源、计数器说明

每个eMIOS的每个通道都有自己的计数源(Counter Bus或者叫CNT)也叫该通道的内部计数器,在eMIOS模块的时钟源驱动下进行计数。

部分的eMIOS通道可以将自己内部的计数器分享出去共给其他通道使用,这样就可以做到计数器同步来做一些高级的应用。在实际使用时,根据应用、功能需求等选择使用哪个计数器作为该通道的计数器来工作。例如产生单个PWM使用内部计数器即可;产生步进电机的驱动脉冲则使用Counter Bus B/C/D/E可完成多个通道波形产生来控制可解决波形同步问题。

模块

例如S32K3的eMIOS中,Counter Bus A是一个全局的计数器,它是由CH23产生分享的,可以给任何通道使用;Counter Bus B是一个局部的计数器,它是由CH0产生分享的,可以给1-7任何通道使用;Counter Bus C是一个局部的计数器,它是由CH8产生分享的,可以给9-15任何通道使用;Counter Bus D是一个局部的计数器,它是由CH16产生分享的,可以给17-22任何通道使用;Counter Bus F同理Counter Bus A,是由CH22分享产生的。

通道

例如S32K3的eMIOS的一个通道的内部框图如上。计数器来源可以来源Counter Bus A、Counter Bus B/C/D/E、Counter Bus F。

eMIOS SAIC模式

Single Action Input Capture Mode 就是输入捕获,检测到一个上升沿或者下降沿,UC就生成一个Flag信号,同时捕捉当前Counter Bus的值到AS2。也可以上升沿和下降沿同时采集。

SAIC
SAICB

eMIOS SAOC模式

Single Action Output Capture Mode就是输出匹配模式。给AS2写入一个值后,当Counter Bus的值与AS2相等时,这个时候就会产生一个Flag信号,同时控制输出跳变或者翻转。

SAOC
SAOCT

eMIOS IPWM模式

Input Pulse Width Measurement Mode,这个模式就是用来测量两个连续不同沿之间的宽度,即测量一个电平宽度。当检测到第一个沿,捕捉Counter Bus的值存入AS2,当检测到第二个沿,再捕捉Counter Bus的值存入BS2并产生一个Flag信号。第一个边沿为上升沿第二个边沿为下降沿表示测量高电平宽度;第一个边沿为下升沿第二个边沿为上降沿表示测量低电平宽度。

IPWM

eMIOS IPM模式

Input Period Measurement Mode,这个模式用来测量两个连续相同沿的宽度,和 IPWM类似。测量的是信号周期,即检测到第一个沿(上升沿或者下降沿),捕捉Counter Bus的值存入AS2,当检测到第二个沿(与第一个沿相同),再捕捉Counter Bus的值存入BS2并产生一个Flag信号。

IPM

eMIOS DAOC模式

Double Action Output Compare Mode,这个模式相比较SAOC,它有两个比较输出,就是当第一个匹配事件发生时,将输出信号翻转,第二个匹配事件发生时,将输出信号再次翻转。第一个事件匹配成功后可生产Flag信号也可以不生成Flag信号(可设置),而第二个匹配成功后则产生Flag信号。

DAOC

eMIOS PEC模式

Pulse Edge Counting Mode,可测量信号的脉冲数或者边沿数。外部信号输入检测到有效信号后计数器累加,并且在当计数器CNT值发生匹配事件AS1后,复位计数器CNT并启动计数,发生匹配事件BS1后,停止计数并且输出Flag信号。

PEC

更多模式介绍后续完善…


文章作者: fzxhub
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 fzxhub !
  目录