This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C2000入门必备

Other Parts Discussed in Thread: CONTROLSUITE, TMS320F28335, CCSTUDIO

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,下载前肯定是需要注册的,也有很多人找到后下载不成功,具体下载步骤如下:

 

 

(4)    入门学习:

  • 关于入门学习给大家分享一些经典资料,资料可以带领我们入门学习,熟悉CCS使用和丰富的外设结构,并且有工程代码参考。

    (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();