DSP TMS320F280049C之捕获eCAP(1)
F280049C的捕获模块功能强大,既可以实现捕获功能的输入,又可以实现APWM的输出。作为捕获功能时,可以实现对信号脉宽、周期、频率、占空比的测量。还可以用来对外界边沿信号的捕获。
特点:
- 任何一个GPIO引脚都可以配置作为捕获的输入引脚,可设置为上升沿、下降沿捕获。使用起来很方便。
- 每一个捕获模块都拥有一个32位的时间戳(time stamps)计数器,计数频率为CPU主频。
- 每一个捕获模块都包含四个捕获事件寄存器,捕获到信号时会装载此时的计数值到32位的CAPx寄存器中。
- 捕获模式包含的中断源有:CEVT1-CEVT4中断、计数器溢出中断。
示例图如下所示:
(1)引脚配置
我配置的是GPIO5引脚作为捕获的输入,使用了X-BAR的INPUT1输入通道。
相关的配置如下所示:
void InitECapGpio(void)
{EALLOW;InputXbarRegs.INPUT1SELECT = 5; //使用INPUT1--GPIO5引脚GpioCtrlRegs.GPADIR.bit.GPIO5 = 0; //配置为输入GpioCtrlRegs.GPAPUD.bit.GPIO5 = 0; //配置为上拉GpioCtrlRegs.GPAQSEL1.bit.GPIO5 = 3; //GPIO配置为非同步模式EDIS;
}
- 配置INPUT1对应到GPIO5引脚
- 配置GPIO5引脚作为上拉输入模式
- 配置eCAP的ECCTL0[INPUTSEL]寄存器
(2)eCAP初始化配置
程序源代码如下所示:
void InitECap(void)
{EALLOW;ECap1Regs.ECCTL0.bit.INPUTSEL = 0; //ECap1捕获引脚对应到INTPUT1ECap1Regs.ECCTL1.bit.CAP1POL = EC_RISING; //上升沿捕获ECap1Regs.ECCTL1.bit.CAP2POL = EC_FALLING; //下降沿捕获ECap1Regs.ECCTL1.bit.CAP3POL = EC_RISING;ECap1Regs.ECCTL1.bit.CAP4POL = EC_RISING;ECap1Regs.ECCTL1.bit.CTRRST1 = EC_ABS_MODE; //捕获到事件不清空计数器ECap1Regs.ECCTL1.bit.CTRRST2 = EC_ABS_MODE;ECap1Regs.ECCTL1.bit.CAPLDEN = EC_ENABLE; //使能装载ECap1Regs.ECCTL1.bit.PRESCALE = EC_DIV1; //输入信号不分频ECap1Regs.ECCTL2.bit.CAP_APWM = EC_CAP_MODE; //配置为捕获模式ECap1Regs.ECCTL2.bit.CONT_ONESHT = EC_CONTINUOUS; //连续计数模式ECap1Regs.ECCTL2.bit.SYNCI_EN = EC_DISABLE;ECap1Regs.ECCTL2.bit.SYNCO_SEL = EC_SYNCO_DIS;ECap1Regs.ECCTL2.bit.TSCTRSTOP = EC_RUN; //时间戳计数器自由运行ECap1Regs.ECEINT.bit.CEVT3 = 1; //事件3中断捕获使能EDIS;
}
eCAP配置示意图如下所示:
配置步骤:
- 配置捕获信号极性,分别配置了事件1(上升沿捕获)、事件2(下升沿捕获)、事件3(上升沿捕获)
- 捕获到事件后计数器不清零。不使用Delta模式(捕获到事件后计数器清零)
- 捕获信号后计数器装载使能(捕获到事件后从计数器装载计数值到捕获寄存器)
- 输入信号分频设置
- 配置为捕获模式
- 配置为连续计数模式(捕获到事件后事件计数器加一,0->1->2->3->0)
- 只使用一个捕获模块,不需要使用同步功能(使用多个捕获模块是按需求使用捕获模块。同步功能主要是用来同步计数器)
- 配置计数器为连续计数模式(计数器从0x00000000->0xFFFFFFFF),计满最大值后会产生计数溢出中断(if enable)
(3)中断配置
本例程中配置的是事件3触发中断,相应的配置程序如下所示:
中断入口配置:
EALLOW; // This is needed to write to EALLOW protected registerPieVectTable.ECAP1_INT = &ECap1ISR;EDIS;PieCtrlRegs.PIEIER4.bit.INTx1 = 1;IER |= M_INT4; // Enable CPU Interrupt 1PieCtrlRegs.PIEACK.bit.ACK4 = 1;
中断函数配置:
__interrupt void ECap1ISR(void)
{ECap1Regs.ECCLR.bit.INT = 1;Tst1 = ECap1Regs.CAP1; //读取捕获时刻的计数值Tst2 = ECap1Regs.CAP2;Tst3 = ECap1Regs.CAP3;if(Tst2>Tst1&&Tst3>Tst2){Proid = Tst3 - Tst1;duty = (Tst2 - Tst1)*1.0/Proid;}PieCtrlRegs.PIEACK.bit.ACK4 = 1;
}
中断函数中主要是读取CAP寄存器中的值,用于计算信号的脉宽频率;还需要清除中断标志位,以及全局中断应答。
注:F280049C实现捕获功能的完整CCS程序我已经上传到了CSDN上,该程序主要是实现对方波信号脉宽、频率的测量。需要的可自行下载哈,程序中有不懂得地方都可以给我留言。下载链接如下:
https://download.csdn.net/download/fanxianyan1993/11978084
提问方式:有啥不懂的可以随时向我提问哈,扫描下方二维码我会在第一时间给大家回复的哈,谢谢。
DSP TMS320F280049C之捕获eCAP(1)相关推荐
- DSP TMS320F280049C——互补波形(一)
刚开始接触和学习DSP,和大家分享一下,一起交流学习!!! 以下配置可以实现:EPWM1A与EPWM1B的互补波形,周期为100kHz,死去时间300ns,占空比50%. 首先,在实现波形配置之前需要 ...
- DSP TMS320F280049C 新征程
新搞的板子到了 ,LAUNCHXL-F280049C 后面基于这个板子学习分享 另外本人手中有少量TMS320F280049CPZS现货 下面是TB链接 https://item.taobao.co ...
- TMS320F280049C 学习笔记1 概述及GPIO
索引 前言 心情记录 动机 概述 硬件平台 软件资源 参考文献 参考设计 关于GPIO 前言 心情记录 真的是好久没有写博客了. 回顾了一下博客的文章列表,想着是不是删掉一些没营养的文章,后来想想算了 ...
- dsp软件单元测试,TMS320F2812DSP捕获单元测速 图文精.docx
基于TMS320F2812 DSP捕获单兀测速 相关专题: 电子应用 时间:2009-10-13 10:24 来源: icbuy 亿芯网 1引言 应用于高层建筑.银行.机场和油田等场合的柴油发电机组, ...
- 初学DSP(1)-TMS320F280049C入门
目录 前提 知识点 深入了解DSP和ARM的关系(相同与区别) DSP CMD学习笔记(连接物理存储和逻辑存储) CMD文件详解与DSP存储空间 DSP 程序远程升级 / Bootloader设计指南 ...
- 初学DSP(2)-TMS320F280049C代码探究
英文缩写 C28X CPU+FPU(floating-point processor) Trigonometric Math Unit (TMU) Viterbi, Complex Math and ...
- 国产DSP,32位双核CPU,pin2pin替代TMS320F280049C,高频400MHz
QX320F280049C,特性: 1.32位双核CPU,高频400MHz 2.IEEE754单精度浮点单元(FPU) 3.三角法数学单元(TMU) 4.Viterbi/复杂数学单元(VCU-I) 5 ...
- 把变量赋值给寄存器_用C语言对DSP的寄存器进行操作?
欢迎FPGA工程师加入官方微信技术群 在嵌入式软件的开发过程中,我们常用的语言主要是:汇编语言和C语言.相比较于汇编语言,C语言对我们来说,更贴近我们的一些语言习惯.在DSP的开发过程中,我们主要还是 ...
- 三相锁相 c 语言 程序,轻松玩转DSP——基于TMS320F2833x(Word+PDF+ePub+PPT)
作者:马骏杰(作者),尹艳浩(作者),王旭东(作者)&0更多 出版:机械工业出版社; 第1版 (2018年12月5日) 服务:人工校对0错代录+录完后精校排版 此为收费服务:会收取文档代录之人 ...
- 【ARM-Linux开发】【DSP开发】AM5728介绍
AM5728 Sitara Processors 1. 介绍 1.1 AM572x概述 AM572x是高性能,Sitara器件.以28nm技术集成: 结构设计主要考虑嵌入式应用,包括工业通讯,人 ...
最新文章
- 基于CORS的geoserver同源访问策略
- 【重点】Java大厂面试10个知识点汇总
- AD属性修改 office 365 delivery management 设定
- arm9重启ssh服务_部署ssh使用rsa登录配置
- [Java面经] 关于面试的二三事.
- ASP.NET部署与安装_MSI制作图文教程.
- asp.net多语言设置方法
- 0.python class
- GB28181 PTZCmd控制指令笔记
- 微信小程序表单必填项设置
- 《The Alchemist》阅读笔记
- raid卡直通模式会走缓存吗_磁盘阵列 RAID 技术如何保护数据
- 线性规划单纯形法python实现与代码详细解读
- 搜索引擎常用搜索技巧
- Pandas 基础知识
- 360软件管家下载|360软件管家电脑版下载
- 过滤器实现单一用户登录
- console.log() 与 console.dir() 的区别:
- 计算机工作原理(简述)
- 阿里云云计算ACP学习(四)---内容与网络分发CDN
热门文章
- 软件需求包括3个不同的层次 业务需求 用户需求和功能需求
- 全球消费精品消博会亮相!科蒂、资生堂、欧莱雅、奔富、保乐力加、红牛、雀巢、拜耳、澳佳宝都来了 | 美通社头条...
- 挣脱注意力经济:为什么应该练习数字极简主义?
- 调查:人工智能技术的应用现状
- OPENCV使用深度学习进行年龄性别识别的C++代码
- Vue-Waterfall-Easy插件详细使用教程
- 计算机主机电源灯不亮,电脑主机开不了机、电源灯不亮解决方法与技巧
- 金融中需要的计算机知识,金融笔试中的综合知识一般会考什么?
- 求不规则图形外接圆的算法 (附:三角形外接圆计算公式)
- 排查tomcat项目假死原因的简单方法