【轮式平衡机器人】——TMS320F28069片内外设之eCAP

引入

TMS320F28069的eCAP(增强型捕获模块)是一个强大的外设,用于精确测量和捕获输入信号的事件和时间戳

电机控制、传感器数据采集和信号处理等应用中,eCAP模块可以用于测量霍尔传感器、编码器或其他数字输入信号的周期、频率和相位等信息。通过捕获这些信号的事件和时间戳,用户可以精确地控制电机转速、位置和方向,或者实现精确的数据采集和分析。


一、eCAP模块基本介绍

1、特点与功能

以下是eCAP的主要特点和功能

  1. 多通道捕获:TMS320F28069微控制器通常包含多个eCAP模块,每个模块可以独立配置和操作。这使得用户能够同时捕获和测量多个输入信号的事件。
  2. 事件检测:eCAP模块可以配置为检测输入信号的上升沿、下降沿或两者都检测。当检测到这些事件时,eCAP会生成一个中断请求,通知CPU进行处理。
  3. 时间戳捕获:当检测到事件时,eCAP模块会捕获当前的计时器值,并将其存储在时间戳寄存器中。这些时间戳可以用于计算事件之间的时间间隔,从而确定输入信号的频率、周期或其他相关参数。
  4. 灵活性:eCAP模块具有高度的灵活性,可以通过编程配置来适应不同的输入信号和测量需求。用户可以设置捕获模式、极性、预分频器等参数,以满足特定的应用要求。
  5. 中断支持:eCAP模块支持中断功能,当检测到事件或满足其他条件时,可以触发中断请求。这使得用户能够在CPU执行其他任务时,及时响应和处理eCAP模块捕获的事件。

2、包含资源

TMS320F28069有4路eCAP模块,包括以下资源

  • 可分配的输入引脚
  • 32b时间基准(计数器)
  • 4个32b时间窗捕获控制寄存器
  • 独立的边缘极性选择
  • 输入信号分频(2~64)
  • 4个捕获事件均可引起中断

3、可设置模式

可设置的模式有捕捉模式或APWM模式:

  1. 捕捉模式

    • 边沿捕捉:eCAP可以配置为在输入信号的上升沿或下降沿时捕获时间戳。这种模式下,每当输入信号发生边沿变化时,eCAP都会记录当前的定时器或时钟周期值。
    • 窗口捕捉:在此模式下,eCAP会在两个预设的时间窗口内检测输入信号的边沿。如果在这个窗口内检测到边沿,eCAP会捕获时间戳。这种模式常用于检测输入信号的抖动或稳定性。
    • 周期测量:eCAP可以配置为测量输入信号的周期。它会连续捕获两个相邻的边沿,并计算它们之间的时间差,从而得到信号的周期。
  2. APWM模式

    • APWM(Advanced PWM)模式允许eCAP模块作为PWM发生器的输入,用于生成复杂的PWM波形。在此模式下,eCAP会根据捕获到的输入信号边沿来生成PWM波形。
    • 例如,当eCAP在输入信号的上升沿时开始生成PWM波形,并在下降沿时结束,这样可以根据输入信号的周期或占空比来调整PWM波形的参数。
    • APWM模式在需要与外部事件同步的PWM控制应用中非常有用,如电机控制、传感器驱动等。

一般来说前者较为常用,在捕捉模式下可将eCAP分为事件分频、边沿极性选择与验证、中断控制几大部分(具体可查相关资料)。基本工作流程:

配置好eCAP模块的引脚后,外部事件由引脚输入,首先通过模块的分频部分,分频为2~64(也可选择跳过分频部分)该环节主要针对输入事件信号频率很高的情况。经分频后的信号被送至边沿及序列审核部分,边沿审核即设置为上升沿或下降沿有效,序列审核则是指分配当前对哪个寄存器(CAP1~CAP4)作用。最后就是中断执行控制部分。

二、Simulink中使用eCAP

在上期的ePWM中介绍了如何配置ePWM模块使其输出PWM波,本期通过eCAP模块来测量PWM波的占空比是否正确。

缺乏硬件,根据专业书籍该实验需将ECAP1引脚用杜邦线先后与EPWM1A引脚和EPWM1B连接起来!

1、基本模型设置

Solver设置定步长为0.5s,时钟90MHz,LSPCLK低速时钟外设4分频:

eCAP的ECAP1 pin assignment引脚选择GPIO5:

2、变量初始化

用Data Store Memory模块初始化10个全局变量,用来实现对一方波信号的频率,周期、占空比测量。t1(t2、t3)是第一(二、三)个捕捉事件发生时计数器的值;T1(T2)表示t2-t1(t3-t1),即测试方波的高电平(整个周期)时间对应的计数值;CLK是系统时钟值,Duty是实际方波的占空比,Frequence是方波频率,Period则是周期,Flag表示检测完成时的标志位。

3、ePWM模块配置(产生PWM)

生成两路频率为10kHz,一个是占空比为50%的PWM,另一个是占空比为60%的PWM:

4、设置eCAP模块

使用eCAP1模式,配置为连续控制。第一次事件的触发极性为上升沿,第二次为下降沿,第三次也为上升沿,计数时间的数据类型为无符号的32位整型。中断配置如下图,在第三次事件之后触发中断,停止计数并重置。在eCAP输出接上Simulink的demux模块,并将输出的值赋予t1、t2、t3(Data StoreWrite模块)

5、计算T1、T2并对Flag置位

根据t1、t2、t3计算T1、T2并对Flag置位​​​​​​​,表示一次检测结束。(Flag标志位,作为while子系统的触发信号)

6、配置硬件中断模块

​​​​​​​根据eCAP1的中断向量号,它属于CPU中断第四组的第一个PIE中断。

⑦标志位触发,在While(1)中触发计算模块,对输入方波的频率、周期、占空比(PWM参数)进行计算,如下图对它们的计算,其中CLK=1/90000000。

上图其实是放在Triggered Subsystem(while)里的 Subsystem的

三、仿真整体图

下图为eCAP的Simlink模型整体图:

封装后这个样子:

将模型编译后下载到主控板,然后再CCS中打开工程文件进行操作,具体可查阅相关CCS的操作方法,这里不做演示。

往期精彩

STM32专栏(付费9.9)icon-default.png?t=N4N7http://t.csdnimg.cn/H0u9Q

OpenCV-Python专栏(付费9.9)icon-default.png?t=N4N7http://t.csdnimg.cn/htF7k

AI底层逻辑专栏(付费9.9)icon-default.png?t=N4N7http://t.csdnimg.cn/keH1Q

机器学习专栏(免费)icon-default.png?t=N4N7http://t.csdnimg.cn/FaXzAFreeRTOS专栏(免费)icon-default.png?t=N4N7http://t.csdnimg.cn/SjIqU电机控制专栏(免费)icon-default.png?t=N4N7http://t.csdnimg.cn/FNWM7 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算表达式x*(2^i)的值math.ldexp(x, i)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算表达式x*(2^i)的值 math.ldexp(x, i) [太阳]选择题 关于以下代码输出的结果说法正确的是? import math print("【执行】math.ldexp(3,2)") print(math.ldexp(3,2)) …

2024/3/10总结:数据结构教程:顺序表的创建以及基本的12个操作

首先,按照惯例,欢迎大家边听歌边看本博客!!! 这里是神奇的赛尔号_张杰 (kugou.com) 一.背景:由于是上机实验,直接引用数据结构教程第6版73页的实验题1 修改第6,7,8&am…

CI/CD笔记.Gitlab系列:控制台强制修改root用户密码

CI/CD笔记.Gitlab系列 控制台强制修改root用户密码 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.cs…

SpringBoot中的上传文件接口

SpringBoot中的上传文件 上传文件的操作在有些功能中属于比较常用的环节,这里整理下SpringBoot环境中上传文件的实现方式。 这里实现的是上传文件的后台接口,前端部分可以用测试工具模拟实现,就先不在这里表述了。 Dto层 使用MultipartFile…

【C++】类和对象(六个默认成员函数)

文章目录 类的六个默认成员函数**构造函数****构造函数的目的****构造函数的特性** 析构函数析构函数概念析构函数处理的顺序析构函数清理细节 拷贝构造函数拷贝构造函数典型调用场景 赋值运算符重载运算符重载赋值运算重载前置和后置 重载 const成员函数再提权限的问题: 取地址…

Guiding Large Language Models viaDirectional Stimulus Prompting

1. 通过定向刺激提示指导大语言模型 论文地址:[2302.11520] Guiding Large Language Models via Directional Stimulus Prompting (arxiv.org) 源码地址:GitHub - Leezekun/Directional-Stimulus-Prompting: [NeurIPS 2023] Codebase for the paper: &qu…

目标检测论文模型笔记——RCNN系列

RCNN系列模型(two-stages、基于区域的)主要包括以下几种,按发布时间排序: RCNN(2014年):首次将深度学习应用于目标检测,通过选择性搜索Selective Search提出候选区域,然后使用CNN&am…

章六、集合(1)—— 概念、API、List 接口及实现类、集合迭代

零、 关闭IDEA调试时自动隐藏空元素 一、 集合的概念 存储一个班学员信息,假定一个班容纳20名学员 当我们需要保存一组一样(类型相同)的元素的时候,我们应该使用一个容器来存储,数组就是这样一个容器。 数组有什么缺…

9. 内核、文件系统加载工具

内核、文件系统加载工具 内核、文件系统加载工具是嵌入式开发必备的工具 1. 烧写BootLoader 1.1 通过超级终端方式 烧写 Bootloader 可以使用超级终端的“传送” |“发送文件”命令进入发送文件对话框,使用 Xmodem 协议和 Kermit 协议发送 Bootloader 的各个文件…

《计算机网络》考研:2024/3/9 2.1.7-数据交换方式;2.2-物理层传输介质;2.3-物理层设备

2024/3/9 2.1.7、2.2、2.3 2.1.7 数据交换方式 电路交换存储转发方式 报文交换分组交换: 数据报方式虚电路方式 电路交换 报文交换 分组交换 2.2 物理层传输介质 物理层的主要任务 物理层设备 中继器: 集线器(多口中继器)…

如何获取用户请求的真实ip,并返回访问者的ip地理位置?node,vue

一、获取真实IP 方式1、前端调用免费公共接口获取 前端获取访问者的真实的外网ip,可以通过调用接口https://api.ipify.org/来获取。你也可以直接在网页上访问它来看自己的外网ip。 ipify介绍: ipify是一个免费的公共 API,用于获取设备的公共 IP 地址。…

Claude3横空出世:颠覆GPT-4,Anthropic与亚马逊云科技共启AI新时代

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

exceljs解析和生成excel文件

安装 npm install exceljs解析excel 通过 Workbook 的 readFile 方法可以拿到workbook对象, workbook对象包含的概念有 worksheet(工作表) --> row(行) --> cell(单元格).于是可以通过依次遍历 worksheet, row, cell来拿到单元格的数据直接通过 worksheet.getSheetValue…

从零学习Linux操作系统 第三十五部分 Ansible中的角色

一、理解roles在企业中的定位及写法 #ansible 角色简介# Ansible roles 是为了层次化,结构化的组织Playbookroles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们roles一般用于基于主机构建服务的场景中&…

Springboot 集成kafka 消费者实现ssl方式连接监听消息实现消费

证书准备:springboot集成kafka 消费者实现 如何配置是ssl方式连接的时候需要进行证书的转换。原始的证书是pem, 或者csr方式 和key方式的时候需要转换,因为kafka里面是jks 需要通过openssl进行转换。 证书处理: KeyStore 用于存储客户端的证…

Java多线程实战-实现多线程文件下载,支持断点续传、日志记录等功能

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Java全栈-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 目录 前言 1 基础知识回顾 1.1 线程的创建和启动 1.2 线程池的使用 2.运行环境说…

k8s架构浅析

Node 节点(物理主机或虚拟机),它们共同组成一个分布式集群,并且这些节点中会有一个 Master 节点,由它来统一管理 Node 节点。 Pod ,在 K8S 中,Pod 是最基本的操作单元,它与 docker …

Linux之selinux详解

华子目录 概念作用selinux与传统的权限区别selinux工作原理名词解释主体(subject)目标(object)策略(policy)(多个规则的集合)安全上下文(security context) 文…

三栏布局的实现方法

1. 什么是三栏布局 常见的一种页面布局方式,将页面分为左栏、中栏和右栏左右两侧的盒子宽度固定,中间的盒子会随屏幕自适应一般中间放主体内容,左右两边放辅助内容 2. 如何实现三栏布局 2.1 弹性布局 将最外层盒子设为弹性布局&#xff0…

练习题-14

问题:已知函数 f : R → R f: \mathbb{R} \to \mathbb{R} f:R→R满足 f ( x y ) − f ( x − y ) f ( x ) f ( y ) , ∀ x , y ∈ R . f(xy)-f(x-y)f(x)f(y), \forall x, y \in \mathbb{R}. f(xy)−f(x−y)f(x)f(y),∀x,y∈R. 求 f f f. 提示:如果 f …