目录
[1、eMios IP介绍](#1、eMios IP介绍)
[6、EMIOS -通道分配建议(针对S32K312)](#6、EMIOS -通道分配建议(针对S32K312))
1、eMios IP介绍
Emios是什么?eMIOS提供了独立的通道(UCs),您可以配置这些通道来为不同的功能生成或测量时间事件。
每个eMIOS实例最多有24个UC通道,2个全局定时器总线和3个专用定时器总线。
触发eDMA通道并与TRGMUX互连。
定时器Timer Width 对于S32K388来说是24bit
Timer Width 在手册里面可以看到 A与B寄存器是24bit的,这是因为手册充分考虑了S32K3xx系列芯片都是使用一份手册,但是实际调试的时候,通过调试器可以实际观察到bit位数。
Local Channel prescaler width这个个人理解应该是时钟的分频,4表示4bit也就是最大到16分频。SDK的配置里面最大也就是16分频。
Number of global counter buses:讲的是Ch23 Count_bus_A、Ch22 Count_bus_F。
Number of global prescaler:这个表示从锁相环过来的时钟是不分频的,如下图所示。
Global channel prescaler width:这个表示从CORE_CLK过来的时钟最大能分频数,目前看是8bit也就是256,大于这个值就是错误的了,配置显示如下。
当大于256时,会报错
对应的寄存器如下
- eMIOS可以使用它的禁用输入来禁用它的输出,类似于K1 FTM中使用的故障检测输入。(个人理解一下,通过K1 FTM模块检测输入故障,一旦检测到故障,禁止输入,那么对应的输出也是关闭的了)
- 除了主计数器总线通道(ch[23])外,每个eMIOS通道都可以触发BCTU。
- GTBE_OUT连接到其他eMIOS实例的GTBE_IN输入,设定GTBE位同时打开这些eMIOS实例的内部计数器。
注释:GTBE - Global Timebase Enable
4、eMIOS采用CORE_CLK时钟,最高160MHz,外部时钟仅在MC和MCB模式下可用。
2、时钟结构
时钟分频最终线路如下:
此时注意两个寄存器,命名的微区别,但是寄存器内部区别非常大。
UC (EXT) PRE取值范围为1 ~ 16。如果要求宽度> 2位,则使用eMIOS_C2n寄存器。在这种情况下,最后2位eMIOS_C2n。UCEXTPRE[1:0]在eMIOS_Cn中被镜像。UCPRE(1:0)同步自动更改。
使用内部计数器的时候,必须使能UCPREN,整个设计采用单时钟频率。
3、通道类型
eMIOS包含4种不同类型的通道,每种类型都有不同的模式实现。
通道类型如下:注意一下 Ch TypeX与Ch TypeG有内部计数器,这样子区分的原因是:不同的Ch有不同的功能,实现上需要注意的。
4、功能介绍
eMIOS模块的主要特性是:
− 24个UCs(统一通道)分布在本地计数总线上。
− 由UC23驱动的全局计数器总线A。
− 由UC22驱动的全局计数总线F。
− 通过计数器总线共享的同步时基。
− 每个通道的专用时基,与计数器总线不同
− 全局时钟预分频器(GCP)
− 每通道一个CP
− 为每个UC设置专用的控制和状态寄存器
− 16位宽数据寄存器
− 影子标志寄存器(GFLAG)通过一次读访问访问所有通道标志:备注不是特别清楚这个寄存器到底是干嘛的。
− 为调试目的冻结UC状态的能力
− 电机控制能力
UC的主要特点是:UC也就是通道
-两个双缓冲数据寄存器,An和Bn。
-两个比较值 A和B
插入疑问点:An/Bn与A/B有什么区别呢?
1、Two Double-Buffered Data Registers (An and Bn):
Double-Buffered: 意味着有两个缓冲区,可以在一个缓冲区中写入数据,而在另一个缓冲区中读取数据。这种机制可以提高并发性和系统的响应速度。当一个缓冲区正在被使用时,另一个缓冲区可以被更新。
An和Bn: 这两个寄存器(An和Bn)是用于存储数据的。当一个缓冲区(例如A)正在被写入新的数据时,另一个缓冲区(例如B)可以被读取。这使得在数据更新的同时,可以保持对先前数据的可用性。
2、Two Comparators (A and B):
Comparators: 比较器通常用于将输入信号与一个或多个参考值进行比较。在EMIOS中,有两个比较器,分别命名为A和B。
A和B: 这表示有两个独立的比较器。每个比较器都可以与相应的数据寄存器(An和Bn)中的数据进行比较。当输入信号与参考值相匹配或满足某个条件时,比较器可以触发相应的动作,例如产生中断或更新数据寄存器中的值。
总的来说,An和Bn是用于存储数据的寄存器,而A和B是比较器,用于将输入信号与参考值进行比较。这种结构允许在处理输入信号时实现一些复杂的功能,例如在不中断当前操作的情况下更新数据。
-
一个内部计数器(CNTn[C]),可以在除GPIO之外的所有模式下运行。
-
一个输出触发器,保持要应用到输出引脚的逻辑电平。
-
一个状态寄存器,UC状态n (S0 - S23),标记输入捕获和匹配事件。
- 一个控制寄存器,UC控制n (C0 - C23),用于控制UC操作。
UCs可配置为以下13种工作模式:
当改变MODE[6:0]时,应用软件必须先进入GPIO模式,才能正常复位统一通道的内部功能。
5、中断与DMA
程序体现如下
6、EMIOS -通道分配建议(针对S32K312)
1、比较功能
Type G(7 Channel)全功能:它有内部定时器,但不能被其他通道使用;
Type X(10 Channel)具备OPWFMB:具备内置定时器,MC/MCB定时器总线可用于其他信道;没有IPWM;
Type Y(10 Channel):具备SAIC、OPWMB(频率不可调整),没有内部定时器。
2、PWM输入通道
Type H型适用于PWM测量-需要X型通道运行作为计数器总线(MC模式);
Type G型适用于PWM测量-它具有完整的功能;
3、输出通道:
Type X型适用于PWM输出-频率和周期在OPWFMB模式下可调。
Type G型适用于PWM输出-它具有完整的功能。
每个 eMIOS 模块的下列通道之一可预留用于生成计数器总线:
− Type X Ch22 = counter bus F
− Type X Ch23 = counter bus A