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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/227494.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rpc和http的区别,使⽤场景

rpc和http的区别,使⽤场景 区别如下:传输协议传输效率性能消耗负载均衡性能表现使用场景: 区别如下: 传输协议 RPC:可以基于TCP协议,也可以基于HTTP协议HTTP:基于HTTP协议 传输效率 RPC&…

贪吃蛇小游戏

目录 头文件代码 函数实现代码 测试时代码 本游戏的实现需要用到链表&#xff0c;结构体&#xff0c;win32API&#xff0c;枚举等相关知识。 头文件代码 #pragma once#include<locale.h> #include<stdlib.h> #include<Windows.h> #include<stdbool.h&…

K8S(五)—命名空间与资源配额

目录 命名空间(Namespace)命令计算资源配额创建命名空间绑定一个ResourceQuota资源将命名空间和资源限制对象进行绑定尝试创建第二个 Pod查看ResourceQuota 绑定第二个ResourceQuota为命名空间配置默认的 CPU 、memory请求和限制&#xff08;1&#xff09;Pod 中所有容器都没有…

[Verilog] 设计方法和设计流程

主页&#xff1a; 元存储博客 文章目录 1. 设计方法2. 设计流程 3 Vivado软件设计流程总结 1. 设计方法 Verilog 的设计多采用自上而下的设计方法&#xff08;top-down&#xff09;。设计流程是指从一个项目开始从项目需求分析&#xff0c;架构设计&#xff0c;功能验证&#…

智能客服的应用——政务领域

#本文来源清华大学数据治理研究中心政务热线数智化发展报告 &#xff0c;如有侵权&#xff0c;请联系删除。 面对地方政务热线发展所面临的挑战&#xff0c;数智化转型已经成为了热线系统突破当前发展瓶颈、实现整体提质增效的关键手段。《意见》中也明确指出&#xff0c;政务…

ChatGPT4 Excel 高级复杂函数案例实践

案例需求: 需求中需要判断多个条件进行操作。 可以让ChatGPT来实现这样的操作。 Prompt:有一个表格B2单元格为入职日期,C2单元格为员工等级(A,B,C),D2单元格为满意度分数(1,2,3,4,5)请给入职一年以上,员工等级为A级并且满意度在3分以上的人发4000元奖金,给入…

SoloLinker第一次使用记录,解决新手拿到板子的无所适从

本文目录 一、简介二、进群获取资料2.1 需要下载资料2.2 SDK 包解压 三、SDK 编译3.1 依赖安装3.2 编译配置3.3 启动编译3.4 编译后的固件目录 四、固件烧录4.1 RV1106 驱动安装4.2 打开烧录工具4.3 进入boot 模式&#xff08;烧录模式&#xff09;4.4 烧录启动固件4.5 烧录升级…

AntDesignBlazor示例——分页查询

本示例是AntDesign Blazor的入门示例&#xff0c;在学习的同时分享出来&#xff0c;以供新手参考。 示例代码仓库&#xff1a;https://gitee.com/known/BlazorDemo 1. 学习目标 分页查询框架天气数据分页功能表格自定义分页 2. 创建分页查询框架 Table组件分页默认为前端分…

1.electron之纯原生js/jquery的桌面应用程序(基础篇)

如果可以实现记得点赞分享&#xff0c;谢谢老铁&#xff5e; Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 将 Chromium 和 Node.js 嵌入到了一个二进制文件中&#xff0c;因此它允许你仅需一个代码仓库&#xff0c;就可以撰写支持 Windows、…

Mybatis-Plus——01搭建环境、快速入门(新注解、依赖)

搭建环境、快速入门 一、准备数据库二、创建项目三、导入依赖四、配置连接数据库五、编写实体类六、编写mapper接口七、主程序加MapperScan八、测试&#xff0c;输出查询结果————————创作不易&#xff0c;如觉不错&#xff0c;随手点赞&#xff0c;关注&#xff0c;收藏…

《科技风》期刊发表投稿方式、收稿方向

《科技风》杂志是经国家新闻出版总署批准&#xff0c;河北省科学技术协会主管&#xff0c;河北省科技咨询服务中心主办的国内公开发行的大型综合类科技期刊。 该刊集科技性、前瞻性、创新性和专业性于一体&#xff0c;始终以“把脉科技创新 引领发展风尚”为办刊宗旨&#xff…

spark-常用算子

一&#xff0c;Transformation变换/转换算子&#xff1a; 这种变换并不触发提交作业&#xff0c;这种算子是延迟执行的&#xff0c;也就是说从一个RDD转换生成另一个RDD的转换操作不是马上执行&#xff0c;需要等到有Action操作的时候才会真正触发。 1.Value数据类型的Transf…

vue中qrcanvas生成二维码并且下载二维码

vue中qrcanvas生成带logo二维码并且下载二维码 1.引入qrcanvas模块 cnpm install --save qrcanvas //parkage.json 中引入 "qrcanvas": "^3.1.2" import { qrcanvas } from qrcanvas2.前端vue页面展示 <el-buttonsize"mini"type"tex…

FFmpeg转码流程和常见概念

视频格式&#xff1a;mkv&#xff0c;flv&#xff0c;mov&#xff0c;wmv&#xff0c;avi&#xff0c;mp4&#xff0c;m3u8&#xff0c;ts等等 FFmpeg的转码工具&#xff0c;它的处理流程是这样的&#xff1a; 从输入源获得原始的音视频数据&#xff0c;解封装得到压缩封装的音…

企业微信机器人发送文本、图片、文件、markdown、图文信息

import requests import base64 import hashlib import json # 机器人地址的key值 key"811a1652-60e8-4f51-a1d9-231783399ad2" def path2base64(path):"""文件转换为base64:param path: 文件路径:return:"""with open(path, "rb…

设计模式-模板模式

设计模式专栏 模式介绍模式特点应用场景模板模式和工厂模式区别代码示例Java实现模板模式python实现模板模式 模板模式在spring中的应用 模式介绍 模板模式是一种行为型设计模式&#xff0c;它通过将算法的骨架抽象成一个模板方法&#xff0c;将具体的操作留给子类来实现。这种…

iPhone 与三星手机:哪一款最好?

三星比苹果好吗&#xff1f;还是苹果比三星更好&#xff1f; 小米公司如何称霸全球智能手机市场&#xff1f;小米公司&#xff0c;由雷军创立于2010年&#xff0c;是一家领先的电子巨头。以其MIUI系统和互联网服务闻名&#xff0c;小米公司在全球智能手机市场中稳居前列。小米…

网络(七)路由协议以及相关配置

目录 一、路由器的工作原理 二、路由表的形成 2.1 直连网段 2.2 非直连网 2.3 路由表解析 2.3.1 查看路由表 2.3.2 解析 三、静态路由和默认路由 1. 静态路由 1.1 定义 1.2 特点 2. 默认路由 2.1 定义 2.2 特点 四、静态路由和默认路由的配置 1. 静态路由配置…

flutter学习-day12-可滚动组件和监听

&#x1f4da; 目录 简介可滚动组件 SingleChildScrollViewListView separated分割线无限加载列表带标题列表 滚动监听和控制 ScrollController滚动监听NotificationListener滚动监听 AnimatedList动画列表滚动网格布局GridView 横轴子元素为固定数量横轴子元素为固定最大长度…

[wp]第四届江西省赣网杯网络安全大赛-web 部分wp

第四届江西省赣网杯网络安全大赛&#xff08;gwb&#xff09;线上预选赛 因为学业繁忙 只玩了1小时&#xff0c;后续看看补一下这些 2023gwb-web1 九宫格拼图 2023gwb-web2 $filexxx;extract($_GET);if(isset($fun)){$contenttrim(file_get_contents($file));if($fun!&…