1、经常看到有网友发帖问相关DSP入门的问题,我们在这里针对C2000入门来总结一下:
(1) 在咨询C2000入门的同时,要想清楚自己感兴趣的方向,兴趣结合C2000系列才能快速入门,并且可以不断深入。举个例子,有些人对电力电子、运动控制等方向比较感兴趣,这就毫无疑问地选择C2000系列,C2000在控制领域的优越性加上个人的控制理论,最终电机的转动、闭环的实现都很有成就感。假如让一个只有信号处理功底的人去看C2000的事件管理器,理解起来可能更费劲些,因为他们缺少了H桥和光电编码器等方面的知识。
(2) 学习是一种投资,想要学习C2000还是建议买一块开发板吧,只有结合开发板做了练习和外设功能的实现,才能更深入的理解。C2000的开发板多种多样,如果资金紧张,可以考虑TI提供的一些板上集成下载器的EVM板,这样可以省去买仿真器的钱。当然如果有能力可以考虑自己画板,这样就可以熟悉C2000硬件功能和外设基本功能,控制器可以考虑向TI申请样片。
(3) 从个人经验来看,在大学选择学习C2000是最值得干的一件事,总体来说C2000的门槛比较高,只要你入门并深入学习了,其他各类单片机和控制器你会很快入门;同时对你的编程思想有很大的影响,你会考虑工程代码的整体结构框架(TI提供的头文件),习惯用结构体、联合体实现功能等。
(4) 一定要找对资源。C2000的各种资料在网络上有很多,但是找对可以快速带你入门的资料很重要,也可以选择一些视频,如TI提供的各种入门视频。
2、入门资源汇总:
(1) 开发板选择:
国内有很多开发板厂家,这里就不一一列出,大家可以根据需要选择;同时一些论坛会搞活动免费赠送开发板,比如21IC中国电子网经常有免费赠送开发板的活动,大家可以多多关注。TI商场提供了各种评估板可以选择(https://estore.ti.com/Basket.aspx )。
(2) 仿真器选择:
仿真器的选择很重要,一定要选择一款稳定性比较好的仿真器,速度可以根据自己的需求选择。经常有网友遇到连接失败,下载失败等问题,很大可能都是仿真器不稳定造成的,多次插拔或者重启电脑后可以正常连接,这种情况容易造成在固化flash的过程中突然停止,造成C2000控制器的损害。选择仿真器的时候一定要关注仿真器所能支持的CCS版本和控制器的型号。
(3) CCS安装使用:
要正确的找到下载地址:http://processors.wiki.ti.com/index.php/Download_CCS,下载前肯定是需要注册的,也有很多人找到后下载不成功,具体下载步骤如下:
- 关于CCSv5的安装使用可以参考德州仪器在线支持社区(www.deyisupport.com )中的帖子:http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/73250.aspx
- 关于CCS功能介绍和使用最详细的word版资料应该在这里(http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/73245.aspx ),虽然是针对CCS3.3讲解的,但是整体功能介绍全面深入,非常有助于你熟练掌握CCS的强大功能,赶快去下载吧。
(4) 入门学习:
-
关于入门学习给大家分享一些经典资料,资料可以带领我们入门学习,熟悉CCS使用和丰富的外设结构,并且有工程代码参考。
- Getting Started With TMS320C28x Digital Signal Controllers(http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/73246.aspx );
- 手把手叫你学习DSP电子版书籍:http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/73249.aspx
- TI面向支持实时控制应用的C2000 微处理器推出 controlSUITE 软件,以全面满足每个设计阶段对更加直观易用的软件的需求。具体下载地址:http://www.ti.com/tool/controlsuite
(5) 目标板硬件问题排查:
a、检查仿真器是否插好;
b、检查CPU供电问题,1.8V,3.3V的供电是否正常;
c、检查DSP引脚是否虚焊(一般先检查JTAG的那几个引脚);
d、检查晶振是否起振;
e、检查JTAG的那几个引脚电平是否正确,特别注意TCK是否有脉冲输出,以检测仿真器
是否好坏;
f、检查DSP上电是否正常复位(复位电平或者说是复位电路是否正常工作)、工作,可
d、查看CLKOUT 引脚,看是否有脉冲输出。(6) 程序在线仿真工作正常,烧写后不执行问题总结:
程序烧到Flash之后,请用不要断开仿真器,用Load Symbols将程序加载,然后运行,Flash在线调试,看看程序跑到什么地方了? 另外,程序中是否使用Delay_us()函数,此函数是否已经copy到Ram中执行。
l Stack的大小开的是否足够?
l 看看程序是否进入了什么illegal ISR?
请确认是否正确初始化FLASH waitstates,通过以下方法:
MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);
// Call Flash Initialization to setup flash waitstates
// This function must reside in RAM
InitFlash();
//
- ./*** Copy all FLASH sections that need to run from RAM (use memcpy() from RTS library) ***/
// Section secureRamFuncs contains user defined code that runs from CSM secured RAM
memcpy( &secureRamFuncs_runstart,
&secureRamFuncs_loadstart,
&secureRamFuncs_loadend - &secureRamFuncs_loadstart);
//copy from the flash to the ram for change the registers of the flash,
/*** Initialize the FLASH ***/
InitFlash();