



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
非原厂TMS320F2812目标板与MATLAB的CCSTarget结合的若干问题相信MATLAB的CCS Target 是很多人坚守DSP而没转向ARM或者FPGA的原因,但是有多少人可以用得起原厂的目标板呢?顶多也是第三方提供的板子吧,而且我相信绝大多数人使用的是自制的目标板。这样问题就来了,到底手头上的板子和CCS Target到底有什么不一样呢,在这方面我走了很多弯路,在这里和大家分享一下。MATLAB设置篇(软件+硬件)1.外扩RAM容量自制的板子通常都会有64K512K的外扩异步RAM,例如IS61LV6416-10T IS61LV51216-10T。这时就需要在Simulink中的Target模块添加外部内存定义段,通过仿真器在线调试的Target可以选用eZdsp2812,烧录到FLASH运行的选用F2812 eZdsp Stand alone code using Flash Memory。例如通过zone67扩展的IS61LV6416,在Target reference中的memory添加ExtRAM,起始地址为0x00100000,长度为0x0010000,存储类型我喜欢用code & data。然后在sections定义中我通常把原来在RAMH0的转到ExtRAM中,而RAMH0的存储类型变为data,专门存变量。另外,对与外扩FLASH同理,但是我没有试过。2.晶振运行速度如果你的晶振选错了,别以为可以通过修改Target reference的运行速度可以达到代码匹配,我在MATLAB2009A中试过,肯定不行!还有就是MATLAB中默认DSP运行在150M,而很多人(包括我)由于使用了1.8V进行供电,2812在150M运行速度上根本不稳定。这里需要手动修改PLL的DIV值进行降频,具体位置在MATLAB安装目录下的toolboxrtwtargetsccslinkccslinksrcDSP281x_SysCtrl.c文件中进行修改,将InitPll(0xA)/150M;改为InitPll(0x9);/135M由于我的第一块板子连电源散热都没设计好,一旦高于45M电源芯片就烫手。出于长治久安的考虑我把板子的速度设为30M,也就是InitPll(0x2)。有人会问为什么不用2407A?便宜而且还比2812简单。我告诉你如果你敢当我面问,我肯定揍你一顿!3.步长设置再将Target拖进Simulink后simulink中的设置会跟随变化,其中需要我们手动参与修改的是solver的Fixed-step size,原来是auto,我一般改为最小步长的1/10。其实有些情况下1/4也勉强可以,这是由模型中的模块决定的。模型中的模块应尽量选用支持定点计算的,至于那些定点计算的请看看帮助吧,太多了,讲不完!模块的采样时间按照需要设定,不知道怎么设的输入-1,与solver的步长一致,别小于solve的补偿就可以了。浮点数模块与定点模块通过Data Type Conversion模块进行转换。4.外设操作2812的地址是统一编址的,这样就很方便的实现了Simulink中对外设的操作,通过write to memory 和 read from memory进行操作。我的板子上有DAC7625和AD7892,所以这一步很重要。到此为止,基本的简单模型也就够用了,例如简单的脉冲发生器,Target reference + Pulse generator+Data Type Conversion+Digital Output。按照上面说的跑一遍就可以按Ctrl+B下到DSP去试了,按Ctrl+B时仿真器、目标板和电脑要进行连接。在MATLAB2009A中仿真时间是不是Inf好像没关系,反正我是没有试出来。用示波器或者焊一个发光二极管就可以看到结果,爽吧!如果在运行过程中把CCS关了,再从Simulink中Ctrl+B会出错的,这时就要在MATLAB中输入clear清除一次工作空间内存。4.代码与化简为了提高速度,MATLAB中加入的很多用域代码都可以去掉,这里一条一条来说。a)在real-time workshop中的Debug,取消所有选项。b)在real-time workshop中的interface中Taarget Function library 选择Ti C28x(ISO),support里面只选floating-point number,Code interface里面仅选Single output/update function,下面的全部不选或者是None。c)Code style 中 Parentheses level 选择 minimum,下面的都不选d)Embedded IDE Link CC中Build action我喜欢选creat project,code generation 中都不选,选了实时性也好像差不多。修改MATLAB代码提速烧进FLASH后,就算系统是150M,Matlab默认的程序运行起来速度不怎么样,这是因为FLASH的速度这的不怎么样。仔细看看MATLAB生成程序,原来要放到RAM跑的ramfuncs段根本就没有放进去,里面包括FLASH初始化和一个汇编语言的循环延迟程序。我不知道各位的MATLAB怎样,但是我的好像就没有放进RAM。如果系统在135M跑,时间应该是不对的。为了将程序运行速度提速,我这里给出两个方法。方法1:直接从FLASH中运行提高FLASH的运行速度,修改实例见“D:worksmatlabfCCSLinkMOSFET_drvDRV_FLASH_spd_up”下的工程文件1.修改main()函数将ramfuncs拷贝至H0,并运行FLASH初始化程序在含有main()函数的文件中添加#include 和void InitFlash(void);在main()函数内对内存块进行拷贝,尽量靠近前面memcpy( &RamfuncsRunStart,&RamfuncsLoadStart,&RamfuncsLoadEnd - &RamfuncsLoadStart);添加FLASH初始化程序InitFlash();2.修改DSP281x_SysCtrl.c文件,缩短FLASH读取指令周期FlashRegs.FBANKWAIT.bit.RANDWAIT最小值为1,默认值为5/Set the Random Waitstate for the Flash / org =5 opt= 1 FlashRegs.FBANKWAIT.bit.RANDWAIT = 1;FlashRegs.FBANKWAIT.bit.PAGEWAIT 最小值为0,默认值为5/Set the Paged Waitstate for the Flash / org =5 opt= 0 FlashRegs.FBANKWAIT.bit.PAGEWAIT = 0;其余程序不用修改,编译运行,程序运行速度会得到大幅提升,速度提升2倍左右。方法2:将FLASH中部分程序或者全部程序复制到ExtRAM或者RAM_H0中运行,例子程序在D:worksmatlabfCCSLinkMOSFET_drvDRV_FLH_ExtRAMDRV_sigFLASH.pjt1.拷贝并修改boot_copy.asm文件,如需全部从RAM中运行则取消所有注释修改时需注意两个部分,首先修改变量声明.global _text_loadstart, _text_runstart, _text_size修改内存拷贝过程中的相应变量MOVL XAR5,#_ramfuncs_size; Store Section Size in XAR5MOVL ACC,XAR5; Move Section Size to ACCMOVL XAR6,#_ramfuncs_loadstart; Store Load Starting Address in XAR6MOVL XAR7,#_ramfuncs_runstart; Store Run Address in XAR7LCRcopy; Branch to Copy2.修改CMD文件中的运行方式和存储方式.text: LOAD = FLASH,PAGE = 0 /* Load section to Flash */ RUN = ExtRAM,PAGE = 0 /* Run section from RAM */LOAD_START(_text_loadstart),RUN_START(_text_runstart),SIZE(_text_size)需要注意前面RAM_H0和ExtRAM的PAGE分布;添加wddisable的section声明;sectioncopy的section声明;3.将原来的starbanch.asm替换为mycode_startbanch.asm其中ref._c_int00被替换为.ref copy_sections其中的看门狗程序添加段定义.sect wddisable4.修改zone 6的访问速度/* Zone 6 Configuration */XintfRegs.XTIMING6.bit.X2TIMING = 0; / Timing scale factor = 1XintfRegs.XTIMING6.bit.XSIZE = 3; / Always write as 11bXintfRegs.XTIMING6.bit.READYMODE = 1;/ XREADY is asynchronousXintfRegs.XTIMING6.bit.USEREADY = 0; / Disable XREADYXintfRegs.XTIMING6.bit.XRDLEAD = 1;/ Read lead timeXintfRegs.XTIMING6.bit.XRDACTIVE = 0;/ Read active time org=2XintfR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车行维修活动方案
- 航线设计考试题及答案
- 高考水文考试题及答案
- 幼儿园教学教案设计:不玩爆竹
- 零售行业各类产品信息表
- 放射图片考试题及答案
- 企业电子采购平台使用协议
- (正式版)DB15∕T 3405.2-2024 《蚯蚓养殖和治污改土技术规程 第2部分:蚯蚓粪生产有机肥料指南》
- 项目进度管理与监控看板工具
- 电子技师考试题及答案
- 中城汽车(山东)有限公司审计报告
- 董事会基础知识培训总结课件
- 2025版煤矿安全规程宣贯培训课件
- (教科2024版)科学三年级上册2.1 水到哪里去了 课件(新教材)
- (2025秋新版)青岛版科学三年级上册全册教案
- 上锁挂牌管理培训课件
- 节能减排培训课件
- 葡萄冷藏保鲜技术规程
- 顾客联络服务 人工与智能客户服务协同要求 编制说明
- 以人为本的医院护理服务体系构建
- 与政府签订项目合同范本
评论
0/150
提交评论