SemiDrive E3 MCAL 开发系列(6)– Icu 模块的使用

news2025/1/2 20:45:45

一、  概述

本文将会介绍 SemiDrive E3 MCAL Icu 模块的简介以及基本配置,其中还会涉及到 Xtrg 模块的配置。此外会结合实际操作的介绍,帮助新手快速了解并掌握这个模块的使用,文中的 MCAL 是基于 PTG3.0 的版本,开发板是官方的 E3640 网关板。

二、  Icu 模块简介

E3 Icu 模块底层硬件为 Etimer 中的 Capture 通道,每个 Capture 通道都可以作为一个 Icu 通道,E3 系列最多有 4 个 Etimer,因此最多有 16 个 Icu 通道,其中 E3206/E3106/E3205/E3104 系列最多有 2 个 Etiemr,最多有 8 个 Icu 通道。Icu 模块支持以下四种时钟源的选择:

  • HF_CLK 时钟源,可以在 Mcu_ClkCfg 中找到对应频率。
  • AHF_CLK 时钟源,和 Xtrg 使用的时钟源一致。
  • EXT_CLK 时钟源,外部时钟源输入。
  • LP_CLK 时钟源,固定为 24 MHz。

Icu 模块支持对以下几种模式进行输入捕获:

  • 信号边沿变化检测
  • 信号测量(高电平时间、低电平时间、周期时间、周期占空比)
  • 边沿变化时间戳采集
  • 边沿的计数

三、  Icu 模块的主要配置

配置 Icu 模块首先需要使能 Etimer 模块,在 Mcu 模块中进行配置,如下图所示。

图 3.1 使能 Etimer 模块

接着进行 Icu 模块的配置,首先是通用的配置,主要需要配置一下选项:

  • IcuMaxChannel:需要用到的 Icu 的通道总数。
  • IcuDevErrorDetect:在开发过程中是否支持对 Icu 驱动参数进行错误检测和有效性检测。
  • IcuDmaModeEnable:是否需要使用 DMA 进行传输,需要注意的是仅在时间戳模式和多路采样时会使用到。
  • DmaBurstTransferWordLength:使用 DMA 进行传输时,一次传输的数据量。
  • DmaFifoWml:使用 DMA 进行传输时设置的水线。
  • IcuMultiCaptureEnable:是否支持多路采样。
  • IcuMultiCaptureDmaMode:使用多路采样时,是否使用 DMA 进行数据传输。
  • DmaMultiCptBurstLengh:在多路采样时,使用 DMA 进行传输,一次传输的数据量。

图 3.2 Icu通用配置

接着对每个 Icu 通道进行配置。

图 3.3 Icu 通道的配置

Icu 通道的配置包括以下选项:

  • IcuChannel:Icu 的逻辑通道 ID。
  • IcuMultiCapture:该通道是否采用多路采样,需要注意如果使用多路采样,配置页面的 IcuDefaultStartEdge/IcuMeasurementMode/IcuHardwareChannel 这几个配置无效。
  • IcuDefaultStartEdge:该通道采样的边沿设置。
  • IcuFilterLevel:该通道使用的滤波等级。
  • IcuMeasurementMode:该通道需要采样的模式。
  • IcuHardwareModule:该通道用到的 etiemr 硬件模块。
  • IcuHardwareChannel:该通道用到的 Capture 硬件通道,包括 ICU_HW_CPT_A/B/C/D。
  • IcuHardwareClock:该通道使用的时钟源频率,包括 ICU_SEL_HF_CLK、ICU_SEL_AHF_CLK、ICU_SEL_EXT_CLK、ICU_SEL_LP_CLK。
  • IcuHwModulePrescaler:该通道使用的时钟分频值。
  • IcuWakeupCapability:目前该配置还不支持。
  • IcuSignalNotification:使用边缘检测模式时,采集到所设置的边沿变化时调用的回调函数。
  • IcuSignalMeasurementProperty:使用信号测量模式时,需要采样的具体模式,包括 ICU_DUTY_CYCLE、ICU_HIGH_TIME、ICU_LOW_TIME、ICU_PERIOD_TIME。
  • IcuTimestampNotification:使用时间戳模式时,采集到所需的时间戳数量时的回调函数。

配置完 Icu 模块后我们还需要对 Xtrg 模块进行配置,将 IO 信号或者 PWM 的输出信号路由到 Etimer 的捕获通道,具体配置如下图所示。

图 3.4 Xtrg 模块配置

四、  实际操作

配置完成后,更新配置,代码使用例程默认的代码,无需修改,如图 4.1 和 图 4.2 所示,接着进行编译、下载并调试,输入测试命令 “runcase 1600”,可以看到串口中会打印出捕获到的周期值、边缘计数、时间戳等信息,具体如图 4.3 所示。

图 4.1 Icu 测试代码

图 4.2 Icu 测试代码

图 4.3 串口打印信息

五、  注意事项

配置 Icu 模块时,需要注意以下事项:

  • 使用同个 etimer,捕获通道不同的情况下,时钟源的分频值需要设置一致,如果不一样,以在 EB 上配置的逻辑通道排列靠后的为准。
  • 使用了多路采样的 etimer 不能用于单路采样。
  • 多路采样,Etimer1 支持 XTRG_IO(0)~XTRG_IO(31) 的配置,etimer2 支持 XTRG_IO(32)~XTRG_IO(63)的配置。
  • 多路采样的子通道,不支持“边沿检测”子模式,以及回调函数的调用。
  • 使用多路采样时,etimer1 需要按照最大的 XTRG_IO 引脚配置多路采样路数,etiemr2 需要按照(最大的 XTRG_IO 管脚标号 – 31)配置多路采样路数。

六、  参考资料

1.《SemiDrive_E3_MCAL_User_Guide_Rev03.00.pdf》,2023.08

欲知更多系列技术内容可点击此处查看!

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

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

相关文章

嵌入式入门Day35

网络编程 Day2 套接字socket基于TCP通信的流程服务器端客户端TCP通信API 基于UDP通信的流程服务器端客户端 作业 套接字socket socket套接字本质是一个特殊的文件,在原始的Linux中,它和管道,消息队列,共享内存,信号等…

【Redis】:初识Redis

1.1 盛赞 Redis Redis 是⼀种基于键值对(key-value)的 NoSQL 数据库,与很多键值对数据库不同的是,Redis 中的值可以是由 string(字符串)、hash(哈希)、list(列表&#xf…

MATLAB 车牌自动识别系统设计 图像分割与图像增强方法 车牌识别

一 车牌自动识别系统总体设计 基于matlab的车牌识别系统,第一种方法采用图像分割与图像增强的方法,采集的车牌后将图像传入程序中,对图像进行处理后将车牌号提取出来,然后与数据库的样本进行对比后输出结果。 本课题拟采用的思路&…

Windows下C++使用SQLite

1、安装 进入SQLite Download Page页面,下载sqlite-dll-win-x86-*.zip、sqlite-amalgamation-*.zip、sqlite-tools-win-x64-*.zip三个包,这三个包里分别包含dll文件和def文件、头文件、exe工具。 使用vs命令行工具生成.lib文件:进入dll和def文…

module ‘django.db.models‘ has no attribute ‘FieldDoesNotExist‘

module ‘django.db.models’ has no attribute ‘FieldDoesNotExist’ xadmin报错 原因 django与xadmin版本不匹配。 django==3.2.7 xadmin-django==3.0.2解决方案 在xadmin/view/edit.py的388行改为 from django.core import exceptions if self.request_method ==

3.微服务灰度发布落地实践(组件灰度增强)

文章目录 前言调用链示图dubbo服务之间的的调链cloud 服务之间的调用链 网关servlet容器: 标签续传1.定义插件2.实现灰度增强拦截 线程池: 标签续传1.拦截Runnable或Callable,接口增强实现标签续传;Callable 插件定义Runnable 插件定义拦载Callabl或Runnable构造(可共用)拦载ru…

UE5 丧尸类杂兵的简单AI

A、思路 1、关卡初始化时,自动产生随机巡逻点,小兵到达后,去另一个随机巡逻点。 2、加入视力,发现主角后,不再巡逻,而开始追击主角并攻击。条件循环。 3、加入听力。主角的奔跑与射击会产生噪音&#xf…

数据库管理-第275期 Oracle 23ai:画了两张架构图(20241225)

数据库管理275期 2024-12-25 数据库管理-第275期 Oracle 23ai:画了两张架构图(20241225)1 系统管理分片2 用户定义分片总结 数据库管理-第275期 Oracle 23ai:画了两张架构图(20241225) 作者:胖…

【代码分析】Unet-Pytorch

1:unet_parts.py 主要包含: 【1】double conv,双层卷积 【2】down,下采样 【3】up,上采样 【4】out conv,输出卷积 """ Parts of the U-Net model """import torch im…

小程序基础 —— 08 文件和目录结构

文件和目录结构 一个完整的小程序项目由两部分组成:主体文件、页面文件: 主体文件:全局文件,能够作用于整个小程序,影响小程序的每个页面,主体文件必须放到项目的根目录下; 主体文件由三部分组…

Maven 测试和单元测试介绍

一、测试介绍 二、单元测试 1&#xff09;介绍 2&#xff09;快速入门 添加依赖 <dependencies><!-- junit依赖 --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.9…

大数据技术-Hadoop(一)Hadoop集群的安装与配置

目录 一、准备工作 1、安装jdk&#xff08;每个节点都执行&#xff09; 2、修改主机配置 &#xff08;每个节点都执行&#xff09; 3、配置ssh无密登录 &#xff08;每个节点都执行&#xff09; 二、安装Hadoop&#xff08;每个节点都执行&#xff09; 三、集群启动配置&a…

android sqlite 数据库简单封装示例(java)

sqlite 数据库简单封装示例&#xff0c;使用记事本数据库表进行示例。 首先继承SQLiteOpenHelper 使用sql语句进行创建一张表。 public class noteDBHelper extends SQLiteOpenHelper {public noteDBHelper(Context context, String name, SQLiteDatabase.CursorFactory fact…

【CSS in Depth 2 精译_095】16.3:深入理解 CSS 动画(animation)的性能

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第五部分 添加动效 ✔️【第 16 章 变换】 ✔️ 16.1 旋转、平移、缩放与倾斜 16.1.1 变换原点的更改16.1.2 多重变换的设置16.1.3 单个变换属性的设置 16.2 变换在动效中的应用 16.2.1 放大图标&am…

yii2 手动添加 phpoffice\phpexcel

1.下载地址&#xff1a;https://github.com/PHPOffice/PHPExcel 2.解压并修改文件名为phpexcel 在yii项目的vendor目录下创建一个文件夹命名为phpoffice 把phpexcel目录放到phpoffic文件夹下 查看vendor\phpoffice\phpexcel目录下会看到这些文件 3.到vendor\composer目录下…

如何通过采购管理系统提升供应链协同效率?

供应链是企业运营的命脉&#xff0c;任何环节的延迟或失误都会对企业造成严重影响。在采购环节中&#xff0c;如何保证与供应商的协同效率&#xff0c;避免因信息不对称而导致的决策失误&#xff0c;是企业面临的一大挑战。采购管理系统作为数字化供应链管理的重要工具&#xf…

yolov5 yolov6 yolov7 yolov8 yolov9目标检测、目标分类 目标切割 性能对比

文章目录 YOLOv1-YOLOv8之间的对比如下表所示&#xff1a;一、YOLO算法的核心思想1. YOLO系列算法的步骤2. Backbone、Neck和Head 二、YOLO系列的算法1.1 模型介绍1.2 网络结构1.3 实现细节1.4 性能表现 2. YOLOv2&#xff08;2016&#xff09;2.1 改进部分2.2 网络结构 3. YOL…

Vue项目如何设置多个静态文件;如何自定义静态文件目录

Vite实现方案 安装插件 npm i vite-plugin-static-copy在vite.config.ts引入 import { viteStaticCopy } from vite-plugin-static-copy配置 plugins: [viteStaticCopy({targets: [{src: "要设置的静态文件目录的相对路径 相对于vite.config.ts的", dest: ./, // …

学习threejs,THREE.RingGeometry 二维平面圆环几何体

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.RingGeometry 圆环几…

【畅购商城】详情页模块之评论

目录 接口 分析 后端实现&#xff1a;JavaBean 后端实现 前端实现 接口 GET http://localhost:10010/web-service/comments/spu/2?current1&size2 { "code": 20000, "message": "查询成功", "data": { "impressions&q…