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

news2024/11/19 6:37:28

引入

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 

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

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

相关文章

MySQL 的基础操作

数据库的基础操作 1. 库操作2. 表的操作3. 数据类型 数据库是现代应用程序中至关重要的组成部分,通过数据库管理系统(DBMS)存储和管理数据。 1. 库操作 创建数据库 创建数据库是开始使用数据库的第一步。下面是一些常见的创建数据库的示例&a…

为什么在镀膜时要测薄膜折射率?

在芯片制造中,镀膜工序(PVD,CVD)是必不可少的关键环节,薄膜的质量直接影响了芯片的性能。对这些薄膜的精细控制又离不开对其折射率的深入理解和精确测量。今天将对芯片制造中薄膜折射率的概念、测量方法,以及它在整个制…

Unmanaged PowerShell

简介 在渗透测试当中经常会使用到PowerShell来执行脚本, 但是直接使用PowerShell.exe是一个非常敏感的行为, EDR等产品对PowerShell.exe进程的创建监控的很密切, 并且随着PowerShell的渗透测试工具的普及, 越来越多的EDR会利用微软提供的AMSI接口对PS脚本进行扫描, 但是对于低…

力扣最热100题——56.合并区间

吾日三省吾身 还记得梦想吗 正在努力实现它吗 可以坚持下去吗 目录 吾日三省吾身 力扣题号:56. 合并区间 - 力扣(LeetCode) 题目描述 Java解法一:排序然后原地操作 具体代码如下 Java解法二:new一个list&#xf…

Pytorch学习 day04(Totensor、Normalize、Resize、Compose)

Totensor 把一个PIL格式的图片,或者ndarray格式的图片转换为tensor格式使用方法,如下: from PIL import Image from torchvision import transforms from torch.utils.tensorboard import SummaryWriterimg Image.open("images/00130…

算法——滑动窗口之找到字符串中所有的字母异位词,串联所有单词的子串

6.找到字符串中所有的字母异位词 题目:. - 力扣(LeetCode) 6.1如何快速判断两个字符串是否是异位词 假设现在有s1 aabca,s2 abaca,那么这两个就是异位词,容易想到的判断方法就是将两个字符串按照字典序排序,再依次比较,但是时间复杂度很高;我们看看…

python并发编程:IO模型比较分析

blocking和non-blocking的区别在哪,synchronous IO和asynchronous IO的区别在哪。 blocking vs non-blocking:调用blocking IO会一直block住对应的进程直到操作完成,而non-blocking IO在kernel还准备数据的情况下会立刻返回。 synchronous …

【R语言爬虫实战】抓取省市级城市常务会议内容

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…

mysql如何开启手动提交事务

在mysql中,有一个变量autocommit,表示自动提交,默认为1,表示开启自动提交。通过以下命令查询 select autocommit;当autocommit为1时,任何一条sql语句都是一个事务,执行完由mysql自动提交。如果想自己决定什…

OS-Copilot:实现具有自我完善能力的通用计算机智能体

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ AI 缩小了人类间的知识和技术差距 论文标题:OS-Copilot: Towards Generalist Computer Agents with Self-Improvement 论文链接:https://arxiv.org/abs/2402.07456 项目主页&a…

32单片机基础:输入捕获测频率

接线图如下图所示: 我们复制之前写过的代码6-3 PWM驱动LED呼吸灯 在PWM模块中,执行的逻辑是,初始化TIM2的通道1,产生一个PWM波形,输出引脚是PA0,通过SetCompare1的函数,可以调节CCR1寄存器的值…

Memcached的重要性,如果防范Memcached DDOS攻击

一、Memcached简要 Memcached是一个开源的、高性能的、分布式内存对象缓存系统。它的主要目的是通过降低对数据库的访问来加速动态Web应用程序。 Memcached的用途非常广泛,它主要用于动态Web应用以减轻数据库负载。通过在内存中缓存数据和对象,Memcach…

pytorch_神经网络构建6

文章目录 强化学习概念实现qLearning基于这个思路,那么解决这个问题的代码如下 强化学习概念 强化学习有一个非常直观的表现,就是从出发点到目标之间存在着一个连续的状态转换,比如说从状态一到状态456,而每一个状态都有多种的行为&#xff…

2024/3/10 P1601高精加法

起因是本人在一个为数不多空闲的下午刷题ing&#xff0c;看到了AB problem。“就这&#xff1f;”从而忽略了高精这俩字&#xff0c;然后喜提40分。 于是开始研究何为高精。 #include<iostream> #include<string.h> #include<cstring>using namespace std; c…

数据结构与算法:链式二叉树

上一篇文章我们结束了二叉树的顺序存储&#xff0c;本届内容我们来到二叉树的链式存储&#xff01; 链式二叉树 1.链式二叉树的遍历1.1二叉树的前序&#xff0c;中序&#xff0c;后序遍历1.2 三种遍历方法代码实现 2. 获取相关个数2.1获取节点个数2.2获取叶节点个数2.3 获取树的…

代码随想录算法训练营第day14|二叉树理论基础、二叉树递归遍历、二叉树迭代遍历

目录 a.二叉树理论基础 b.二叉树递归遍历 c.二叉树迭代遍历 迭代法前序遍历 迭代法中序遍历 # 迭代法后序遍历 a.二叉树理论基础 在我们解题过程中二叉树有两种主要的形式&#xff1a;满二叉树和完全二叉树 满二叉树&#xff1a;如果一棵二叉树只有度为0的结点和度为2的…

Mysql 死锁案例1-记录锁读写冲突

死锁复现 CREATE TABLE t (id int(11) NOT NULL,c int(11) DEFAULT NULL,d int(11) DEFAULT NULL,PRIMARY KEY (id),KEY c (c) ) ENGINEInnoDB DEFAULT CHARSETutf8;/*Data for the table t */insert into t(id,c,d) values (0,0,0),(5,5,5),(10,10,10) 事务1事务2T1 START…

Java学习笔记------拼图游戏

图形化界面GUI GUI&#xff1a;Graphical User Interface&#xff08;图像用户接口&#xff09;&#xff0c;指采用图形化的方式显示操作界面 两套体系&#xff1a;AWT包中和Swing包中 组件 JFrame&#xff1a;最外层的窗体 JMenuBar&#xff1a;最上层菜单 JLaber&#…

【软考】图的遍历

目录 1. 概念2. 深度优先搜索2.1 说明2.2 步骤 3. 深度优先搜索例子3.1 无向图3.2 代码示例3.3 结果示例3.4 过程 4. 广度优先搜索4.1 说明4.2 步骤 5. 广度优先搜索例子5.1 无向图5.2 代码示例5.3 结果示例5.4 过程5.5 例题5.5.1 题目1 1. 概念 1.图的遍历是指从某个顶点出发…

递增三元组 刷题笔记

题意为 若存在 a中的数小于b中的数&#xff0c;b中的数小于c中的数 则该数算一种方案 思路 暴力模拟优化 两层循环遍历即可 从b到c的过程我们发现 第三层并不需要循环 直接加上 大于b的数量即可 那么第一层和第三层是对称的 我们有没有可能再去掉一层循环 只做一次遍历 …