NXP应用随记(五):eMios功能点阅读随记

2023-12-17 09:28

本文主要是介绍NXP应用随记(五):eMios功能点阅读随记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1、概念点

2、eMios功能点

2.1、eMIOS - Single Action Input Capture (SAIC)

2.2、eMIOS - Single Action Output Compare (SAOC)

2.3、eMIOS - Double Action Output Compare (DAOC)

2.4、eMIOS - Pulse/Edge Counting (PEC) – Single Shot

2.5、eMIOS - Pulse/Edge Counting (PEC) – Continuous Mode

2.6、eMIOS - Input Pulse Width Measurement (IPWM)

2.7、eMIOS - Input Period Measurement (IPM)

2.8、eMIOS - Modulus Counter Mode (MC) – UP Counter

2.9、eMIOS - Modulus Counter Buffer Mode (MCB) – UP Counter

2.10、eMIOS - Modulus Counter Buffer Mode (MCB) – UP/DOWN Counter

2.11、eMIOS - Output Pulse Width and Frequency Modulation Buffered (OPWFMB)

2.12、eMIOS -中心对齐输出脉宽调制与死区插入缓冲(OPWMCB)

2.13、eMIOS -输出脉宽调制缓冲(OPWMB)

2.14、eMIOS -带触发器的输出脉宽调制(OPWMT)

3、RTD组件详细介绍

3.1、eMIOS -概述的eMIOS组件的RTD

3.2、eMIOS - Emios_Mcl_Ip组件

3.3、GPT的使用

3.4、OCU的使用

3.5、PWM使用

3.6、ICU的使用


1、概念点

An与Bn

        EMIOS模块包含两个通道,每个通道都包含两个双缓冲数据寄存器,分别称为A和B。这两个寄存器分别为An和Bn,其中n是通道的编号,通常为0或1。

        具体来说,每个通道都有两个双缓冲数据寄存器:

        ·An 寄存器: 这是通道n的一个缓冲区,用于存储数据。当通道正在使用An缓冲区时,可以在后台准备并更新Bn缓冲区的数据。

        ·Bn 寄存器: 这是通道n的另一个缓冲区。当An缓冲区正在被使用时,可以在Bn缓冲区中准备下一组数据,以便在切换缓冲区时,新的数据可以立即被通道使用。

        这种双缓冲的设计允许在一个缓冲区传输数据的同时,另一个缓冲区可以准备新的数据,以保证连续的数据传输。这对于实时控制和高效的数据处理非常有用,因为可以在不中断当前操作的情况下进行缓冲区的切换,确保数据的连续性。

        在使用EMIOS模块进行编程时,程序员可以操作这些An和Bn寄存器,以实现对通道的控制和数据的处理。这样的结构通常用于处理定时器、PWM(脉冲宽度调制)、捕获和比较等应用。

        通过An[A]、Bn[B]、ALTAn[ALTA]来访问影子寄存器。

        每个An[A]实例都有一个独立的关联实例AS1和AS2。在某些UC模式下,还可以使用ALTAn[ALTA]访问AS2。

        注意的是下文中的不同模式,对An[A]、Bn[B]、ALTAn[ALTA] 的操作直接影响着影子寄存器,S32K3XX里面个人理解,影子寄存器存在,但是用户不可见,也只能通过An[A]、Bn[B]、ALTAn[ALTA] 的方式去操作,怎么操作。

2、eMios功能点

2.1、eMIOS - Single Action Input Capture (SAIC)

Type G\X\Y\H可用

返回输入信号边缘匹配的计数器总线的值。

-可以使用内部或模数计数器。

-是否可以匹配上升,下降或切换由EDPOL, EDSEL的状态决定

关注点:

        ·当检测到边缘时,设置标志并在寄存器A2中捕获计数器总线值。用户从UCA[n]寄存器中读取该值。

        ·UCB[n] =已清除,无法写入。

2.2、eMIOS - Single Action Output Compare (SAOC)

Type G\X\Y\H可用

在计数器总线匹配上生成输出。

- 可以使用内部或模数计数器

- 可以设置输出到高,低或切换,根据EDPOL和EDSEL的状态

关注点:

·创建匹配所需的计数器总线值写入UCA[n] (A2n), UCA[n] (A2n)缓冲到A1。

·比较器匹配A1将产生一个输出事件,该事件由EDPOL和EDSEL的状态定义。

2.3、eMIOS - Double Action Output Compare (DAOC)

Type G、H可用

产生一个输出脉冲。

-可以使用内部或模数计数器

-可配置为2个HIGH边或2个LOW边(EDPOL位)测量。

A2更新进A1再更新进A。

关注点:

1、将所需的脉冲前沿写入UCA[n] (A2n),将下降沿写入UCB[n] (B2n),缓存到A1和B1。

2、在比较器a匹配中,输出被设置为EDPOL的值。如果MODE0=1,则设置FLAG

3、在比较器B匹配中,输出被设置为EDPOL的倒数。设置FLAG。

2.4、eMIOS - Pulse/Edge Counting (PEC) – Single Shot

Type G 可用

返回在期望的时间窗口内在输入上检测到的脉冲或边缘的数量。

关注点:

·MODE[0] = 1位选择Single Shot操作。

·极性和触发边由EMIOSC[n]寄存器中的EDSEL和EDPOL位选择.

·A1保存时间窗口的开始时间,寄存器B1保存时间窗口的停止时间.

·另外,寄存器A2总是保存最新的可用测量值。

·比较器A和所选时间基之间的下一次匹配没有效果,直到对寄存器A执行新的写入操作。

2.5、eMIOS - Pulse/Edge Counting (PEC) – Continuous Mode

Type G 可用

关注点:

·MODE[0] = 0位选择连续操作。

·极性和触发边由EMIOSC[n]寄存器中的EDSEL和EDPOL位选择

·A1保存时间窗口的开始时间,寄存器B1保存时间窗口的停止时间

·另外,寄存器A2总是保存在第一个FLAG发生后的任何时间提供一致数据的最新可用测量值。

2.6、eMIOS - Input Pulse Width Measurement (IPWM)

Type G 、H可用

确定输入脉冲宽度的宽度(在计数器总线时钟刻度中)。

-可以使用内部或模数计数器

-可以通过EDPOL位的状态来测量HIGH或LOW脉冲(EDPOL=1表示HIGH)

关注点:

-前沿被捕获到B2[n]中。(EDPOL确定前缘是高还是低)。

-后沿捕获到A2[n],并设置Flag

-脉冲宽度由UCAn (A2)减去UCBn (B1)计算。

        警告(溢出的时候)-如果脉冲已经跨越了一个计数器总线周期,那么需要小心修改计算....宽度= (UCAn +计数器周期)- UCBn。

2.7、eMIOS - Input Period Measurement (IPM)

Type G 、H可用

确定输入脉冲宽度的周期(以计数器总线时钟刻度计)。

-可以使用内部或模数计数器

-可配置为2个HIGH边或2个LOW边(EDPOL位)测量。

      关注点:

  当检测到所选极性的边缘时,将计数器值捕获到A2[n]和B2[n]中,将先前保存在B2[n]中的数据捕获到A1[n]和B1[n]中,并设置Flag。

        周期由UCAn (A2)减去UCBn (B1)计算。

        注意-如果输入信号的周期已经跨越了一个计数器总线周期,那么需要注意修改计算....

        宽度= (UCAn +计数器周期)- UCBn

2.8、eMIOS - Modulus Counter Mode (MC) – UP Counter

Type G 、H可用

生成一个时基,可通过内部计数器时基与其他通道共享。

- 可使用内部或外部(输入通道引脚)计数器。

关注点:

•在比较器a匹配上,FLAG被设置,内部计数器被设置为值$0。

•A2寄存器的变化使A1寄存器在下一个时钟更新

·注意-如果进入MC模式时,内部计数器值高于寄存器UCA[n]值,那么在匹配A1之前,它将在最大计数器值($FFFFFF)处包装。

2.9、eMIOS - Modulus Counter Buffer Mode (MCB) – UP Counter

Type X可用

生成可通过内部计数器库与其他通道共享的时间库。

-可以使用内部或外部(输入通道引脚)计数器。

关注点:

·在比较器a匹配上,设置FLAG,并将内部计数器设置为值$1。

·为了实现平稳的转换,当内部计数器达到$1时,A2寄存器的变化使A1寄存器更新。

·注意-如果进入MCB模式时,内部计数器值高于寄存器UCA[n]值,那么在匹配A1之前,它将在最大计数器值($FFFFFF)处包装。

2.10、eMIOS - Modulus Counter Buffer Mode (MCB) – UP/DOWN Counter

Type G 、X可用

生成可通过内部计数器库与其他通道共享的时间库。

-可以使用内部或外部(输入通道引脚)计数器。

关注点:

在比较器a匹配上,设置FLAG,并将内部计数器设置为值$1。

为了实现平稳的转换,当内部计数器达到$1时,A2寄存器的变化使A1寄存器更新。

2.11、eMIOS - Output Pulse Width and Frequency Modulation Buffered (OPWFMB)

Type G 、X可用

生成简单的输出 PWM 信号。

- 需要内部计数器

- EDPOL 允许在高电平有效或低电平有效占空比之间进行选择。

关注点:

占空比= UCA[n] (A1) + 1,周期= UCB[n] (B1) + 1

比较器A1匹配时,输出引脚设置为EDPOL值

比较器B1匹配时,输出引脚设置为EDPOL的补码,内部计数器复位

从寄存器B2[n]到B1[n]以及从寄存器A2[n]到A1[n]的传输在下一个周期的第一个时钟执行。

根据MODE[5]位的不同,只能在B1匹配上生成标志,也可以同时在A1和B1匹配上生成标志。

2.12、eMIOS -中心对齐输出脉宽调制与死区插入缓冲(OPWMCB)

Type G 可用

·产生中心对齐PWM输出信号与死区时间插入。

·MODE[6]位分别在尾随死区插入和前导死区插入之间选择。

·EDPOL允许有源高或有源低占空比之间的选择。

·需要MCB上/下

关注点:

Period = MCB Period, Dead Time = B1[n], Duty Cycle = 2 * (Period - A1[n]) – Dead Time

在选取的死区插入边上:

▪在比较器A1匹配(选择计数器总线)上,内部计数器设置为$1

▪在比较器B1匹配(内部计数器)上,输出引脚设置为EDPOL值

在非选择死区插入边缘上:

▪在比较器A1匹配上,输出引脚设置为EDPOL的补码,内部计数器设置为$1

2.13、eMIOS -输出脉宽调制缓冲(OPWMB)

Type G 、H、X、Y可用

产生一个简单的输出PWM信号。

-使用模数计数器

- EDPOL允许在有源高或有源低占空比之间进行选择。

关注点:

UCA[n] (A1) 写入前沿

UCB[n] (B1) 写入后沿

在比较器A1匹配上,输出引脚设置为EDPOL的值

在比较器B1匹配上,输出引脚被设置为EDPOL的补码

从寄存器B2[n]到B1[n]和从寄存器A2[n]到A1[n]的传输在下一个周期的第一个时钟执行。

根据MODE[5]位的不同,只能在B1匹配上生成标志,也可以同时在A1和B1匹配上生成标志。

程序里面体现如下:

假设TICKS为0x4E2,占空比为50%,emios0_0作为Count bus,emios0_1、emios0_2、emios0_3参考emios0_0输出,寄存器如下显示。

2.14、eMIOS -带触发器的输出脉宽调制(OPWMT)

Type G 、H、X、Y可用

·产生一个固定偏移量的PWM信号和一个触发信号。

·-旨在与具有共享公共时基的相同模式下的其他信道一起使用。

·这种模式在产生 lighting  PWM控制信号时特别有用

A1[n]定义前缘,B1[n]定义后缘,A2[n]定义FLAG事件的生成

在比较器A1匹配上,输出引脚设置为EDPOL的值

在比较器A2匹配时,FLAG被设置(并且可以允许与其他事件同步,例如:AD告转换)

在比较器B1匹配上,输出引脚被设置为EDPOL的补码

寄存器B2[n]到B1[n]的传输在寄存器A1的每次匹配时执行

3、RTD组件详细介绍

3.1、eMIOS -概述的eMIOS组件的RTD

配置工具提供五个RTD的eMios实现驱动应用。

  1. eMios的为控制库,也就是MCAL
  2. eMios的GPT模块
  3. eMios的输出比较单元
  4. eMios的PWM
  5. eMios的IC

需要注意的:

如果想使用其他四个派生程序,则必须在项目中添加Emios_Mcl_Ip

每个eMIOS RTD模块都有自己的Irq函数,您可以为应用程序设置一个回调函数。

所有处理程序项都在Mcl Irq文件中分配。

EMIOSx_x_IRQ -> Emios_Xxx_Ip_IrqHandler(inst, channel) -> CallbackFunction/Notification

eMIOS初始化一般流程:

Initialize instance (Mcl) -> Initialize channel (Gpt, Ocu, Pwm, Icu) -> other (start, notification, etc.)

3.2、eMIOS - Emios_Mcl_Ip组件

1、启用eMIOS通用支持。

·否则,EmiosCommon不可用。

·需要启用错误检测

2、配置全局eMIOS。

启用eMIOS实例冻结状态和全局时基。

设置全局时钟分频值:1 ~ 256

3、配置eMIOS主总线

选择硬件通道

选择master bus

选择默认周期与通道分频

启用或禁用调试模式和中断

主总线通道不能配置为其他模式。

MC与MCB的区别:MC表示本周期,MCB表示下周期,起作用的时间不一样

3.3、GPT的使用

3.4、OCU的使用

3.5、PWM使用

3.6、ICU的使用

除主总线通道(ch[23])外,每个 eMIOS 通道都能触发 BCTU。

这篇关于NXP应用随记(五):eMios功能点阅读随记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/503874

相关文章

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一