DSP28335 eCAP模块测量信号发生器方波例程
DSP28335 eCAP模块测量信号发生器方波例程
本例程演示了如何使用TI DSP28335的eCAP模块来测量信号发生器产生的方波信号。为了产生方波信号,我们还会配置PWM模块。
代码示例c#include 'DSP2833x_Device.h'#include 'DSP2833x_Examples.h'
#define PWM_PERIOD 1000
void InitECap(void);void InitPWM(void);
void main(void){ InitSysCtrl();
InitECap(); InitPWM();
while (1) { // 产生一个方波 EPwm1Regs.CMPA.half.CMPA = PWM_PERIOD / 2; DELAY_US(500000); // 延时500ms EPwm1Regs.CMPA.half.CMPA = 0; DELAY_US(500000); // 延时500ms }}
void InitECap(void){ // 初始化eCAP模块 ECap1Regs.ECEINT.all = 0; // 禁用所有eCAP中断 ECap1Regs.ECCLR.all = 0xFFFF; // 清除eCAP中断标志
ECap1Regs.ECCTL1.bit.CAPLDEN = 0; // 禁用捕获寄存器加载 ECap1Regs.ECCTL1.bit.PRESCALE = 0; // 预分频器为1 ECap1Regs.ECCTL1.bit.CAP1POL = 0; // 捕获1上升沿触发 ECap1Regs.ECCTL1.bit.CAP2POL = 1; // 捕获2下降沿触发 ECap1Regs.ECCTL1.bit.CAP3POL = 0; // 捕获3上升沿触发 ECap1Regs.ECCTL1.bit.CAP4POL = 1; // 捕获4下降沿触发
ECap1Regs.ECCTL2.bit.TSCTRSTOP = 0; // 停止时间计数器 ECap1Regs.ECCTL2.bit.REARM = 1; // 允许重新装载时间计数器 ECap1Regs.ECCTL2.bit.CONT_ONESHT = 1; // 单次捕获模式
ECap1Regs.ECCTL2.bit.SYNCI_EN = 0; // 禁用同步输入 ECap1Regs.ECCTL2.bit.SYNCO_SEL = 0; // 禁用同步输出}
void InitPWM(void){ // 初始化PWM模块 EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; // 停止PWM时钟 EDIS;
EPwm1Regs.TBCTL.bit.CTRMODE = 0; // 停止计数器 EPwm1Regs.TBCTL.bit.PRDLD = 0; // 立即加载周期寄存器 EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0; // 不分频 EPwm1Regs.TBCTL.bit.CLKDIV = 0; // 不分频
EPwm1Regs.TBPRD = PWM_PERIOD - 1; // 设置周期
EPwm1Regs.AQCTLA.bit.CAU = 2; // 当计数器等于CMPA时,PWM输出高电平 EPwm1Regs.AQCTLA.bit.CAD = 1; // 当计数器等于CMPA时,PWM输出低电平
EPwm1Regs.CMPA.half.CMPA = 0; // 设置初始占空比
EALLOW; SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; // 启动PWM时钟 EDIS;}
代码说明
- 包含头文件: 代码首先包含了DSP2833x_Device.h和DSP2833x_Examples.h头文件,这些文件包含了DSP28335外设寄存器的定义和一些常用的函数。2. 定义PWM周期:
PWM_PERIOD定义了PWM信号的周期,单位为时钟周期。3. 初始化函数:InitECap()函数初始化eCAP模块,配置捕获模式、触发边沿等参数。InitPWM()函数初始化PWM模块,设置PWM频率、占空比等参数。4. 主函数:main()函数是程序的入口函数,它首先调用InitSysCtrl()初始化系统控制寄存器,然后调用InitECap()和InitPWM()初始化eCAP和PWM模块。接着进入一个无限循环,在循环中通过修改EPwm1Regs.CMPA.half.CMPA寄存器的值来改变PWM信号的占空比,从而产生方波信号。5. 延时函数:DELAY_US()函数是一个延时函数,用于在程序中插入延时。
注意
- 该代码只是一个简单的示例,您可能需要根据您的具体应用场景进行修改。* 您需要将该代码复制到CCS工程中,并进行编译和下载到DSP28335开发板上才能运行。
希望本例程对您有所帮助!
原文地址: https://www.cveoy.top/t/topic/Q1U 著作权归作者所有。请勿转载和采集!