欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    TMS320C54x程序设计与应用.ppt

    • 资源ID:6522025       资源大小:1.53MB        全文页数:148页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    TMS320C54x程序设计与应用.ppt

    第6章 TMS320C54x程序设计与应用,内容提要,6.1 汇编语言基本指令应用6.2 DSP在信号发生器上的应用6.3 DSP中断应用6.4 DSP串口通信应用6.5 其它应用,6.1 汇编语言基本指令应用,C54x具有丰富的汇编指令,利用这些指令可以实现数据的传递、运算、程序控制和处理器控制等功能。,DSP中数据表示方法算数运算浮点数运算宏定义和调用数据传递,数的表示方法整数和小数,一个16位的二进制数既可以表示一个整数,也可以表示一个小数。,当它表示一个整数时,其最低位(D0)的权为20,D1的权为21,次高位(D14)的权为214。,当需要表示小数时,小数点的位置始终在最高位后,最高位(D15)表示符号位。,次高位(D14)的权为2-1,然后是2-2,最低位(D0)的权为2-15。,4000H表示小数0.5,1000H是小数2-3=0.125,0001H则表示16位定点DSP能表示的最小的小数(有符号)2-15=0.000030517578125。,数的表示方法整数和小数,在DSP中,一个16进制的数可以表示不同的十进制数,或者是整数,或者是小数(如果表示小数,必定小于1),但仅仅是在做整数乘除或小数乘除时,系统对它们的处理才是有所区别的,而在加减运算时,系统都当成整数来处理。,在C54X中,将一个小数用16位定点格式来表示的方法是用215(32768)乘以该小数,将结果的整数部分转换成十六进制即可以。,数的表示方法整数和小数,如:0.5:*32768=16384:4000H-0.5:绝对值*32768=16384:4000H:取反加1:C000H,在汇编语言中,不能直接写入十进制小数。比如要定义一个系数0.707,可以写成:.word 32768*707/1000,如果表示一个有符号数时,最高位(D15)为符号位,0表示正数,1表示负数。,例如,7FFFH表示最大的正数32767(十进制),而FFFFH表示最大的负数-1(负数用二进制的补码方式显示)。,数的表示方法正数和负数,6.1.2 算术运算,基本算术运算包括:,加法运算减法运算乘法运算除法运算,ALU(Adder),Multiplier(17x17),(Rpt+Sub),算数运算定点加法,ld temp1,a add temp2,a stla,temp3,没有特意考虑temp1和temp2是整数还是小数,temp3=temp1+temp2,;变量temp1装入累加器A,;变量temp2与累加器A相加,结果放入A,;结果(低16位)存入变量temp3中。,算数运算定点减法,stm#temp1,ar3;变量temp1的地址装入 ar3寄存器stm#temp2,ar2;变量temp2的地址装入 ar2寄存器sub*ar2,*ar3,b;变量temp2和temp1都左移 16位,然后相减,结果放入 累加器B中(高16位)sth b,temp3;相减的结果(累加器B的高 16位)存入变量temp3。,算数运算定点整数乘法,C54X提供了大量的乘法运算指令,其结果都是32位。,MPYU是一条专用于无符号数乘法运算的指令,而其它的乘法指令都是有符号数的乘法,算数运算定点整数乘法,rsbxFRCT;清FRCT标志,准备整数乘法Ld temp1,T;变量temp1装入T寄存器mpytemp2,a;temp2*temp1,结 果放入累加器A(32位)stha,temp3;结果的高16位存入temp3stla,temp4;结果的低16位存入temp4,算数运算定点小数乘法,由于两个小数相乘,其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结果。C54X中提供了一个状态位FRCT,将其设置为1时,系统自动将乘积结果左移一位。,算数运算定点小数乘法,ssbx FRCT;FRCT=1,准备小数乘法Ld temp1,16,a;temp1装入A的高16 位mpya temp2;temp2乘A的高16位,结 果 在累加器B中sthb,temp3;将乘积的高16位存temp3,算数运算定点小数乘法,例,temp1=0ccdH(十进制的0.1),temp2=599aH(十进制的0.7),两数相乘后B累加器的内容为08f5f0a4H(十进制的0.07000549323857),如果仅保存结果的高16位08f5H(十进制的0.06997680664063),算数运算除法运算,在C54x中没有除法器硬件,也没有专门的除法指令。但是,利用条件减法指令(SUBC)和重复指令(RPT)可实现两个无符号数除法运算。,条件减法指令:SUBC Smem,src 功能:(src)-(Smem)15ALU输出端 若ALU输出0,则(ALU输出)1+1src 否则(src)1src,重复指令:RPT#K 功能:RC=#K,重复执行下条指令K+1次。,1.整数除法,例:编写16384512的程序,.bss fenzi,1.bss fenmu,1.bss shang,1.datatable.word 16384.word 512.textstart:STM#fenzi,AR1 RPT#1 MVPD table,*AR1+,;16384;512;传送2个数据至分子、分母单元,6.1.2 算数运算除法运算,LD fenmu,16,A MPYA fenzi ABS A STH A,fenmu LD fenzi,A ABS A RPT#15 SUBC fenmu,A XC 1,BLT NEG A STL A,shang,;将分母移到累加器AH;(fenzi)*A(3216)B,获取商的符号;分母取绝对值;分母绝对值存回原处;分子A;分子取绝对值;16次减法重复操作,完成除法;如果B0(商是负数),则需要变号;保存商,注意:SUBC指令仅对无符号数进行操作,因此先对被除数和除数取绝对值,然后利用乘法操作获取商的符号,最后通过条件操作指令给商加上适当的符号。,6.1.2 算数运算除法运算,2.小数除法,例:编写0.4(-0.8)的程序,.bss fenzi,1,.bss fenmu,1,.bss shang,1,.data,table.word 4*32768/10;0.4.word-8*32768/10;-0.8,.textstart:STM#fenzi,AR1,RPT#1 MVPD table,*AR1+,与整数除法不同之处:分子加载在ACC高16位N位小数只需N-1次减法计算,6.1.2 算数运算除法运算,LD fenmu,16,A,;分母送AH,MPYA fenzi,;商符号送B,ABS A,;取分母绝对值,STH A,fenmu,LD fenzi,16,A,;分子送AH,ABS A,;取分子绝对值,RPT#14 SUBC fenmu,A,;15次减法循环 完成除法,XC 1,BLT,;若B0,则变号,NEG A,STL A,shang,;保存商,6.1.2 算数运算除法运算,6.1.3 浮点运算程序,在数字信号处理过程中,定点运算是将数据的整数和小数部分分开,小数点在一个固定位置,其优点是硬件实现比较容易,但动态范围受到限制。为了扩大数据的范围和精度,需要采用浮点运算。虽然C54x是个定点DSP器件,但它支持浮点运算。在C54x上实现浮点运算,操作数必须变成定点数,然后再返回浮点数。通过归一化输入数据,可以将定点值变换为浮点值。,1.浮点数的表示方法,浮点数是由尾数和指数两部分组成,它与定点数的关系:定点数=尾数2-指数,如:定点数:0 x2000=0.25=0.52-1,尾数=0.5=0 x4000,指数=1。,尾数:可正可负,用补码表示。指数:可正可负,用补码表示,其范围:-831。,6.1.3 浮点运算程序,2.定点数转换成浮点数,C54x通过三条指令可将定点数转换成浮点数。,EXP A 提取指数指令,功能:若A=0,则T=0;若A0,则T=(A的多余符号位数-8)。即提取指数,A的内容不变,指数=多余符号位数-8。,例如:执行EXP A前,A=FF FFFF FFCB T=0000,A=FF FFFF FFCB=1111111111001011,33,多余符号位数:33 指数:33-8=25 T=0019,执行后,A=FF FFFF FFCB T=0019(25),又如:执行EXP B前,B=07 8543 2105 T=0007 B=0000 0111 1000,多余符号位数:4 指数:4-8=-4 T=FFFC 执行后,B=07 8543 2105 T=FFFC(-4),6.1.3 浮点运算程序,ST T,EXPONENT,紧随EXP指令之后。,功能:将保存在T中的指数存放在数据存储器EXP单元中。,NORM A,根据T对累加器进行格式化处理指令。,功能:根据T的内容,对累加器A进行移位。T0,A左移T位;T0,A右移T位。即ATSA。,6.1.3 浮点运算程序,例如:NORM A,执行前:A=FF FFFF F001 T=0013(19),27,左移19位,11111111 1000 0000 0000 1000,执行后:A=FF 8008 0000 T=0013(19),又如:NORM B,A,执行前:A=FF FFFF F001 B=21 0A0A 0A0A T=FFF9(-7)B右移7位送入A A=00 4214 1414 执行后:A=00 4214 1414 B=21 0A0A 0A0A T=FFF9(-7),6.1.3 浮点运算程序,3.浮点数转换成定点数,定点数浮点数:根据定点数,求其尾数和指数,然后将尾数按指数T进行移位。,当T0,A左移T位;当T0,A右移T位。,浮点数定点数:根据指数T,将尾数进行移位。,当T0,A右移T位;当T0,A左移T位。,6.1.3 浮点运算程序,4.浮点乘法运算实例,实现浮点乘法运算时,首先将定点数规格化成浮点数;然后完成浮点乘法运算;最后将浮点数转换成定点数。,【例5.8.1】编写浮点乘法程序,完成a1a2=0.4(-0.9),程序中保留10个数据存储单元:a1(被乘数)a2(乘数)b1(被乘数的指数)c1(被乘数的尾数)b2(乘数的指数)c2(乘数的尾数)ep(乘积的指数)mp(乘积的尾数)prod(乘积)temp(暂存单元),6.1.3 浮点运算程序,程序清单:,.title“float.asm”.def startSTACK:.usect“STACK”,100.bss a1,1.bss a2,1.bss b1,1.bss c1,1.bss b2,1.bss c2,1.bss ep,1.bss mp,1.bss prod,1.bss temp,1,.title“float.asm”.def startSTACK:.usect“STACK”,100,.bss a1,1,a1,.bss a2,1,a2,.bss b1,1,b1,.bss c1,1,c1,.bss b2,1,b2,.bss c2,1,c2,.bss ep,1,ep,.bss mp,1,mp,.bss prod,1,prod,.bss temp,1,temp,6.1.3 浮点运算程序,table:.word 4*32768/10,table,.word-9*32768/10,.textstart:STM#SATACK+100,SP MVPD table,a1 MVPD table+1,a2 LD a1,16,A EXP A ST T,b1 NORM A STH A,c1 LD a2,16,A EXP A ST T,b2 NORM A STH A,c2 CALL MULTdone:B done,;设堆栈指针,;将a1和a2送入RAM,;将a1送入AH,;求a1的指数,;将a1的指数送b1,;求a1的尾数,即A左移1位,;将a1的尾数送c1,;将a2送入AH,;求a2的指数,;将a2的指数送b2,;求a2的尾数,;将a2的尾数送c2,;调浮点乘法子程序,MULT:SSBX FRCT SSBX SXM LD b1,A ADD b2,A STL A,ep LD c1,T MPY c2,A EXP A ST T,temp NORM A STH A,mp LD temp,A ADD ep,A STL A,ep,;取b1送入A,;b1+b2送入A,;乘积指数送ep,;取a1的尾数,;求尾数的乘积,即:乘积尾数=c1c2,;求尾数乘积的指数,;指数存入temp,;求乘积的尾数,;存乘积的尾数,;取尾数乘积的指数,;(ep)+(temp)A,;保存乘积指数,NEG A STL A,temp LD temp,T LD mp,16,A NORM A STH A,prod RET.END,;乘积指数反号,;暂存A,;取乘积指数,;将(mp)AH,;将A按T移位,得定点数,;保存定点乘积,;子程序返回,运行结果:,乘积尾数:0 xA3D7,乘积指数:0 x0001,乘积定点数:0 xD1EC,十进制数:-0.359999,6.1.4 宏定义与调用,ADD3.MACRO P1,P2,P3,ADDRP;三数相加宏定义;ADDRP=P1+P2+P3LD P1,AADD P2,AADD P3,ASTL A,ADDRP.ENDM,ADD3 DAT0,DAT1,DAT2,DAT3;三数相加操作;DAT3=DAT0+DAT1+DAT2,定义宏:,调用宏,6.1.5 数据传递,阅读:P343 数据存储器和程序存储器实验说明分析:P350 数据存储器和程序存储器实验源程序要求:结合附录指令集,掌握基本数据传递指令和寻址方式的 使用。,6.2 DSP 在信号发生器上的应用,信号发生器是通信、电子技术应用领域最常见的设备。目前很多信号可由DDS(Direct digital synthesis)来产生,主要采用查表法。此种方法适用于精度要求不是很高的场合,如果精度要求较高则查表量就会很大,相应的存储容量也要求很大。另一种产生信号的方法是通过计算获得信号的相关数据。,常见的波形信号有:方波、正弦波等。方波信号容易实现,如定时中断。正弦波信号可用相应的算法实现,6.2 DSP 在信号发生器上的应用,正弦波算法介绍:,利用正弦函数的对称性和周期性,可以不用计算360度的所有角度值,只要计算045度的sinx和cosx的值(精度为0.5度),再利用sin2x=2sinx*cosx,求出090度的值(精度为1度),然后通过复制可获得0360度的sinx。可将获得的sinx值放入一个表中,重复的向DA输出,通过DA即可得到相应的正弦波形,改变输出的延时可得到频率不同的正弦波,选取不同的系数乘以sinx值可改变正弦波的幅值,改变sinx输出表的输出顺序可改变波形的相位。,6.2 DSP 在信号发生器上的应用,正弦波算法介绍:,sinx和cosx的计算:泰勒级数展开法(取前五项),6.2 DSP 在信号发生器上的应用,正弦函数sinx程序实现:,开辟存储单元:,7FFFH dsp能表示的最大的小数;32767/327681,6.2 DSP 在信号发生器上的应用,正弦函数sinx程序实现:,关键指令:(1)并行存储和装载指令:ST src,Ymem;hi(src)Ymem|LD Xmem,dst;Xmemhi(dst)(2)乘减指令:MASR Xmem,Ymem,src,dst;(src-Xmem*Ymem)dst,XmemT,6.2 DSP 在信号发生器上的应用,余弦函数cosx程序实现:,只要改变table单元的值即可,6.2 DSP 在信号发生器上的应用,计算0359度的正弦值算法,精度为1度:,SIN0SIN90,SIN91SIN179,SIN180SIN359,6.2 DSP 在信号发生器上的应用,计算0359度的正弦值程序实现:,需开辟的存储区:,sin_x:.usect sin_x,360,关键指令:(1)循环寻址:STM#LK,BK 寻址地址由*ARx+0%提供;循环长度放入BK;ARx指向寻址单元,每寻址一次用ARx+AR0的内容做下次寻址,STM#sin_x,AR6 STM#1,AR0STM#360,BKPORTW*AR6+0%,PA0,例如:,6.2 DSP 在信号发生器上的应用,计算0359度的正弦值程序实现:,关键指令:(1)循环寻址:STM#LK,BK 寻址地址由*ARx+0%提供;循环次数放入BK;ARx指向寻址单元,每寻址一次用ARx+AR0的内容做下次寻址,STM#sin_x,AR6 STM#1,AR0STM#360,BKPORTW*AR6+0%,PA0,例如:,6.3 DSP 中断应用,一、DSP中断系统:1、不可屏蔽硬件中断:RESET、NMI2、软件中断(不可屏蔽):RESET,INTR,TRAP(单片支持30条软件中断)3、可屏蔽硬件中断(1)片外中断:INT0INT3:四级片外中断(2)片内外设中断:RINT0、XINT0:片内串口0收、发中断RINT1、XINT1:片内串口1收、发中断TINT0、TINT1:片内定时器0、1的定时中断HPINT:主机接口中断BRINT0BRINT1:McBSP接收中断BXINT0BXINT1:McBSP发送中断DMAC0DMAC5:6通道DMA中断,使用中断前要掌握中断优先级,并根据优先级编写中断向量表。中断优先级:P109,二、编写中断向量表程序 从中断优先级表中可以看出,每级中断在向量表中占有4个字的空间;所以在编写中断向量表时要注意中断级别顺序的同时,也要注意各级中断在向量表中的地址。,6.3 DSP 中断应用,MEMORY PAGE 0:VEC:origin=1000h,length=0ffh PROG:origin=1100h,length=8000h PAGE 1:DATA:origin=080h,length=0807fhSECTIONS.text PROG PAGE 0.int_table VEC PAGE 0.stack DATA PAGE 1,.sect.int_tablevector:rs b _c_int00 nop nopnmi b _ret nop nopsint17 b _ret nop nopsint18 b _ret nop nopsint19 b _ret nop nopsint20 b _ret nop nop sint21 b _ret nop nopsint22 b _ret nop nopsint23 b _ret nop nop,sint24 b _ret nop nopsint25 b _ret nop nopsint26 b _ret nop nopsint27.b _ret nop nop sint28 b _ret nop nopsint29 b _ret nop nopsint30 b _ret nop nopint0 b _ret nop nopint1 b _ret nop nopint2 b _ret nop nop,tint0 b _tin nop nopbrint0 b _ret nop nopbxint0 b _ret nop noptrint1 b _ret nop nopdmac1 b _ret nop nopint3 b _ret nop nophpint b _ret nop nopq26 b _ret nop nopq27 b _ret nop nopdmac4 b _ret nop nop,dmac5 b _ret nop nop,B:无条件转移指令(2W)NOP:空指令(1W),二、编写中断向量表程序 对于系统中不用的中断可用0填充;.space 伪指令:格式:.space n*m*16功能:紧接着上条指令开始,填充n*m*16位0,6.3 DSP 中断应用,例如:B loop1.space 1*16;在B指令后保留一个字的空间,该空间用0填充,二、编写中断向量表程序 对于系统中不用的中断可用0填充;,6.3 DSP 中断应用,.sect“.vectors”rst:b _c_int00 nop nop.space 17*4*16int2:b _onkey nop nop.space 13*4*16,该中断向量表中只有两个中断;其余未使用中断填0处理,三、中断相关寄存器 系统中与中断相关的寄存器和控制位有三:中断标志寄存器IFR P107,6.3 DSP 中断应用,IFR中某位为1表明有相应中断,再次写1清除中断,三、中断相关寄存器 系统中与中断相关的寄存器和控制位有三:中断屏蔽寄存器IMR P107,6.3 DSP 中断应用,要打开某个中断,只需向IMR中相应某位写1。,三、中断相关寄存器 系统中与中断相关的寄存器和控制位有三:中断方式位INTM(ST1.11),6.3 DSP 中断应用,中断总开关,置为0全局开放可屏蔽中断。,使能中断步骤:(1)INTM=1;关全局中断,为初始化各寄存器做准备(2)IFR对应位=1;清除上次未完成中断(3)IMR对应位=1;打开对应中断(4)INTM=1;开全局中断,等待中断到来,四、中断应用举例:硬件中断实验(P346),6.3 DSP 中断应用,通过CPLD扫描的按键产生一个硬件中断,DSP读取键盘扫描码,并将该扫描码转换为LED的显示码送LED显示。系统共有6片LED,每片LED的显示码有段码和位码组成。如:将0显示在各位(右1)LED上:显示码为:3F01H,其中:高8位为段码,低8位为位码,LED显示模块地址:B000H故:只要将3F01H送B000H,即可在各位显示0,四、中断应用举例:硬件中断实验(P346),6.3 DSP 中断应用,键盘扫描入口地址为:A008H,系统使用INT2作为键盘中断;故:当INT2中断到来后,系统从A008H处读取键值,经换码后,变为显示码,送B000H显示即可。,四、中断应用举例:硬件中断实验(P346),6.3 DSP 中断应用,五、程序设计(P358)CMD文件,6.3 DSP 中断应用,MEMORYPAGE 0:VECS:origin=0 xff80,length=0 x80PROG:origin=0 x2000,length=0 x2000PAGE 1:DATA:origin=0 x4000,length=0 x1000DRAM:origin=0 x5000,length=0 x1000STACK:origin=0 x6000,length=0 x1000SECTIONS.vectors:VECS PAGE 0.text:PROG PAGE 0.data:DATA PAGE 1.bss:DRAM PAGE 1.stack:STACK PAGE 1,五、程序设计(P358)ASM文件,6.3 DSP 中断应用,.title ex6.global _c_int00.mmregsKEY_ADDR.set0a008hD_LED_ADDR.set0b000hKEY_CODE1.set60hKEY_CODE2.set61h,.data.word 00h,3F06h,0605h,5B04h,4f03h,6602h,6d01h,7d06h,0705h,7f04h.word 6f03h07702h,07c01h,3906h,5e05h,07904h,07103h,8002h;BCD CODE 0 1 2 3 4 5 6 7 8 9 a b c d e f.,五、程序设计(P358)ASM文件,6.3 DSP 中断应用,.sect“.vectors”rst:b _c_int00 nop nop.space 17*4*16int2:b _onkey nop nop.space 13*4*16,五、程序设计(P358)ASM文件,6.3 DSP 中断应用,CONVERT.macrorawdataSTM#4000h,AR3;AR3指向DATA表首ANDM#001Fh,rawdata;rawdata中的键码高10位清0LD rawdata,AADD AR3,A;AR3指向具体的显示码STL A,AR3nopnopLD*AR3,A;将该显示码取入ACCSTL A,rawdata;显示码送回rawdatanopnopnopnop.endm,五、程序设计(P358)ASM文件,6.3 DSP 中断应用,.text_c_int00:LD#0h,DPSTM#3000h,SPSSBX INTM;关中断SSBX XF;xf接一发光二极管,表示上电成功STM#07FFFh,SWWSR;cpu与所有存储区域通信插入7个等待周期ST#0000h,KEY_CODE2;键码初始化0STM#0ffffh,IFR;清除所有未完中断ORM#0004h,IMR;使能INT2中断RSBX INTM;开中断,五、程序设计(P358)ASM文件,6.3 DSP 中断应用,susp:PORTW KEY_CODE2,D_LED_ADDR;显示到数码管 RPT#0ffffh NOP NOP B susp;等待中断,五、程序设计(P358)ASM文件,6.3 DSP 中断应用,_onkey:noprpt#0ffffhnopnoprpt#0ffffhnopnoprpt#0ffffhnopnoprpt#0ffffhnopnopPORTR KEY_ADDR,KEY_CODE2;读取按键CONVERT KEY_CODE2;将按键码转换成显示码,五、程序设计(P358)ASM文件,6.3 DSP 中断应用,exit rpt#0ffffhnopnoprpt#0ffffhnopnoprpt#0ffffhnopnopSTM#0ffffh,IFRRETE,6.4 DSP 串口通信设计,1.异步串行通信设计2.同步串行通信设计,6.4.1 DSP-PC 串口通信设计(异步串行),在实际的数字信号处理器(DSP)系统中,经常要求DSP芯片与PC的串口连接,实现必要的数据采集与交换。但是在大多数型号的DSP芯片中,并没有集成通用异步接收发送设备(UART)接口,所以涉及到DSP与PC机的串行通信时,总是通过对MCBSP或通用IO口进行软件模拟,来实现收发数据。但是,这种方法需要对通信协议有深刻的了解,软件编程很麻烦。并且在实际系统中DSP的MCBSP和IO经常要被其它工作占用,所以可考虑采用扩展UART(TL16C550)的方法来实现DSP-PC的异步串行通信。,6.4.1.1 设计思路,通过DSP对TL16C550(并变串)的访问,使8位数据以串行方式与PC机进行数据交换。该实验所需的硬件主要是DSP、TL16C550、MAX232接口芯片。实现过程:(1)向DSP的存储器写入数据,(2)将写入的数据和字符并行移交到TL16C550,(3)数据通过TL16C550串口,经MAX232电平转换后向PC机发送;(4)DSP打开中断等待PC机发送数据,(5)PC机将数据发送给TL16C550,(6)TL16C550向DSP发送中断请求,(7)DSP响应中断开始接受数据。,6.4.1.2 TL16C550介绍,ST16C550是EXAR公司推出通用异步收发器(UART)电路,能够提供数据的串/并、并/串转换功能。其中,串行数据流的同步功能是通过在传输数据中加入起始位和结束位组成的数据字节来实现的,通过在数据字节中附加奇偶校验位确保数据的完整性。接收方检验奇偶校验位,确定是否出现传输错误。,6.4.1.2 TL16C550介绍,主要引脚:(1)A0A2:片内寄存器的选择信号;(2)D0 D7:双向8位数据线;(3)CS0,CS1,CS2:输入片选信号,当CS0,CS1为高电平,CS2为低电平时,TL16C550被选中;(4)ADS:地址选通信号,该信号有效时,可将CS0,CS1,CS2及A0,A1,A2锁存在 TL16C550内部;(5)WR1,WR2,RD1,RD2:读写输入信号;(6)XIN,XOUT:外部时钟端,可接晶振或外部时钟信号;(7)MR:复位信号,当MR高电平时清零大多数寄存器;(8)INTRPT:中断请求信号,为高电平时,通知CPU有中断需要服务。(9)SOUT,SIN:串行发送、接收引脚。(10)RTS:请求发送信号,低电平有效,发送端请求发送数据。(11)CTS:允许发送信号,低电平有效,接收端允许发送端的发送请求。,6.4.1.2 TL16C550介绍,内部寄存器:,6.4.1.3 MAX232介绍,1.MAX232芯片简介 MAX232芯片是MAXIM公司生产的、包含两路接收器和驱动器的IC芯片,适用于各种EIA-232C和V.28V.24的通信接口。MAX232芯片内部有一个电源电压变换器,可以把输入的+5V电源电压变换成为RS-232C输出电平所需的+10V电压。所以,采用此芯片接口的串行通信系统只需单一的+5V电源就可以了。对于没有+12V电源的场合,其适应性更强。加之其价格适中,硬件接口简单,所以被广泛采用。,6.4.1.3 MAX232介绍,6.4.1.4 硬件设计,IOSIRB:IO访问控制引脚,为低时表示访问IO设备;R/W:读写控制引脚,为高表示读,为低表示写。IOSIRB和R/W都为低:选通URAT的WR1;IOSIRB为低,R/W为高:选通URAT的RD1,6.4.1.5 软件设计,6.4.2 DSP模拟量输入/出通道设计(同步串行),利用DSP的多通道缓冲串口(McBSP)与串行ADC/DAC连接,实现模拟量输入输出通道设计。本设计仅针对AD/DA与DSP的连接给予说明和介绍,对于通道中的传感器、信号调理、信号保持和滤波等环节暂不考虑。,6.4.2.1 设计思路,DSP利用同步串口接收AD数据(中断方式),并将该数据存放到指定RAM;DSP利用同步串口向DA发送接收到的数据(中断方式)。,涉及器件:(1)DSP片内多通道缓冲串口(McBSP)(2)TLC320AD50(集成A/D、D/A),6.4.2.2 器件介绍,一、McBSP基础,McBSP设计是基于标准串口扩展而来的。McBSP主要特点:1:全速双工通信。2:双缓存发送和三缓存接收数据寄存器,以支持连续传送。3:直接与多媒体数字信号编解码器的工业标准接口,以及有模拟接口和与串行ADC/DAC的接口。,6.4.2.2 器件介绍,McBSP的内部结构,来到的数据通过DR进入端口,到达接收移位寄存器(RSR);在这里被组合成一个字,传输到接收缓冲寄存器(RBR)中;接着又传输到数据接收寄存器(DRR)中;最后触发CPU中断信号或DMA控制信号让DSP通过数据总线将数据取走。,要发送的数据由数据总线送入发送寄存器(DXR)中;然后送入发送移位寄存器(XSR)中;最后由DX串行输出。当DXR为空时触发CPU中断信号或DMA控制信号,开始新一轮发送。,6.4.2.2 器件介绍,McBSP的寄存器结构,McBSP强大的功能是通过对多种寄存器的设置来实现的。与McBSP相关的寄存器有:串口控制寄存器(SPCR1,2)管脚控制寄存器(PCR)接收控制寄存器(RCR1,2)发送控制寄存器(XCR1,2)采样率发生器寄存器(SRGR1,2)多通道控制寄存器(MCR1,2)接收通道使能寄存器(RCERA,B)发送通道使能寄存器(XCERA,B)等等,这些都是存储器映射寄存器。,6.4.2.2 器件介绍,McBSP的寄存器访问,McBSP的控制设置通过对寄存器读写来完成,这些寄存器控制工作模式或指示串口的状态信息。访问某个指定的寄存器时,首先要将相应的控制寄存器的子地址写入子地址控制器SPSA,SPSA驱动复接器,使之与子数据控制寄存器SPSD相连。接入相应子地址寄存器所在的实际物理存储位置,然后可向SPSD写入数据,数据送入前面子地址寄存器所指定的内嵌数据存储器,或者从SPSD读取数,也接入所制定的内嵌数据存储器。,6.4.2.2 器件介绍,STM SPCR1,SPSA;SPCR1被收入子地址寄存器 STM#20h,SPSD;加载子数据寄存器,完成对;SPCR1的初始化RPT#5;进行下一个寄存器初始化之前等待 NOP STM SPCR2,McBSP0_SPSA;SPCR2地址子地址寄存器LDM SPSD,A;取子数据寄存器,读SPCR2RPT#5NOP,McBSP的寄存器访问,6.4.2.2 器件介绍,54DSP内部有两个可编程的多通道缓冲串口,分别为McBSP0和McBSP0,使用某个串口前要对该串口初始化。(1)使串口复位:SPCR1中的RRST(接收器复位)=0 SPCR2中的XRST(发送器复位)=FRST(帧同步复位)=GRST(采样频率复位)=0(2)按自己要求设置其它相关寄存器(串口仍保持复位状态)(3)使SPCR2中的GRST(采样频率复位)=1(4)等待不少于两个周期,使能McBSP相关中断(5)取消第一步中的复位值,开始数据传输。,McBSP的初始化,6.4.2.2 器件介绍,WR_SUB_REG.macro val,addr;写McBsp控制寄存器stm addr,SPSAnopstm val,SPSDnop.endm wait.macro STM#0008h,AR0;AR0ALRPT*AR0NOP.endm,McBSP的初始化,6.4.2.2 器件介绍,ld#0,DP ssbx INTM;关中断ssbx SXM;禁止符号位扩展WR_SUB_REG#0000H,SPCR1;RRST(接收器复位)=0WR_SUB_REG#0200H,SPCR2;XRST(发送器复位)=FRST(帧同步复位);=GRST(采样频率复位)=0WR_SUB_REG#000CH,PCR;帧同步脉冲取上升沿WR_SUB_REG#0000H,SPCR1WR_SUB_REG#0000H,SPCR2;保持复位状态WR_SUB_REG#0040H,RCR1;16 BITsWR_SUB_REG#0004H,RCR2;Ignore FS after the firstWR_SUB_REG#0040H,XCR1;16 BITsWR_SUB_REG#0004H,XCR2;Ignore FS after the firstld 100,Await,McBSP的初始化,6.4.2.2 器件介绍,andm#0ff3fh,54h;set interrupts to come from serial ports not DMA;by clearing bits 6 and 7 in DMPRECstm#0,RDXRWR_SUB_REG#0001H,SPCR1;启动McBsp串口WR_SUB_REG#0201H,SPCR2ld 100,Awaitaic_initstm#0h,IMR;打开McBSP中断orm#0c00h,IMRstm#0ffffh,IFR,McBSP的初始化,6.4.2.2 器件介绍,二、TLC320AD50,引脚连接,6.4.2.2 器件介绍,二、TLC320AD50,通信方式,有两种通信方式:一次通行方式和二次通信方式。一次通信:用于数据传递,16bit都作为数据位二次通信:可用于对TLC320AD50进行寄存器设置,先将01H TLC320AD50,设置成二次通信;再将控制字 TLC320AD50,设置控制寄存器,6.4.2.2 器件介绍,二、TLC320AD50,初始化,TLC320AD50 正常工作前,必须对它进行正确的初始化。初始化的操作主要是配置TLC320AD50的4个控制寄存器CR1CR4。控制寄存器的读写是通过二次通信来实现的。在二次通信中,D0D7为写入控制寄存器的控制字或是从寄存器读出的数据,D8D12决定选择哪个寄存器,D13位决定是读还是写。,6.4.2.2 器件介绍,二、TLC320AD50,初始化,6.4.2.2 器件介绍,二、TLC320AD50,RD_SUB_REG.macro addr,acc;读McBsp控制寄存器stm#:addr:,SPSA;取控制寄存器地址SPSAnopldm SPSD,

    注意事项

    本文(TMS320C54x程序设计与应用.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开