图2.5 串口发送时序
pStrb为写触发信号;pTEN为输出使能信号;Sclk为取数时钟,上升沿有效。当DSP往串口送数时,pStrb产生一个高电平脉冲信号,在脉冲下降沿将输出数据锁存到输出缓冲器(q[7:0]),同时pTEN有效,使能SClk时钟信号,开始发送输出缓冲区数据到串口。
3、Flash编程技术
3.1芯片简介
本设计使用的Flash是SST公司的SST39VF160-70芯片,容量为1M×16bit,存取时间为70ns。芯片内部电路根据检测到的软件命令序列,执行相应操作。具体命令序列可以参见器件数据手册。
3.2 TMS320VC33实现Flash编程
DSP要实现Flash编程,只需向对应的地址写相应的命令序列。以字编程为例,说明具体实现方法,其他操作模式只是命令序列不同。字编程命令序列如表2.1所示,具体程序如后:
;字编程:
addr5 .word 5555H ;
addr2 .word 2AAAH ;
LDI @addr5,AR0
LDI @addr2,AR1
周期1 地址 05555H
数据 0AAH
周期2 地址 2aaaH
数据 055H
周期3 地址 5555H
数据 0A0H
周期4 地址 Waddr
数据 Data
LDI 0aah,r0
LDI 055h,R1
LDI 0A0h,R2
STI R0,*AR0
STI R1,*AR1
STI R2,*AR0
STI @daddr,AR2;
;daddr存写入地址
STI R3,*AR2
;r3存放写入数据
CALL delay ;delay 15us延时程序
表2.1 Flash 字编程命令
;其它操作
TMS320VC33会在收到程序加载指令后立即调用FLASH擦除程序,并在收到一帧数据后循环调用FLASH字写入程序。由于DSP是将主控PC传来的数据按顺序写入FLASH,所以要实现上电自引导,就需要在主控PC机把COFF文件转换成符合自启动格式的二进制文件。
4、TMS320VC33上电自引导技术
TMS320VC33片内固化有一个Bootload程序。在脱机工作状态下,若MCPL/#MP脚接高电平,DSP上电后首先运行Bootload程序,该程序根据用户设置的启动方式来加载外部存储器中程序到片内运行。
本设计中采用并行16bit引导方式加载。根据Bootload文档说明,在复位后需要设置中断Int0有效。
要正确实现自引导,还要求按规定的地址和格式填写自启动表到外部存储器。在int0方式下,起始读数
地址为1000H。利用CC4.1带有的HEX30工具,我们可以方便地根据配置文件生成各种格式的引导表。有关引导表生成的具体操作步骤可以参考文献 [1][4]。在本设计中,先将COFF文件转换成Tektronix 格式,然后用C语言编写的转换程序将Tektronix文件中的附加信息去掉,只留需要写入Flash的有用数据。
串口传输时按低字节在前、高字节在后的顺序将数据打包成帧、按帧发送。DSP在收到一帧正确的数据后,运行Flash写入程序将该帧数据写入。在全部数据写入并查询正确后,断电重启就可以自动运行新的DSP程序了。
5、小结
实际应用证明,这种使用串口实现的DSP在线编程方法具有适应性强、加载方便的特点。在实际开发中可以以本系统为参考,根据实际情况灵活运用,尤其是串口通信部分还有很多方法来实现:如使用专用UART接口芯片、使用软件查询方法等;对环境要求不高的场合,可以使用更简单的RS232接口,省去 RS422/RS232转换器。
参考文献:
【1】 公茂忠,Flash存储器的在系统编程及其在DSP系统中应用,《电子技术应用》,
2002年3月
【2】 MAX487-MAX491 DataSheet,Maxim,2001
【3】 EP20k Programmable Logic Device
Family,Altera,2002
【4】 TMS320C3X/4X Assemble Language Tools
User’s Guide. Texus Instrument,1997