关于dsp定时器同步需要注意的问题

文/蒹葭 zhang.zhilong#gmail.com
因为项目中某一个芯片时钟和使能信号对同步有非常严格要求。故而采用PWM定时器来解决。
项目参数:F2812,主频100M,外设频率50M。
1. 定时器计数是从0开始计数的。所以要计10个数,则周期寄存器应设为0x09,而不是0x0A
2. 定时器2控制寄存器的T2SWT1位置一。同时注意 ,在启动定时器之前,不能将两定时器控制寄存器使能位置 1 否则不能同步。
3. PWM电平变化,由定时器比较寄存器的数值决定,例如:比较寄存器设为0x05,则表示计数器数值到5(从0开始计数),电平跃变,而不是第五个。
4. 通过将定时器2的SELT1PR位置位与否,来决定定时器2使用定时器1的周期,还是使用自己的周期。
5. 设定计数初始值和周期,控制寄存器之后,使能定时器1.此时,定时器2也同步启动。
相关代码如下:
EvaRegs.T1PR = 0x0009; // Timer1 period
EvaRegs.T1CMPR = 0x0005; // Timer1 compare
EvaRegs.T1CNT = 0x0000; // Timer1 counter
// Initalize EVA Timer2
EvaRegs.T2PR = 0xCD1D; // Timer2 period
EvaRegs.T2CMPR = 0x000A; // Timer2 compare
EvaRegs.T2CNT = 0x0000; // Timer2 counter
EvaRegs.GPTCONA.bit.TCMPOE = 1;
EvaRegs.GPTCONA.bit.T1PIN = 1;
EvaRegs.GPTCONA.bit.T2PIN = 1;
EvaRegs.T2CON.all = 0x1082; //bit0使用自己的周期bit7--使用T1CON的使能位,同步
EvaRegs.T1CON.all = 0x1002;
EvaRegs.T1CON.bit.TENABLE=1; //T1 此时使能,则打到同步,如在前面步骤已使能,则不能同步
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
/************************************************************* *Copyright (c) 2005,北京精仪达盛科技有限公司研发部 *All rights reserved * *文件名称:tms320uc5402.h *文件标示: *摘 要:本文件内容为TMS320UC5402 DSP 寄存器定义头文件 * 寄存器都以指针方式进行寻址 * *当前版本:1.0 *作 者:王飞 *完成日期:2005年2月17日 * *取代版本: *原作者 : *完成日期: *************************************************************/ #ifndef TMS320UC5402_H #define TMS320UC5402_H /*TMS320UC5402 CPU寄存器 ~~~~~~~~~~~~~~~~~~~~*/ #define IMR *(volatile unsigned int *)0x0000 /*中断屏蔽寄存器*/ #define IFR *(volatile unsigned int *)0x0001 /*中断标志寄存器*/ #define ST0 *(volatile unsigned int *)0x0006 /* 状态寄存器0 */ #define AL *(volatile unsigned int *)0x0008 /* 低16位A 累加器寄存器 */ #define AH *(volatile unsigned int *)0x0009 /* 高16位A 累加器寄存器 */ #define AG *(volatile unsigned int *)0x000A /* Accumulator A guard bits (39–32) */ #define BL *(volatile unsigned int *)0x000B /* 低16位B 累加器寄存器 */ #define BH *(volatile unsigned int *)0x000C /* 高16位B 累加器寄存器 */ #define BG *(volatile unsigned int *)0x000D /* Accumulator B guard bits (39–32) */ #define TREG *(volatile unsigned int *)0x000E /* 临时寄存器 */ #define TRN *(volatile unsigned int *)0x000F /* 传输寄存器 */ #define AR0 *(volatile unsigned int *)0x0010 /* 辅助寄存器0 */ #define AR1 *(volatile unsigned int *)0x0011 /* 辅助寄存器1 */ #define AR2 *(volatile unsigned int *)0x0012 /* 辅助寄存器2 */ #define AR3 *(volatile unsigned int *)0x0013 /* 辅助寄存器3 */ #define AR4 *(volatile unsigned int *)0x0014 /* 辅助寄存器4 */ #define AR5 *(volatile unsigned int *)0x0015 /* 辅助寄存器5 */ #define AR6 *(volatile unsigned int *)0x0016 /* 辅助寄存器6 */ #define AR7 *(volatile unsigned int *)0x0017 /* 辅助寄存器7 */ #define SP *(volatile unsigned int *)0x0018 /* 堆栈寄存器 */ #define BK *(volatile unsigned int *)0x0019 /* Circular buffer size register */ #define BRC *(volatile unsigned int *)0x001A /* 块重复计数器寄存器 */ #define RSA *(volatile unsigned int *)0x001B /* 块重复开始地址寄存器 */ #define REA *(volatile unsigned int *)0x001C /* 块重复结束地址寄存器 */ #define PMST *(volatile unsigned int *)0x001D /* 处理器模式状态寄存器 */ #define XPC *(volatile unsigned int *)0x001E /* 扩展程序页寄存器 */ /*TMS320UC5402 外围寄存器 ~~~~~~~~~~~~~~~~~~~~*/ /*TMS320UC5402 多通道缓存串口0寄存器 ~~~~~~~~~~~~~~~~~~~~*/ #define DRR20 *(volatile unsigned int *)0x0020 /* McBSP0数据接收寄存器2 */ #define DRR10 *(volatile unsigned int *)0x0021 /* McBSP0数据接收寄存器1 */ #define DXR20 *(volatile unsigned int *)0x0022 /* McBSP0数据发送寄存器2 */ #define DXR10 *(volatile unsigned int *)0x0023 /* McBSP0数据发送寄存器1 */ #define SPSA0 *(volatile unsigned int *)0x0038 /* McBSP0 subbank 地址寄存器 */ #define SPSD0 *(volatile unsigned int *)0x0039 /* McBSP0 subbank 数据寄存器 */ /*TMS320UC5402 定时器0寄存器 ~~~~~~~~~~~~~~~~~~~~*/ #define TIM *(volatile unsigned int *)0x0024 /* 定时器0寄存器 */ #define PRD *(volatile unsigned int *)0x0025 /* 定时器0周期计数器寄存器 */ #define TCR *(volatile unsigned int *)0x0026 /* 定时器0控制寄存器 */ /*TMS320UC5402 等待状态寄存器 ~~~~~~~~~~~~~~~~~~~~*/ #define SWWSR *(volatile unsigned int *)0x0028 /* 软件等待状态寄存器 */ #define BSCR *(volatile unsigned int *)0x0029 /* bank-switching control register */ #define SWCR *(volatile unsigned int *)0x002B /* 软件等待状态控制寄存器 */ /*TMS320UC5402 主机通讯接口寄存器 ~~~~~~~~~~~~~~~~~~~~*/ #define HPIC *(volatile unsigned int *)0x002C /* 主机通讯接口控制寄存器 */ /*TMS320UC5402 定时器1寄存器 ~~~~~~~~~~~~~~~~~~~~*/ #define TIM1 *(volatile unsigned int *)0x0030 /* 定时器1寄存器 */ #define PRD1 *(volatile unsigned int *)0x0031 /* 定时器1周期计数器寄存器 */ #define TCR1 *(volatile unsigned int *)0x0032 /* 定时器1控制寄存器 */ /*TMS320UC5402 通用IO寄存器 ~~~~~~~~~~~~~~~~~~~~*/ #define GPIOCR *(volatile unsigned int *)0x003C /* 通用IO引脚控制寄存器 */ #define GPIOSR *(volatile unsigned int *)0x003D /* 通用IO引脚状态寄存器 */ /*TMS320UC5402 多通道缓存串口1寄存器 ~~~~~~~~~~~~~~~~~~~~*/ #define DRR21 *(volatile unsigned int *)0x0040 /* McBSP1数据接收寄存器2 */ #define DRR11 *(volatile unsigned int *)0x0041 /* McBSP1数据接收寄存器1 */ #define DXR21 *(volatile unsigned int *)0x0042 /* McBSP1数据发送寄存器2 */ #define DXR11 *(volatile unsigned int *)0x0043 /* McBSP1数据发送寄存器1 */ #define SPSA1 *(volatile unsigned int *)0x0048 /* McBSP1 subbank 地址寄存器 */ #define SPSD1 *(volatile unsigned int *)0x0049 /* McBSP1 subbank 数据寄存器 */ /*TMS320UC5402 DMA寄存器 ~~~~~~~~~~~~~~~~~~~~*/ #define DMPREC *(volatile unsigned int *)0x0054 /* DMA通道优先级,使能控制寄存器 */ #define DMSA *(volatile unsigned int *)0x0055 /* DMA subbank 地址寄存器 */ #define DMSDI *(volatile unsigned int *)0x0056 /* DMA subbank 数据自增寄存器 */ #define DMSDN *(volatile unsigned int *)0x0057 /* McBSP1 subbank 数据寄存器 */ /*TMS320UC5402 PLL寄存器 ~~~~~~~~~~~~~~~~~~~~*/ #define CLKMD *(volatile unsigned int *)0x0058 /* 时钟模式寄存器 */ /*TMS320UC5402 多通道缓存串口子地址 ~~~~~~~~~~~~~~~~~~~~*/ #define SPCR1 0x00 /* 串口控制寄存器1 */ #define SPCR2 0x01 /* 串口控制寄存器2 */ #define RCR1 0x02 /* 接收控制寄存器1 */ #define RCR2 0x03 /* 接收控制寄存器2 */ #define XCR1 0x04 /* 传送控制寄存器1 */ #define XCR2 0x05 /* 传送控制寄存器2 */ #define SRGR1 0x06 /* 采样率产生寄存器1 */ #define SRGR2 0x07 /* 采样率产生寄存器2 */ #define MCR1 0x08 /* 多通道寄存器1 */ #define MCR2 0x09 /* 多通道寄存器2 */ #define RCERA 0x0A /* 接收通道使能寄存器A */ #define RCERB 0x0B /* 接收通道使能寄存器B */ #define XCERA 0x0C /* 发送通道使能寄存器A */ #define XCERB 0x0D /* 发送通道使能寄存器B */ #define PCR 0x0E /* 引脚控制寄存器 */ /*TMS320UC5402 DMA子地址 ~~~~~~~~~~~~~~~~~~~~*/ #define DMSRC0 0x00 /* DMA通道0源地址寄存器 */ #define DMDST0 0x01 /* DMA通道0目地址寄存器 */ #define DMCTR0 0x02 /* DMA通道0单元数目寄存器 */ #define DMSFC0 0x03 /* DMA通道0同步选择、桢数计数寄存器 */ #define DMMCR0 0x04 /* DMA通道0传送模式控制寄存器 */ #define DMSCR1 0x05 /* DMA通道1源地址寄存器 */ #define DMDST1 0x06 /* DMA通道1目地址寄存器 */ #define DMCTR1 0x07 /* DMA通道1单元数目寄存器 */ #define DMSFC1 0x08 /* DMA通道1同步选择、桢数计数寄存器 */ #define DMMCR1 0x09 /* DMA通道1传送模式控制寄存器 */ #define DMSRC2 0x0A /* DMA通道2源地址寄存器 */ #define DMDST2 0x0B /* DMA通道2目地址寄存器 */ #define DMCTR2 0x0C /* DMA通道2单元数目寄存器 */ #define DMSFC2 0x0D /* DMA通道2同步选择、桢数计数寄存器 */ #define DMMCR2 0x0E /* DMA通道2传送模式控制寄存器 */ #define DMSRC3 0x0F /* DMA通道3源地址寄存器 */ #define DMDST3 0x10 /* DMA通道3目地址寄存器 */ #define DMCTR3 0x11 /* DMA通道3单元数目寄存器 */ #define DMSFC3 0x12 /* DMA通道3同步选择、桢数计数寄存器 */ #define DMMCR3 0x13 /* DMA通道3传送模式控制寄存器 */ #define DMSRC4 0x14 /* DMA通道4源地址寄存器 */ #define DMDST4 0x15 /* DMA通道4目地址寄存器 */ #define DMCTR4 0x16 /* DMA通道4单元数目寄存器 */ #define DMSFC4 0x17 /* DMA通道4同步选择、桢数计数寄存器 */ #define DMMCR4 0x18 /* DMA通道4传送模式控制寄存器 */ #define DMSRC5 0x19 /* DMA通道5源地址寄存器 */ #define DMDST5 0x1A /* DMA通道5目地址寄存器 */ #define DMCTR5 0x1B /* DMA通道5单元数目寄存器 */ #define DMSFC5 0x1C /* DMA通道5同步选择、桢数计数寄存器 */ #define DMMCR5 0x1D /* DMA通道5传送模式控制寄存器 */ #define DMSRCP 0x1E /* DMA源程序页地址(控制通道) */ #define DMDSTP 0x1F /* DMA目程序页地址(控制通道) */ #define DMIDX0 0x20 /* DMA单元索引地址寄存器0 */ #define DMIDX1 0x21 /* DMA单元索引地址寄存器1 */ #define DMFRI0 0x22 /* DMA桢索引寄存器0 */ #define DMFRI1 0x23 /* DMA桢索引寄存器1 */ #define DMGSA 0x24 /* DMA全局源地址重装寄存器 */ #define DMGDA 0x25 /* DMA全局目地址重装寄存器 */ #define DMGCR 0x26 /* DMA全局计数重装寄存器 */ #define DMGFR 0x27 /* DMA全局桢计数重装寄存器 */ #endif
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值