NXP实战笔记(七):S32K3xx基于RTD-SDK在S32DS上配置ICU输入捕获

2024-02-23 19:28

本文主要是介绍NXP实战笔记(七):S32K3xx基于RTD-SDK在S32DS上配置ICU输入捕获,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1、概述

2、输入捕获SDK配置

2.1、SAIC中断方式

2.2、IPWM或者IPM


1、概述

        输入捕获,可以抓取高电平时间、低电平时间、占空比、周期、边沿检测与回调函数、边沿计数(ABZ解码)、时间戳、唤醒中断。

        记录一下根据Emios模块实现上述部分功能。

        适用于输入捕获功能的Emios有以下三种模式。

SAIC:信号实时输入捕获

        从上图可以看出,SAIC仅仅关联了A寄存器,假设上升沿边沿检测,只能在上升沿时候抓取一个A的值,那么使用轮询的方式实现不了任何功能,在SDK包里面,通过中断或者DMA实现记录上次的值与本次的值,进行周期或者占空比的测量。

只有在中断或者DMA的时候才会置位此标志位

2、输入捕获SDK配置

2.1、SAIC中断方式

        目的:捕获通道eMios0_23 引脚PTC13 边沿检测 “eMios0_23使用内部计数器方式,所以Emios_Icu模块无需再配置”

        Emios_Icu配置如下

1、通道功能配置

2、通道属性配置

        在使用中断的情况下,SAIC、IPWM、IPM都好使,功能属于全支持了。但是假设使用轮询,IPM仅仅测量周期,IPWM仅仅测量占空比,SAIC用于边沿计数,其他功能FAE说支持就要中断了。周期与占空比同时测量出来是不支持的了。

中断配置,在ICU的中断里面配置之后无需再次在中断容器里面实现配置了。

测试代码

初始化

 /* Initialize Emios0 */Emios_Mcl_Ip_Init(0U, &Emios_Mcl_Ip_0_Config_BOARD_INITPERIPHERALS);
Emios_Icu_Ip_Init(0U, &eMios_Icu_Ip_0_Config_PB);Emios_Icu_Ip_EnableEdgeDetection(0,23);
/*中断初始化*/IntCtrl_Ip_SetPriority(EMIOS0_0_IRQn,2);IntCtrl_Ip_InstallHandler(EMIOS0_0_IRQn, &eMios0_23_EncoderC_Pulse, NULL_PTR);IntCtrl_Ip_EnableIrq(EMIOS0_0_IRQn);Emios_Icu_Ip_EnableInterrupt(0, 23);
/*中断执行*/
volatile uint32 eMios0_23_EncoderC_Pulsex = 0;
static void eMios0_23_EncoderC_Pulse(void)
{
Emios_Icu_Ip_IrqHandler(0, 23);
eMios0_23_EncoderC_Pulsex++;
}

测试结果,上升沿进中断,那么记录上升沿个数,发现可以完全对的上

2.2、IPWM或者IPM

目的:PTD10连接Emios1_10进行周期或脉冲宽度测量,轮询方式

IPWM:输入脉冲宽度测量,可以是高电平也可以是低电平

        从上述两图中可以看出,IPWM与IPM均可以获取A与B的值,通过相减的方式实现了周期或者脉冲宽度测量。

Emios_Icu配置,作为Count bus使用

ICU配置如下

代码实现

 /* Initialize Emios1 */
Emios_Mcl_Ip_Init(1U, &Emios_Mcl_Ip_1_Config_BOARD_INITPERIPHERALS);
Emios_Icu_Ip_StartSignalMeasurement(1,10);
/*执行代码*/
uint16 eMios1_10_EncoderA_Preiod(void)
{uint16 EncoderA_UCA         = IP_EMIOS_1->CH.UC[10].A;uint16 EncoderA_UCB         = IP_EMIOS_1->CH.UC[10].B;uint16 EncoderA_UCAReyurn   = 0;if(EncoderA_UCA >= EncoderA_UCB){EncoderA_UCAReyurn = (EncoderA_UCA - EncoderA_UCB);}else{EncoderA_UCAReyurn = (EncoderA_UCA - EncoderA_UCB + 0xFFFF);}EncoderA_UCAReyurn = (uint16)(50000/EncoderA_UCAReyurn) + 1;return EncoderA_UCAReyurn;
}

测试结果

IPWM的实现方式是一样的。

这篇关于NXP实战笔记(七):S32K3xx基于RTD-SDK在S32DS上配置ICU输入捕获的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语