F28335共有6组eCAP模块,每个eCAP不但具有捕获功能,而且还可用作PWM输出功能。F28335捕获模块的主要特征如下:
  1. 150MHz系统时钟的情况下,32位时基的时间分辨率为6.67ns;
  2. 4组32位的时间标志寄存器;
  3. 4级捕获事件序列,可以灵活配置捕获事件边沿极性;
  4. 四级触发事件均可以产生中断;
  5. 软件配置一次捕获可以最多得到4个捕获时间;
  6. 可连续循环4级捕获;
  7. 绝对时间捕获;
  8. 不同模式的时间捕获;
  9. 所有捕获都发生在一个输入引脚上;
  10. 如果eCAP模块不作捕获使用,可以配置成一个单通道输出的PWM模式。
eCAP模块中一个捕获通道完成一次捕获任务,需要以下关键资源:
  1、专用捕获输入引脚;
  2、32位时基(计数器);
  3、4*32位时间标签捕获寄存器;
  4、4级序列器,与外部eCAP引脚的上升/下降沿同步;
  5、4个事件可独立配置边沿极性;
  6、输入捕获信号预定标(2-62);
  7、一个2位的比较寄存器,一次触发后可以捕获4个时间标签事件;
  8、采用4级深度的循环缓冲器以进行连续捕获;
  9、4个捕获事件中任意一个都可以产生中断。

DSP2833x_SysCtrl.h

// Peripheral clock control register 1 bit definitions:
struct PCLKCR1_BITS { // bits description
Uint16 EPWM1ENCLK:; // 0 Enable SYSCLKOUT to EPWM1
Uint16 EPWM2ENCLK:; // 1 Enable SYSCLKOUT to EPWM2
Uint16 EPWM3ENCLK:; // 2 Enable SYSCLKOUT to EPWM3
Uint16 EPWM4ENCLK:; // 3 Enable SYSCLKOUT to EPWM4
Uint16 EPWM5ENCLK:; // 4 Enable SYSCLKOUT to EPWM5
Uint16 EPWM6ENCLK:; // 5 Enable SYSCLKOUT to EPWM6
Uint16 rsvd1:; // 7:6 reserved
Uint16 ECAP1ENCLK:; // 8 Enable SYSCLKOUT to ECAP1 系统时钟150MHz
Uint16 ECAP2ENCLK:; // 9 Enable SYSCLKOUT to ECAP2
Uint16 ECAP3ENCLK:; // 10 Enable SYSCLKOUT to ECAP3
Uint16 ECAP4ENCLK:; // 11 Enable SYSCLKOUT to ECAP4
Uint16 ECAP5ENCLK:; // 12 Enable SYSCLKOUT to ECAP5
Uint16 ECAP6ENCLK:; // 13 Enable SYSCLKOUT to ECAP6
Uint16 EQEP1ENCLK:; // 14 Enable SYSCLKOUT to EQEP1
Uint16 EQEP2ENCLK:; // 15 Enable SYSCLKOUT to EQEP2
};

  由上面代码可知eCAP模块的时钟为系统时钟,时基是6.67ns

#define EC_RISING     0           //上升沿电平值
#define EC_FALLING 1 //下降沿电平值
#define EC_ABS_MODE 0 //在CAPx事件中不重置计数器
#define EC_ENABLE 1 //使能在捕获事件中加载CAP1-4寄存器的时间
#define EC_DIV1 00000 //输入信号分频选择 不分频
#define EC_CAP_MODE 0 //ECAP工作于捕获工作模式
#define EC_CONTINUOUS 0 //0为连续模式 1为单次模式
#define EC_SYNCO_DIS 2 //同步输出选择: 10、11屏蔽同步信号输出
#define EC_DISABLE 0 //屏蔽同步输入操作
#define EC_RUN 1 //1计数器启动 0计数器停止

  以上代码为宏定义

void InitECAP()
{ SysCtrlRegs.PCLKCR1.bit.ECAP1ENCLK = ;//使能eCAP1
SysCtrlRegs.PCLKCR1.bit.ECAP2ENCLK = ;//使能eCAP2
// SysCtrlRegs.PCLKCR1.bit.ECAP3ENCLK = 1;//使能eCAP3
// SysCtrlRegs.PCLKCR1.bit.ECAP4ENCLK = 1;//使能eCAP4
// SysCtrlRegs.PCLKCR1.bit.ECAP5ENCLK = 1;//使能eCAP5
// SysCtrlRegs.PCLKCR1.bit.ECAP6ENCLK = 1;//使能eCAP6
IER |= M_INT4;//
ECap1Regs.ECEINT.all = 0x0000; // Disable all capture interrupts
ECap1Regs.ECCLR.all = 0xFFFF; // Clear all CAP interrupt flags
ECap1Regs.ECCTL1.bit.CAPLDEN = ; // Disable CAP1-CAP4 register loads
ECap1Regs.ECCTL2.bit.TSCTRSTOP = ; // Make sure the counter is stopped
SetCap1();
SetCap2(); } void SetCap1()
{
ECap1Regs.ECCTL1.bit.CAP1POL = EC_RISING; //一级事件捕捉上升沿
ECap1Regs.ECCTL1.bit.CAP2POL = EC_RISING; //二级事件捕捉上升沿
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.CTRRST3 = EC_ABS_MODE; //三级事件捕捉后不清零计数器
ECap1Regs.ECCTL1.bit.CTRRST4 = EC_ABS_MODE; //四级事件捕捉后不清零计数器
ECap1Regs.ECCTL1.bit.CAPLDEN = EC_ENABLE; //使能事件捕捉时捕捉寄存器装载计数器值
ECap1Regs.ECCTL1.bit.PRESCALE = EC_DIV1; //对外部信号不分频 ECap1Regs.ECCTL2.bit.CAP_APWM = EC_CAP_MODE; //捕捉模式ECAP
ECap1Regs.ECCTL2.bit.CONT_ONESHT = EC_CONTINUOUS; //连续模式
ECap1Regs.ECCTL2.bit.SYNCO_SEL = EC_SYNCO_DIS; //屏蔽同步信号输出
ECap1Regs.ECCTL2.bit.SYNCI_EN = EC_DISABLE; //屏蔽同步输入操作
ECap1Regs.ECEINT.all=0x0000; //关闭所有 CAP 中断
ECap1Regs.ECCLR.all=0xFFFF; //清除所有中断标志位
ECap1Regs.ECCTL2.bit.TSCTRSTOP = EC_RUN; //启动 CAP 计数器
ECap1Regs.ECEINT.bit.CEVT4=; //使能四级事件中断,即当发生第四次捕捉时进入中断
}

  在四级事件后进中断

interrupt void ECAP1_INT_ISR(void)    // ECAP-1
{
// Insert ISR Code here
Uint32 t1,t2,t3,t4,T1,T2; t1 = ECap1Regs.CAP1;
t2 = ECap1Regs.CAP2;
t3 = ECap1Regs.CAP3;
t4 = ECap1Regs.CAP4;
T1 = t2-t1;
T2 = t4-t3;
// To receive more interrupts from this PIE group, acknowledge this interrupt
PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;
ECap1Regs.ECCLR.all=0xFFFF; //clare all flag
}

DSP28335 eCAP 测频的更多相关文章

  1. DSP28335做FFT傅里叶变换

    1. 看了一下例程,居然没有FFT的例程,难道这个DSP28335不能做FFT吗?对了C2000系列是有C2000 ware这个库的.方便很多,不过目前不确定在C5000上运行的FFT能直接迁移到DS ...

  2. DSP28335的上手试用LED灯闪烁-第一篇

    1. 本次以三兄弟的DSP28335开发板为例,看下JTAG接口,EMU0,EMU1的用途,不是很懂,不深入研究,用到再说 EMU0/1是TI芯片的JTAG才有的信号,本身不属于JTAG标准里的信号, ...

  3. DSP28335的XINTF操作SRAM实验

    1. 本次使用三兄弟的XDS28335开发板,研究一下XINTF操作SRAM的代码.哈弗结构,奇怪,DSP28335是哈弗结构,那么数据和程序空间应该独立的,为啥书上说采用统一的寻址方式?估计只是读写 ...

  4. 半导体质量管理_eCAP LineWorks SPACE eCAP(电子OCAP)

    用于设计和实施纠正措施的自动化工作流程 以电子方式管理纠正措施的工作流程 LineWorks SPACE的此附加程序提供了设计和自动实施纠正措施(电子纠正措施计划,eCAP)的工作流程.这样可以确保您 ...

  5. 用STM32定时器测量信号频率——测频法和测周法[原创cnblogs.com/helesheng]

    工业测试与控制系统中,经常需要对未知信号的频率进行测试.对于10MHz以下的信号,用单片机(MCU)定时器完成这项任务显然是最常见和最佳的选择.目前性价比最高的单片机STM32拥有功能强大且数量众多的 ...

  6. Proteus仿真—51单片机实现AC信号测频、显示、双机通信

    文章目录 一.原理图部分 二.源码部分 单片机1 单片机2 在Proteus仿真软件里面使用STC89C52实现指定频率的AC信号的测频.显示.双机通信. 一.原理图部分 整体的电路图如示: DC-A ...

  7. DSP28335矩阵键盘的检测

    #include "DSP2833x_Device.h"#include "DSP2833x_Examples.h"char temp;void gpio_in ...

  8. DSP28335的SPI发送

    #include "DSP2833x_Device.h"#include "DSP2833x_Examples.h"unsigned char table[]= ...

  9. DSP28335声音降噪(未完成)

    1. 确定使用的模块是Webrtc-NS,采集声音的芯片TLV32AIC23,实际测试发现Webrtc-NS无法使用,所以改成FIR滤波器. 从时域特性上来看,数字滤波器还可以分为有限冲激响应数字滤波 ...

随机推荐

  1. postman -- token全局变量

    var data = JSON.parse(responseBody);if (data.data.token) { tests["Body has token"] = true; ...

  2. BZOJ 1212: [HNOI2004]L语言 trie

    长度小于 10 是关键信息~ #include <cstdio> #include <cstring> #include <algorithm> #define N ...

  3. cogs2039树的统计 x

    2039. 树的统计 ★★   输入文件:counttree.in   输出文件:counttree.out   简单对比 时间限制:1 s   内存限制:128 MB [题目描述] 关于树的统计问题 ...

  4. 原生Js_实现简单的下拉折叠菜单(添加弹出动画效果)

    用javascript实现简单的下拉折叠菜单效果 实现步骤 (a)获得各操作的dom对象: (b)在所有菜单按钮对象上添加单击事件: (c)设置所有菜单按钮样式为空,并将当前按钮的样式设置为“acti ...

  5. Android_(游戏)打飞机05:处理子弹,击中敌机,添加计分板

    (游戏)打飞机01:前言 传送门 (游戏)打飞机02:游戏背景滚动 传送门 (游戏)打飞机03:控制玩家飞机 传送门 (游戏)打飞机04:绘画敌机.添加子弹   传送门 (游戏)打飞机05:处理子弹, ...

  6. 将Bean转换为Json形式的一个工具类

    这边遇到一个问题:  1.做一个bean类,实现一个函数,能够把bean生成json字符串.按字段作为key,字段值作为value的方式生成,并且按key的ascii码的升序生成.     2.提示: ...

  7. 20175215 2018-2019-2 第二周java课程学习总结

    一.学生免费申请使用IDEA 下载好IDEA后,设置到最后有一个界面, 我们需要到IDEA官网进行IDEA免费试用权的申请,如果有学校的邮箱,使用学校的邮箱注册并证明是自己的就可以直接通过申请.如下图 ...

  8. 第九周学习总结&实验报告(7)

    完成火车站售票程序的模拟. 要求: (1)总票数1000张; (2)10个窗口同时开始卖票; (3) 卖票过程延时1秒钟; (4)不能出现一票多卖或卖出负数号票的情 况 实验代码: package y ...

  9. es6 字符串 对象 拓展 及 less 的语法

    es6 字符串 对页面渲染的几种方式:字符串拼接 文档碎片 dom操作 模板 es6 又提供了一种新的对页面渲染的方式:字符串模板(高级版的字符串拼接) 模板字符串标识符是 反引号 ( `` ) 英文 ...

  10. weblogic报:java.lang.LinkageError: loader constraint violation in interface itable initialization

    原因分析: gdaml服务中依赖org.apache.xerces_2.9.0.v201101211617.jar会产生jar包冲突 解决方法: 项目中的这个jar包删除,并将这个jar包放在服务器中 ...