《DSP28335的调试总结-这是一份总结很全面的资料-我在学.doc》由会员分享,可在线阅读,更多相关《DSP28335的调试总结-这是一份总结很全面的资料-我在学.doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateDSP28335的调试总结-这是一份总结很全面的资料-我在学DSP28335的调试总结-这是一份总结很全面的资料-我在学DSP28335的调试总结,这是一份总结很全面的资料,我在学习开发板的一些总结,希望能得到同行的帮助,愿与大家一起学习和分享-1 DSP的PWM信号11简介DSP28335共12路16位的ePWM,能进行频率和占空比控制。ePWM的时钟TBCLK=S
2、YSCLKOUT/(HSPCLKDIVCLKDIV):PWM信号频率由时基周期寄存器TBPDR和时基计数器的计数模式决定。初始化程序采用的计数模式为递增计数模式。在递增计数模式下,时基计数器从零开始增加,直到达到周期寄存器值(TBPDR)。然后时基计数器复位到零,再次开始增加。PWM信号周期与频率的计算如下:12端口对应关系通道相应PWM的A/B对应JP0B端口号1ePWMA92ePWM103ePWMA114ePWM125ePWMA136ePWM147ePWMA158ePWM169ePWMA1710ePWM1811ePWMA1912ePWM20说明:JP0B的端口号按“Z”字形顺序数。13初始
3、化程序注释void InitPwm1AB(float32 f)Uint16 T= 2343750/f-1.0;/系统时钟SYSCLKOUT=150MHz,TBCLK=6.6666667ns,在连续增计数模式下,f=150000000/(TBPDR+1)EALLOW;/先初始化通用输入输出口/GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1;GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1; EPwm1Regs.TBPH
4、S.half.TBPHS = 0; / 在相位寄存器中设置计数器的起始计数位置/下面两条语句组合对PWM的时钟进行分频EPwm1Regs.TBCTL.bit.CLKDIV = 6;EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;EPwm1Regs.TBPRD = T; /在周期寄存器中设置计数器的计数周期/TBCTL为定时器控制寄存器EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; /设置计数模式位为连续增计数模式,产生对称方波EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; / 将定时器相位使能位关闭EPw
5、m1Regs.TBCTL.bit.PRDLD = TB_SHADOW;/映射寄存器SHADOW使能并配置映射寄存器为自动读写EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; / 定时器时钟源选择,一共有四种时钟源EPwm1Regs.CMPA.half.CMPA= 0.0001*T;/ 设置EPWM1A比较值寄存器的比较值,即体现EPWM1A的占空比EPwm1Regs.CMPB= 0.0001*T;EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;/A模块比较模式EPwm1Regs.CMPCTL.bit.SHDWBMODE
6、 = CC_SHADOW;/B模块比较模式EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; / A模块比较使能,通过写0来清除SHDWAMODE位来使能load on CTR=ZeroEPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; / B模块比较使能,通过写0来清除SHDWBMODE位来使能load on CTR=Zero/AQCTLA为输出A比较方式控制寄存器EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; / TBCTR(计数器)计到零时使输出为反向EPwm1Regs.AQCTLA.b
7、it.CAU = AQ_CLEAR;/TBCTR(计数器)与CMPA在up计数时相等使输出为high,这关系的输出的占空比EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET; EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;EDIS;2 DSP的CAN通信21CAN2.0B协议简述TMS320F28335上有2个增强型CAN总线控制器,符合CAN2.0B协议,其总线波特率可达到1Mbps。符合CAN2.0B协议的数据帧为扩展数据帧,即采用29位标识符。数据帧的数据域最多可含8个字节,则DSP28335的数据帧位数为64128位。CAN协议规定采用帧的形式
8、进行通信,有4种不同类型的帧: 数据帧:携带数据从一个发送节点到一个接收节点; 远程帧:它被一个节点发送出去用以请求发送具有相同标识符的数据帧,通过发送远程帧,一个节点需要的数据可以通过请求另一个节点发送相应的数据帧来获得,数据帧和相应的远程帧使用相同标识符; 错误帧:在总线错误检测时由任意节点发送的帧; 超载帧:在前后两个数据帧或远程帧之间提供一个额外的延迟。通信报文的优先级由标识符决定,标识符数值越小,优先级越高。最高优先级的报文在总线仲裁的过程中获得总线的访问权,低优先级报文在下一个总线空闲自动重发。CAN2.0B协议的数据帧格式如下图所示:对于CAN2.0B协议的消息,其标识符扩展位I
9、DE(MSGID31)必须置1,由此可知给DSP的邮箱初始化标识符ID时,其16进制赋值的最高位至少应当为8.在不同的系统中,CAN总线的波特率可以不同,其可适应的信息传输距离也不同;但在同一个系统中,其总线波特率必须一致,所以DSP28335在初始化波特率时,A路和B路应当同时进行一致的初始化。22CAN总线电平CAN总线的理论电平如下图所示:高速CAN与低速CAN在总线电平上有区别,如下图所示:高速CAN与低速CAN的高速低速之分在于支持的总线波特率不一样。实验用的开发板上的收发器PCA82C250第8脚接地,故为高速CAN模式。高速CAN为提高通信的抗干扰性和可靠性,应进行光耦隔离。开发
10、板的CAN接口部分电路如下图所示:23CAN总线上的120欧电阻CAN总线终端以及各个节点终端通常均有120欧电阻,其作用在于匹配总线阻抗,提高数据通信的抗干扰性及可靠行,有效地增强信号强度。高频信号传输时,信号波长相对传输线较短,信号在传输线终端会形成反射波,干扰原信号,所以需要在传输线末端加终端电阻,根据传输线理论,终端电阻可以吸收网络上的反射波,使信号到达传输线末端后不反射。两个终端电阻并联后的值应当基本等于传输线在通信频率上的特性阻抗。终端电阻典型值为120欧姆.在网络连接线非常短、临时或实验室测试时也可以不使用终端电阻。24DSP的CAN时钟模块CAN的时钟频率 其中,为波特率预定标
11、寄存器,用于将系统时钟分频为CAN时钟,。若采用3次采样模式,必须满足。CAN总线上的时间周期长度由、以及决定:,;,(注意必须大于或等于);波特率25邮箱初始化例程注解void InitMboxA0(Uint32 MID,Uint16 DTL,Uint16 TR)struct ECAN_REGS ECanaShadow;EALLOW; ECanaShadow.CANTIOC.all = ECanaRegs.CANTIOC.all; ECanaShadow.CANTIOC.bit.TXFUNC = 1; ECanaRegs.CANTIOC.all = ECanaShadow.CANTIOC.a
12、ll; ECanaShadow.CANRIOC.all = ECanaRegs.CANRIOC.all; ECanaShadow.CANRIOC.bit.RXFUNC = 1; ECanaRegs.CANRIOC.all = ECanaShadow.CANRIOC.all;ECanaShadow.CANMC.all = ECanaRegs.CANMC.all;ECanaShadow.CANMC.bit.SCB = 1; /选择eCAN模式,将32个邮箱寄存器全部使用起来ECanaRegs.CANMC.all = ECanaShadow.CANMC.all; ECanaMboxes.MBOX0.
13、MSGCTRL.all = 0x00000000;/此语句含邮箱号,可以修改/以下状态或标志寄存器通过写1清零/ECanaRegs.CANTA.all= 0xFFFFFFFF;ECanaRegs.CANRMP.all= 0xFFFFFFFF;ECanaRegs.CANGIF0.all= 0xFFFFFFFF;ECanaRegs.CANGIF1.all= 0xFFFFFFFF;/配置邮箱收发方向/ ECanaShadow.CANMD.all = ECanaRegs.CANMD.all; ECanaShadow.CANMD.bit.MD0 = TR; /此语句含邮箱号,可以修改 ECanaRegs
14、.CANMD.all = ECanaShadow.CANMD.all; /配置标识符ID,写标识符前必须关闭使能位/ ECanaShadow.CANME.all = ECanaRegs.CANME.all; ECanaRegs.CANME.bit.ME0= 0; /此语句含邮箱号,可以修改 ECanaRegs.CANME.all = ECanaShadow.CANME.all;ECanaMboxes.MBOX0.MSGID.all = MID; /此语句含邮箱号,可以修改/标识符配置结束后使能相应的邮箱/ ECanaShadow.CANME.all = ECanaRegs.CANME.all;
15、 ECanaShadow.CANME.bit.ME0 = 1; /此语句含邮箱号,可以修改 ECanaRegs.CANME.all = ECanaShadow.CANME.all;/设置数据长度的字节数/ ECanaMboxes.MBOX0.MSGCTRL.bit.DLC = DTL;/此语句含邮箱号,可以修改EDIS;26消息发送和接收1、消息发送/往发送邮箱中写数据,分别写低32位4字节和高32位4字节ECanaMboxes.MBOX0.MDL.all = MDL;ECanaMboxes.MBOX0.MDH.all = MDH;/置位准备发送,将发送请求位置位,使能邮箱发送功能ECanaS
16、hadow.CANTRS.all = 0;ECanaShadow.CANTRS.bit.TRS0 = 1; ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;doECanaShadow.CANTA.all = ECanaRegs.CANTA.all; while(ECanaShadow.CANTA.bit.TA0 = 0 ); /当邮箱的消息被成功发送时,发送应答位TA将置1ECanaShadow.CANTA.bit.TA0 = 1; /写1清零,准备判别下一次发送与否ECanaRegs.CANTA.all=ECanaShadow.CANTA.all;
17、2、消息的接收struct ECAN_REGS ECanaShadow;ECanaShadow.CANRMP.all = ECanaRegs.CANRMP.all;dowhile(ECanaShadow.CANRMP.bit.RMP1 != 1 );/当接收消息成功时,接收待决位RMP0置位为1 ECanaShadow.CANRMP.bit.RMP1 = 1;/接收消息待决位通过写1清零ECanaRegs.CANRMP.all=ECanaShadow.CANRMP.all;27CAN的适配器存在的一些问题过滤器配置明显不对但任然能接受数据:波特率是2倍关系3 DSP的32位浮点运算测试TEST
18、COUNT1对应于正弦运算的时钟周期数TESTCOUNT2对应于加法运算的时钟周期数TESTCOUNT3对应于除法运算的时钟周期数1、单单次运算:2、循环10次运算:3、循环100次运算:4、结果分析:按多次统计求平均的原则,DSP28335的32位浮点运算时间为:单次加法:20个时钟周期,约为单次除法:250个时钟周期,约为单次正弦:82个时钟周期,约为5、补充说明:系统时钟周期为6、浮点运算正弦值并画图4 DSP定时器中断41 DSP28335的定时器TMS320F28335一共有3个32位CPU定时器,其中定时器0可以被用户使用,定时器1和定时器2则被保留为实时操作系统使用(这是文件DS
19、P2833x_CpuTimers.c中的说法,而手册2823x System Control and Interrupts Reference Guide中讲0和1可用而2被保留。这一点如有必要需更多的测试)。本程序中主要涉及的定时器寄存器有计数寄存器TIM(32位,分高16位和低16位)、周期寄存器PRD(32位,分高16位和低16位)、定时器分频寄存器TDDR(16位,分高8位和低8位)以及定时器控制寄存器TCR。42定时器分频本程序定时器的分频值为零,则进行1分频,定时器周期等于系统输出时钟周期。如下图,分频值可以在文件DSP2833x_CpuTimers.c中的函数void InitC
20、puTimers(void)中去修改。43 计数器计数每过一个定时器时钟周期,定时器计数器寄存器TIM减1,当TIM递减到0时,产生一个CPU中断信号并将PRD的值重载到TIM中,TIM继续递减计数。详参资料2823x System Control and Interrupts Reference Guide第62页,如下图:44定时器时钟周期定时器时钟周期即对系统时钟进行分频而得到。注:详参任润柏,周荔丹等.TMS320F28x源码解读,北京:电子工业出版社,2010,2437.5 DSP看门狗复位51看门狗时钟看门狗时钟发生器:WDCLK = CLKOUT/512,当HALT时停止。6-b
21、its预定标WDPS选择:将WDCLK再分频后送给看门狗定时器。WDPS为WDCR的20 位。其6-bits配置作用如下:000 WDCLK=OSCCLK/512/1;001 WDCLK=OSCCLK/512/1;010 WDCLK=OSCCLK/512/2;011 WDCLK=OSCCLK/512/4;100 WDCLK=OSCCLK/512/8;101 WDCLK=OSCCLK/512/16;110 WDCLK=OSCCLK/512/32;111 WDCLK=OSCCLK/512/64;52看门狗系统控制和状态寄存器(SCSR)高13位均保留,只控制低3位:53看门狗计数寄存器(WDCNT
22、R)计数器WDCNTR:低8位为计数器,当低8位溢出时,产生一个复位信号。此寄存器为只读寄存器。54看门狗重启管理器(WDKEY)利用软件定时向看门狗复位控制寄存器WDKEY写“0x55+0xAA”序列,即可以复位看门狗计数器:void ServiceDog(void) EALLOW; SysCtrlRegs.WDKEY = 0x0055; SysCtrlRegs.WDKEY = 0x00AA; EDIS;看门狗重启管理器(WDKEY)的低8位参与控制,只有先写入55h后写入AAh后重启看门狗计数器。不是此顺序写入55h或AAh,则无效。写入其他数值时则产生复位信号。55看门狗控制寄存器(WDCR)看门狗检测位WDCHK:需要向WDCHK(20)写1、0、1,写其他任何值都会引起器件内核的复位(看门狗已经使能),此检测位执行读操作将返回0、0、0.