NXP应用随记(四):eMios阅读随记-整体功能概述

本文详细介绍了eMiosIP模块的构造、时钟结构、通道类型、功能特性,特别是针对S32K312处理器的中断与DMA机制,以及针对不同功能的通道分配建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、eMios IP介绍

2、时钟结构

3、通道类型

4、功能介绍

5、中断与DMA

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时,会报错

对应的寄存器如下

  1. eMIOS可以使用它的禁用输入来禁用它的输出,类似于K1 FTM中使用的故障检测输入。(个人理解一下,通过K1 FTM模块检测输入故障,一旦检测到故障,禁止输入,那么对应的输出也是关闭的了)
  2. 除了主计数器总线通道(ch[23])外,每个eMIOS通道都可以触发BCTU。
  3. 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

### S32K312 Microcontroller EMIOS Module Documentation and Usage Examples The Enhanced Multi-Function Input Output System (eMIOS) on the S32K312 microcontroller is a significant upgrade from previous timer modules, offering advanced functionalities such as signal measurement and PWM wave generation[^3]. This section provides an overview of the eMIOS resources available within this device. #### Overview of eMIOS Resources The eMIOS module contains multiple channels that can be configured independently to perform various timing tasks. Each channel supports different operating modes including input capture, output compare, pulse width modulation (PWM), and quadrature encoder interface mode. The flexibility provided by these features makes it suitable for applications requiring precise control over time-critical operations or complex waveform generations. #### Configuration Steps for Using eMIOS Channels To configure an eMIOS channel, one must first initialize the system clock settings according to application requirements. Afterward, specific registers associated with each function need adjustment based upon desired behavior: For example, setting up a simple PWM generator involves configuring several key parameters like period value, duty cycle ratio, polarity selection etc., through corresponding register fields found inside the eMIOS peripheral block. ```c // Example C code snippet showing how to set up basic PWM using eMIOS Channel 0 void setup_PWM(void){ // Enable clocks & reset configuration... EMIOSSC->CHCTR[0] |= CHCTR_OPMODE(7); /* Set Operation Mode */ EMIOSSC->EDR1[0] &= ~EDR1_EDGSEL_MASK; /* Clear Edge Select Bits */ EMIOSSC->CMPB[0] = PeriodValue / DutyCycle;/* Load Compare Value B Register */ } ``` This demonstrates initializing a single-channel PWM operation but similar principles apply when expanding configurations across other types of events supported by eMIOS hardware blocks. --related questions-- 1. How does the initialization process differ between standard timers versus enhanced multi-function I/O systems? 2. What are some practical use cases where utilizing eMIOS would provide advantages over traditional methods? 3. Can you explain more about the internal structure of the eMIOS module in terms of its architecture design? 4. Are there any particular challenges faced while programming the eMIOS compared to simpler peripherals? 5. In what scenarios might someone choose not to utilize all capabilities offered by the eMIOS feature set?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

剑从东方起

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值