DSP捕获输入简单笔记
之前使用stm32的大概原理是:
输入引脚输入一个脉冲,捕获1开始极性捕获,捕获的是从启动捕获功能开始计数,捕获的是当前的计数值;
例如一个脉冲,捕获1捕获上升沿,捕获2捕获下降沿;而两个捕获计数值的差就是高电平的计数值;
计数值,又涉及到时钟,分频等;一个捕获时钟*计数值等于电平时间;
如下是预分频结构图/预定标
这个预定标是什么东西,2分频就是两个极性化成一个极性。第一个极性有效;4分频也是如此

捕获大概框图
GPIO复用,ECAP模块,PIE组中断

可以选择是捕获或者APWM模式
现在是CAP模式

详细的捕获框图
cap引脚进来后,是 分频/预定标,极性选择,捕获计数器和相位寄存器控制(而且有时钟同步),捕获单次/连续控制,PIE组中断;

连续/单次控制
捕获事件的时候,受到单次/连续事件 停止值控制;
这个中的计数器,是可以选择连续用捕获1到4的捕获,4次捕获。并且可以设置是否重置计数值;

中断
ECFLG 标记 (后面是这个图没有的) 和PIE中断标记 和 ECAp一个通用的中断INT 只要有事件这个中断标记必有,在寄存器说明有;
所以中断里面需要清除三个标志;
本次是使用单次模式下的 连续1234捕获。在第四次捕获完成之后,进入中断;

程序
/** cap.c** Created on: 2023年12月16日* Author: My PC*/
#include"cap.h"void cap_init()
{EALLOW;SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK = 1;//gpio时钟SysCtrlRegs.PCLKCR1.bit.ECAP5ENCLK = 1;//cap5时钟EDIS;EALLOW;GpioCtrlRegs.GPBMUX2.bit.GPIO48 = 1;//复用1GpioCtrlRegs.GPBDIR.bit.GPIO48 = 0;//输入GpioCtrlRegs.GPBPUD.bit.GPIO48 = 0;//下拉GpioCtrlRegs.GPBQSEL2.bit.GPIO48 = 0;//与系统时钟同步EDIS;EALLOW;ECap5Regs.ECEINT.all = 0;//禁止全部中断ECap5Regs.ECCLR.all = 0xffff;//清除所有中断标记ECap5Regs.ECCTL1.bit.CAPLDEN = 0;//禁止向cap捕获装载值ECap5Regs.ECCTL2.bit.TSCTRSTOP = 0;//禁止计数ECap5Regs.ECCTL1.bit.CAP1POL = 1;//下降沿触发ECap5Regs.ECCTL1.bit.CAP2POL = 0;//上升边沿触发ECap5Regs.ECCTL1.bit.CAP3POL = 1;ECap5Regs.ECCTL1.bit.CAP4POL = 0;ECap5Regs.ECCTL1.bit.CTRRST1 = 0;//捕获1后,计数值不复位,首次启动的时候,避免捕获1过大,选择此次复位,赋值为1合适点,反正第一次捕获值没什么意义;ECap5Regs.ECCTL1.bit.CTRRST2 = 0;ECap5Regs.ECCTL1.bit.CTRRST3 = 0;ECap5Regs.ECCTL1.bit.CTRRST4 = 1;//捕获4后,计数值复位ECap5Regs.ECCTL2.bit.CAP_APWM = 0;//运行再cap模式下ECap5Regs.ECCTL2.bit.CONT_ONESHT = 1;//捕获处于单次模式ECap5Regs.ECCTL2.bit.STOP_WRAP = 3;//单次模式下。捕获4完成之后停止 ECap5Regs.ECCTL2.bit.SYNCI_EN = 1;//使能内部同步 使得相位装载到计数器ECap5Regs.ECCTL2.bit.SYNCO_SEL = 0;// 选择内部同步信号为外部同步信号ECap5Regs.ECCTL2.bit.REARM = 1;//单次序列强制 mod计数器复位为0 计数器使能 使能捕获寄存器EDIS;EALLOW;ECap5Regs.ECCTL2.bit.TSCTRSTOP = 1;//计数ECap5Regs.ECCTL1.bit.CAPLDEN = 1;//使能向cap捕获装载值ECap5Regs.ECEINT.bit.CEVT4 = 1;//使能捕获4中断EDIS;EALLOW;PieCtrlRegs.PIEIER4.bit.INTx5 = 1;//PIE4的第5个中断使能;PieVectTable.ECAP5_INT = &ECAP5_INT_REQ;//中断的函数 存中断函数地址的地址EDIS;IER |= M_INT4;//CAP5中断在 PIE的第四组EINT;ERTM;
}Uint32 CAP_num_1=0, CAP_num_2=0, CAP_num_3=0, CAP_num_4=0;interrupt void ECAP5_INT_REQ()
{CAP_num_1 = ECap5Regs.CAP1;CAP_num_2 = ECap5Regs.CAP2;CAP_num_3 = ECap5Regs.CAP3;CAP_num_4 = ECap5Regs.CAP4;ECap5Regs.ECCLR.bit.CEVT4 = 1;ECap5Regs.ECCLR.bit.INT = 1;//因为每个中断,这个INT标记都会设置1.所以要同时清除ECap5Regs.ECCTL2.bit.REARM = 1;//下一次还是强制为单次序列PieCtrlRegs.PIEACK.bit.ACK4=1;//PIE组4 的应答清除
}
48脚接一个PWM,可以仿真看到4个捕获值
主程序
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
#include "led1.h"
#include "key.h"
#include "epwm.h"
#include "exti.h"
#include "time0.h"
#include "adc.h"
#include "cap.h"
int main()
{float temp = 0;Uint16 adc_num,i=0;InitSysCtrl();InitPieCtrl();IER = 0x0000;IFR = 0x0000;InitPieVectTable();led_init();time0_init(2000);epwm_init(1000);EPWM6_set_compara(1000, 500);//150M,不分频的PWMcap_init();while (1){DELAY_US(200000);EPWM6_set_compara(1000, i+=100);if(i>1000){i=0;}}}
相关文章:
DSP捕获输入简单笔记
之前使用stm32的大概原理是: 输入引脚输入一个脉冲,捕获1开始极性捕获,捕获的是从启动捕获功能开始计数,捕获的是当前的计数值; 例如一个脉冲,捕获1捕获上升沿,捕获2捕获下降沿;而两…...
【Java基础】HashMap 原理
文章目录 1、HashMap 设置值的原理2、HashMap 获取值原理3、HashMap Hash优化4、HashMap 寻址优化5、HashMap 是如何解决Hash冲突的?5.1 get数据的时候,如果定位到指定位置的元素是一个链表,怎么办呢?5.2 红黑树 6、数组扩容6.1 数…...
vue3的大致使用
<template><div class"login_wrap"><div class"form_wrap"> <!-- 账号输入--> <el-form ref"formRef" :model"user" class"demo-dynamic" > <!--prop要跟属性名称对应-->…...
什么是计算机网络?计算机网络基础知识
1.网络的组成部分:由主机,路由器,交换机等组成 2.网络结构:网络的网络 3.信息交换方式:电路交换和分组交换 4.网络分层:分清职责,物理层,链路层,网络层,运…...
【机器学习 | 假设检验系列】假设检验系列—卡方检验(详细案例,数学公式原理推导),最常被忽视得假设检验确定不来看看?
🤵♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…...
RealBasicVSR高清处理视频
autodl做了镜像:高清RealBasicVSR 首先在剪映将视频剪好导出,最多是720像素的,不然后面超分的时候会爆显存。剪映视频也最好是双数帧数结尾的,不然超分的时候单数图片会报错->RuntimeError: non-empty 3D or 4D input tensor …...
晚期食管癌肿瘤治疗线程分类
文章目录 1、肿瘤治疗的线数1.1 基础概念1.2 线程定义1.3 如何计算治疗线数 2 食管癌治疗指南2.1 食管癌诊疗指南2.1 CSCO 本文前半部分主要来源于参考文件1,其余部分来源于官方指南。无原创内容,全部为摘要。 1、肿瘤治疗的线数 1.1 基础概念 抗肿瘤药…...
高效营销系统集成:百度营销的API无代码解决方案,提升电商与广告效率
百度营销API连接:构建无代码开发的高效集成体系 在数字营销的高速发展时代,企业追求的是快速响应市场的能力以及提高用户运营的效率。百度营销API连接正是为此而生,它通过无代码开发的方式,实现了电商平台、营销系统和CRM的一站式…...
网络基础(十一):VRRP原理与配置
目录 前言: 1、VRRP的基本概述 2、VRRP的基本原理 2.1VRRP的基本结构 2.2设备类型 2.3状态机 2.4VRRP路由器的抢占功能 2.5VRRP路由器的优先级 2.6VRRP工作原理 2.7主备路由器的工作内容 3、VRRP的基本配置 3.1配置主路由器和备用路由器 3.2配置PC1与P…...
设计模式——状态模式
引言 状态模式是一种行为设计模式, 让你能在一个对象的内部状态变化时改变其行为, 使其看上去就像改变了自身所属的类一样。 问题 状态模式与有限状态机 的概念紧密相关。 其主要思想是程序在任意时刻仅可处于几种有限的状态中。 在任何一个特定状态中…...
2020-XNUCA babyv8
做的第一道存在指针压缩机制的V8题,通过小越界写修改length构造大越界读写,然后利用arraybuffer的backing store构造任意地址写,利用wasm rwx段地址的特点以及堆空间的分布,搜索到rwx段的具体地址,然后利用任意地址写将…...
货物数据处理pandas版
1求和 from openpyxl import load_workbook import pandas as pddef print_hi(name):# Use a breakpoint in the code line below to debug your script.print(fHi, {name}) # Press CtrlF8 to toggle the breakpoint.# Press the green button in the gutter to run the scr…...
MC-30A (32.768 kHz用于汽车应用的晶体单元)
MC-30A 32.768 kHz用于汽车应用的晶体,车规晶振中的热销型号之一。该款石英晶体谐振器,可以在-40 to 85 C的温度内稳定工作,能满足起动振动的要求。同时满足AEC-Q200无源元件质量标准认证,满足汽车仪表系统的所有要求。 频率范围…...
TrustZone之其他设备及可信基础系统架构
一、其他设备 最后,我们将查看系统中的其他设备,如下图所示: 我们的示例TrustZone启用的系统包括一些尚未涵盖的设备,但我们需要这些设备来构建一个实际的系统。 • 一次性可编程存储器(OTP)或保险丝 这些是一旦写入就无法更改的存储器。与每个芯片上都包含相同…...
自由编程学习资源:free-programming-books
最近,我发现了一个在GitHub上备受欢迎的项目,它为程序员和编程爱好者提供了丰富、免费且高质量的学习资料,这就是"free-programming-books"。目前,这个项目在GitHub上已经有305k的star,显示出它在开发者社区…...
饥荒Mod 开发(十三):木牌传送
饥荒Mod 开发(十二):一键制作 饥荒Mod 开发(十四):制作屏幕弹窗 一键传送源码 饥荒的地图很大,跑地图太耗费时间和饥饿值,如果大部分时间都在跑图真的是很无聊,所以需要有一个能够传送的功能,不仅可以快速…...
Qt/C++音视频开发60-坐标拾取/按下鼠标获取矩形区域/转换到视频源真实坐标
一、前言 通过在通道画面上拾取鼠标按下的坐标,然后鼠标移动,直到松开,根据松开的坐标和按下的坐标,绘制一个矩形区域,作为热点或者需要电子放大的区域,拿到这个坐标区域,用途非常多࿰…...
Java实现订单超时未支付自动取消的8种方法总结
Java实现订单超时未支付自动取消的8种方法总结 定时轮询 数据库定时轮询方式,实现思路比较简单。启动一个定时任务,每隔一定时间扫描订单表,查询到超时订单就取消。优点:实现简单。缺点:轮询时间间隔不好确定&#x…...
android动态权限申请并展示权限使用说明
# ExplainPermissions 动态权限申请并展示权限使用说明 随着工信部对APP的一系列整治,现在用户对于APP在使用时动态申请的权限是比较敏感的,为了更好的用户体验,我们可以在权限动态申请的时候一并向用户展示所需要申请权限的使用说明。这样用…...
论文阅读《DPS-Net: Deep Polarimetric Stereo Depth Estimation》
论文地址:https://openaccess.thecvf.com/content/ICCV2023/html/Tian_DPS-Net_Deep_Polarimetric_Stereo_Depth_Estimation_ICCV_2023_paper.html 概述 立体匹配模型难以处理无纹理场景的匹配,现有的方法通常假设物体表面是光滑的,或者光照是…...
从零构建现代Web音乐应用:技术选型、音频引擎与全栈实践
1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目,叫chemistwang/music-app。光看名字,你可能会觉得这又是一个“音乐播放器”,市面上类似的轮子已经多如牛毛了。但作为一个在前后端领域摸爬滚打多年的开发者,我习惯性…...
为什么需要做GEO优化?AI新时代的商业规则探索
2026年,一个加速蔓延的商业现象正在发生:消费者不再打开搜索引擎、翻阅列表、逐条点击蓝色链接——他们直接打开DeepSeek、豆包、Kimi等AI助手,用一句完整的话发起提问:“这个价位哪个品牌最值得买?”“敏感肌用什么护…...
保姆级教程:用WorkVisual 6.0从零搭建KUKA机器人控制系统(含项目分析避坑)
保姆级教程:用WorkVisual 6.0从零搭建KUKA机器人控制系统(含项目分析避坑) 刚接触KUKA机器人的工程师,面对复杂的控制系统搭建往往无从下手。WorkVisual作为KUKA官方开发环境,其6.0版本在工业机器人领域已成为主流配置…...
交互式CLI工具开发指南:从原理到实战构建Node.js命令行应用
1. 项目概述:一个能“对话”的命令行工具如果你经常和命令行打交道,尤其是需要处理一些重复性、多步骤的配置或部署任务,你肯定有过这样的体验:打开一个脚本,面对一堆需要手动输入的参数,或者在不同的命令之…...
别再让树莓派吃灰了!用腾讯云轻量服务器+frp,5分钟搞定远程SSH和VNC访问
树莓派远程访问实战:5分钟解锁SSH与VNC的轻量级方案 每次打开抽屉看到积灰的树莓派,总有种辜负了这片单板计算机潜力的愧疚感。其实只需一台基础配置的云服务器,就能让闲置设备变身24小时在线的开发工作站。本文将用最简步骤实现:…...
建筑消防防火分区专用钢质卷帘门
在现代建筑消防设计体系中,防火分区的科学划分与有效分隔,是控制火灾蔓延、减少人员伤亡与财产损失的核心环节。建筑消防防火分区专用钢质卷帘门,作为固定式防火分隔的重要配套设施,凭借稳定的耐火性能、可靠的启闭功能与强适配性…...
PyCharm专业版SSH远程开发环境一站式部署指南
1. PyCharm专业版安装与激活 作为数据科学和算法开发的主力工具,PyCharm专业版提供了完整的远程开发支持。首先需要从JetBrains官网下载对应操作系统的安装包。这里有个小技巧:如果你使用的是Windows系统但需要连接Linux服务器开发,建议选择W…...
资本意志下的工程师生存指南:从高通裁员看技术与商业的博弈
1. 从一封信到四千七百张解雇单:当资本意志敲响工程师的门在科技行业,尤其是半导体这个以创新为生命线的领域,我们常常沉浸于晶体管密度、架构革新和制程竞赛的技术叙事中。然而,2015年夏天,一封来自华尔街的公开信&am…...
Linux 系统运行速度慢有哪些排查方法?
Linux 系统变慢通常是资源供需失衡导致的,建议按 CPU、内存、磁盘 I/O、网络的顺序依次排查,优先使用 top、free、iostat 等基础命令定位瓶颈。 先说结论:系统卡顿本质是核心资源被过度占用,需先定位具体瓶颈资源,再针…...
一句话就能“劫持”你的AI?DZS 分层式自适应提示词注入攻击的防御机制框架 (HAA)来了!
本文所展示的提示词技术已在Research square 发表论文预印本。DOI:https://doi.org/10.21203/rs.3.rs-9653510/v1 作者“抖知书(douzhishu),涉及到相关测试数据是本人自行测试的,并未通过多专家评审,所以仅…...
