高性能单核处理器——C2000 Delfino LaunchPad评测
扫描二维码
随时随地手机看文章
1 简介
C2000 Delfino LaunchPad(LAUNCHXL-F28377S)是一款基于TI最新Delfino器件TMS320F28377S的低成本开发套件,板载XDS100v2仿真器,只需一根USB线就可以进行开发、调试和代码烧写,并提供UART实现PC机和目标板的串行通信。
如下图所示,LAUNCHXL-F28377S C2000 LaunchPad EVM板主要特性如下:
Ø USB Debug和编程接口,板载高速、隔离的XDS100v2仿真器;
Ø USB接口供电或板上预留供电接口供电;
Ø 板载两路用户LED灯,用于状态的指示;
Ø 板载设备复位按键;
Ø 板上预留4组用户通用接口,用于扩展其他模块使用;
Ø 板上预留1路CAN接口,用于远距离传输;
Ø 板载Boot选择开关,用于选择上电加载模式;
Ø 预留QEP_A和QEP_B接口,用于事件管理器功能验证。
LAUNCHXL-F28377S板卡预留的4组用户扩展通用IO口定义如下表所示,结合图中所标注的Jx位置确定具体引脚功能,使用时需注意电平匹配和输入电压范围,因板上对引出通用IO口没有做任何保护,使用时应避免IO口的损坏。
整体LAUNCHXL-F28377S LaunchPad开发套件如下图所示,共包含以下面组件:
Ø C2000 Delfino LaunchPad Board(LAUNCHXL-F28377S)
Ø Mini USB-B线缆,0.5m
Ø 快速入门指南
2 硬件解析
2.1 MCU特性
1) TMS320C28x 32-Bit CPU
Ø 200MHz主频
Ø 浮点定点处理单元(FPU)
2) 集成加法协处理器(CLA)
Ø 200MHz主频
Ø 浮点定点处理单元(FPU)
3) 片上存储单元
Ø 1MB Flash
Ø 164KB RAM
Ø Dual-Zone
4) 时钟和系统控制
Ø 片上10MHz晶体输入接口
Ø 片上自带晶体振荡器
Ø 看门狗
5) 工作电压
Ø 1.2V内核电压,3.3V I/0口电压
6) 外设接口
Ø EMIF接口,用于外扩ASRAM、SDRAM、CPLD等
Ø 6通道DMA
Ø 扩展到169个GPIO
Ø USB2.0接口
Ø 2通道CAN接口
Ø 3通道高速SPI接口
Ø 2组McBSP接口
Ø 4路通用串行接口(SCI/UART)
Ø 2路IIC接口
Ø 24通道ADC
Ø 12位DAC接口
Ø 24路PWM接口
Ø 6路增强型eCAP接口
7) 可满足工业级应用
2.2 硬件原理设计
LAUNCHXL-F28377S LaunchPad整体硬件框图如下图所示,TMS320F28377S(100HTQFP)作为板卡的主控器件,电源管理单元完成USB接口的VBUS电压转换和其他供电接口电压的切入;FT2232H部分主要完成USB到JTAG和USB到UART接口的转换,最终完成板载XDS100v2仿真器;LEDs主要完成电源指示,仿真器通信指示和用户使用指示等功能;CAN接口完成目标板卡和其他外设的远距离通信;QEP接口满足5V电平的信号接口,可以实现光电编码器等外设的相信号直接接入;四组预留连接器,可以外扩其他设备,可以直接接入一些TI的模块。
XDS100v2板载仿真器主要原理图如下图所示,基于一片FTDI的FT2232H完成USB到各种串行接口的转换确实很方便,完全替代了以前的Cypress的USB芯片+CPLD等的做法,FT2232H通过一片SPI接口的EEPROM来存储配置数据,上电后自动读取配置数据并完成FT2232H的配置。LAUNCHXL-F28377S LaunchPad板上仿真器采用了完全隔离的方法,通过两片TI的ISO系列隔离芯片实现了板载仿真器到MCU的完全隔离,硬件设计方面完全可以借鉴这种原理设计和PCB灌铜设计方法,确保留给用户的外设接口和主控之间完全隔离,避免过压等情况损坏主控单元。
为了使用方便,板上通过JP1和JP2短接的方式实现USB接口给整个板卡供电,这样造成了电源和地没能完全隔离开,在后期开发使用中,除仿真器部分外实现单独供电,则可以完全实现仿真器和目标器件等的完全隔离。
[!--empirenews.page--]
ADC接口的参考电压性能要求比较高,因为它的稳定决定着ADC的有效位数和转换值的准确程度,板上通过一片3.3V转3.3V的LDO确保参考电压的稳定,之后又通过滤波和电压跟随,高阻输出到MCU的VREF引脚,具体原理图如下图所示。
BOOT的选择决定MCU上电经TI封装的ROM区引导后用户代码加载的模式,板上通过使用拨码开关选择BOOT引脚的拉高和拉低,完成上电BOOT模式的选择,具体设计原理图如下图所示。
板上预留了2组QEP接口,接口通过电平转换芯片后实现5V的接入,从下图的定义可以看出,除电源输出外,主要包括A相、B相和I相,用于光电编码器的接入,实现电机等运动设备的速度闭环控制。
3 相关资料链接:
1) LaunchPads
http://www.ti.com/ww/en/launchpad/launchpads-c2000-launchxl-f28377s.html#tabs
2) Download the Design Files
http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=SPRR201&fileType=zip
3) TMS320F2837xS Delfino™ Microcontrollers datasheet
http://www.ti.com/lit/ds/sprs881b/sprs881b.pdf
Technical Reference Manual:
http://www.ti.com/lit/ug/spruhx5c/spruhx5c.pdf
4) LAUNCHXL-F28377S User's Guide
http://www.ti.com/lit/ug/sprui25a/sprui25a.pdf
5) 工具下载
controlSUITETM: http://www.ti.com/tool/controlsuite
CCSv6下载,参考我分享的下载指南http://bbs.21ic.com/icview-753682-1-1.html
CCSv6下载地址: http://processors.wiki.ti.com/index.php/Download_CCS#Code_Composer_Studio_Version_6_Downloads(建议下载V6.1.0版本,下载离线Window版)
wiki参考网址:http://processors.wiki.ti.com/index.php/C2000_LaunchPad
下载最新版本6.1.1,注意为了顺利安装建议下载离线版(Windows or Linux)
4 工具安装
4.1 CCS安装
下载完成的离线安装包打开运行可执行文件,关闭一些杀毒工具,同意安装协议,进行下一步。
选择安装路径,避免中文路径,进行下一步。
选择需要安装的产品系列,本次演示只安装C2000 MCU系列,右侧提示信息可以看到所支持产品系列,进行下一步。
选择安装仿真器,选择安装TI XDS系列,其他系列可以选择安装,后期使用可能会有冲突等,选择下一步。
CCS拥有的App Center,根据个人情况选择安装,最后选择Finish开始软件安装。
等安装完成之后,选择在桌面和开始菜单里面创建快捷方式,方便软件启动时使用。
4.2 仿真器驱动安装
安装CCS过程中TI XDS仿真器的驱动已正常安装,可以通过安装CCS的路径下进行查看,路径为TI\ccsv6\ccs_base\emulation\drivers\ftdi_drivers,进入可以看到基于windows的USB驱动文件,如下图所示。
通过Mini USB线缆将LAUNCHXL-F28377S LaunchPad板卡和PC机连接,可以看看是否自动完成仿真器驱动的安装,如果没有可以选择手动安装,将驱动的查找目录指定到TI\ccsv6\ccs_base\emulation\drivers\ftdi_drivers下,即可完成仿真器驱动的安装。
安装完成后在资源管理器中可以看到TI XDS100串行设备和USB转串设备,具体显示如下图所示。
[!--empirenews.page--]
4.3 遇到错误及解决办法
在实际连接使用过程中可能遇到如下图所示的错误,解决办法是将资源管理器中USB转串的通用COM口强制改为COM65,波特率为9600,再次连接将不会出现类似错误。
具体方法为打开COM口属性,选择高级属性。
COM端口号选为COM65,点击确定。
在目标板和CCS首次连接过程中,可能会进行一些配置,如果正常通讯了可以看看LaunchPad板上仿真器部分电路的LED灯D7开始闪烁,说明上位机软件已经和板载仿真器开始通信。
个人在完成驱动等安装之后,使用CCSv6.1.1进行Debug时遇到了如下图所示错误,可以看出是TI XDS510驱动的问题,最后还是没能解决,最后选择安装CCSv6.1.0直接连接没有遇到类似问题。
注:如果打开CCS找不到2837xS Delfino系列,说明CCS版本太低,建议安装更高版本。
4.4 controlSUITE安装
controlSUITE是一套基于C2000微控制器的必备软件和工具,此工具完全免费,主要是用来缩短软件开发周期,里面有很多EVM板的详细资料和例程供参考设计使用,其最大的缺点是不能自动升级更新,所以建议使用者下载最新版的进行安装。
如下图所示,安装后最长使用的是development_kits和device_support,前者针对TI的一些EVM开发套件;后者是C2000系列的支持库,里面主要包括目前主要的系列,如F2837xS系列。进入F2837xS系列我们可以看到主要包括文档(doc),通用文件(F2837xS_common),单核例程(F2837xS_examples_Cpu1)和头文件(F2837xS_headers),后面将进行的工程演示主要借助通用文件和头文件进行。
5 CCS工程新建
1) 启动CCSv6软件,选择File—>New—> CCS Project,Target选择2837xS Delfino,目标器件选择F28377S LaunchPad板上核心器件TMS320F28377S,需要注意的是如果CCS版本比较低,可能就找不到目标器件型号,建议安装最新版CCS;Connection选择板载仿真器XDS100v2 USB Debug Probe;给工程命名(英文)如gpio,选择工程路径Location;最后选择一个空的工程(Empty Project),点击Finish。
2) 工程新建完成后,gpio工程下Includes将包括了编译器自带的各种通用头文件,如"string.h"等,但不是MCU的头文件,MCU的相关头文件后面将会讲解如何添加或指定搜索路径;同时在新建完成后工程经会自动生成28377S_FLASH_lnk.cmd文件,后面可以根据自己的需要修改CMD文件。
3) 接下来进行工程特性的配置,基于工程名gpio右击选择“Properties”,首先进行“Include Options”配置,也就是借助controlSUITE提供的各个系列型号的头文件等资源指定到当前工程中来,这样编译调用的时候将会根据指定路径自动查找;根据自己安装的controlSUITE工具路径分别指定到F2837xS_common\include和F2837xS_headers\include下;如果不想基于controlSUITE,就需要你有自己工程中将使用的所有头文件直接添加到工程下或指定到自己存放的路径。
4) 预定义设置,TMS320F28377S为单核,如下图所示方法增加Pre-define命名为"CPU1",这样确保头文件等在调用编译时能正确的选择CPU。
5) 设置文件搜索路径,主要设置库文件和CMD文件输入名称和对应的搜索路径,搜索路径为F2837xS_common\cmd和F2837xS_headers\cmd,同时也可以将自己需要的库文件和cmd文件直接添加到工程目录或指定到自己存放的目录下。
[!--empirenews.page--]
6) 在C2000 Linker Advanced Options下设置程序入口为code_start。
7) 按照上面的方式设置完成,点击“OK”确定,设置中增加的Include路径在工程中都将体现出来。接下来我们需要添加一些TI提供的源文件用于GPIO的配置和工程的运行,在工程中右击选择“Add files..”,按照下面路径添加需要的源文件:
n F2837xS_common\source\ F2837xS_CodeStartBranch.asm
n F2837xS_common\source\ F2837xS_usDelay.asm
n F2837xS_common\source\ F2837xS_SysCtrl.c
n F2837xS_common\source\ F2837xS_Gpio.c
n F2837xS_headers\source\ F2837xS_GlobalVariableDefs.c
最好选择Copy files将文件拷贝到工程目录下来,这样在我们做相关修改或工程拷贝比较方便。
添加完所需源文件后如下图所示。
8) 创建一个我们需要的源文件,在工程上右击选择New—>Source File,输入源文件名称,选择文件类型,选择“Finish”文件将自动创建并添加到当前工程中来。
9) 在新建的源文件中编写代码,如下面代码用来控制F28377S LaunchPad板卡上用户LED灯D10开始闪烁。
/*
* gpio.c
*
* Created on: 2015年12月25日
* Author: zhangmangui
*/
#include "F28x_Project.h"
void main(void)
{
uint32_t delay;
InitSysCtrl();
EALLOW;
GpioCtrlRegs.GPADIR.bit.GPIO13 = 1;
EDIS;
GPIO_SetupPinOptions(17, GPIO_OUTPUT, GPIO_PUSHPULL);
GPIO_SetupPinMux(17, GPIO_MUX_CPU1, 0);
GpioDataRegs.GPADAT.bit.GPIO13 = 1;
while(1)
{
GpioDataRegs.GPADAT.bit.GPIO13 = 0;
for(delay = 0;delay<2000000;delay++)
{
}
GpioDataRegs.GPADAT.bit.GPIO13 = 1;
for(delay = 0;delay<2000000;delay++)
{
}
}
}
上面程序中必须进行系统初始化InitSysCtrl();操作,在源文件F2837xS_SysCtrl.c中可以看到系统初始化函数源码,其中主要做了MCU所有外设时钟的使能和关断选择,看门狗的初始化,初始化系统锁相环等操作。非常重要的一点是在F2837xS_SysCtrl.c中看到了在Flash下进行代码搬移到RAM中运行的操作,这个在以前都是需要自己去写代码并配置完成的,配置过程中经常看到有网友会遇到各种问题,这下就方便多了,部分代码为:
#pragma CODE_SECTION(InitFlash_Bank0, "ramfuncs");
#pragma CODE_SECTION(InitFlash_Bank1, "ramfuncs");
#ifdef _FLASH
// Copy time critical code and Flash setup code to RAM
// This includes the following functions: InitFlash();
// The RamfuncsLoadStart, RamfuncsLoadSize, and RamfuncsRunStart
// symbols are created by the linker. Refer to the device .cmd file.
memcpy(&RamfuncsRunStart,&RamfuncsLoadStart,(size_t)&RamfuncsLoadSize);
// Call Flash Initialization to setup flash waitstates
// This function must reside in RAM
InitFlash_Bank0();
#endif
系统时钟配置如下:
InitSysPll(XTAL_OSC,IMULT_20,FMULT_1,PLLCLK_BY_2);
//PLLSYSCLK = 10Mhz(OSCCLK) * 40 (IMULT) * 1 (FMULT) / 2 (PLLCLK_BY_2)
10) 编译运行,Debug模式下将新建工程是自动生成的CMD移除工程,在Project下选择Build All(快捷键Ctrl+B)编译整个工程,如果没有错误,将会生成可执行文件gpio.out。
11) 开始CCS Debug。通过miniUSB线将目标板连接到计算机,确保驱动安装正确,设备管理器中并正确识别设备,然后选择菜单栏Run下面的Debug(快捷键F11)进入CCS Debug模式,如果XDS100v2仿真器识别并连接正常,将出现如下图所示界面,并且调试的各项工具都可以正常使用。点击Refume(F8)开始执行代码,可以观测到板上D10蓝色LED灯可以闪烁。可以选择Terminate(Ctrl+F2)结束Debug模式或选择Suspend(Alt+F8)挂起MCU。
6 代码烧写固化
代码需要固化,工程特性下的CMD文件肯定需要更换,即将2837xS_Generic_RAM_lnk.cmd更换为2837xS_Generic_FLASH_lnk.cmd,F2837xS_Headers_nonBIOS.cmd文件不需要变动。
[!--empirenews.page--]
在RAM里调试时用的两个CMD文件分别为2837xS_Generic_RAM_lnk.cmd和F2837xS_Headers_nonBIOS.cmd,烧写到flash里时用的两个CMD文件分别为2837xS_Generic_FLASH_lnk.cmd和F2837xS_Headers_nonBIOS.cmd,其中F2837xS_Headers_nonBIOS.cmd文件可以在所有工程文件中通用,主要作用是把外设寄存器产生的数据段映射到对应的存储空间,可以跟F2837xS_GlobalVariableDefs.c文件对照一下看看。
完成CMD文件更换之后,需要在工程特性下对Debug下Flash Settings进行设置,主要是设置系统时钟和分频等关系,具体设置如下图所示,设置完成后建议重新编译整个工程,最好选择Project下的Clean..进行整个工程的重新编译,编码如很多网友遇到的问题说自己代码明显做了修改编译后下载没有任何变化,这主要是没有选择Clean进行整个工程的重新编译造成下载的还是上次的可执行文件。
基于Flash的CMD编译没有错误之后,进行CCS Debug,这时软件将会对MCU内部的flash进行擦除、编写等操作,也就是代码固化的过程,这个过程非常重要,烧写过程中编码目标板的断电,仿真器的断开等操作都可能造成MCU的锁死或损坏,将无法再次使用。烧写完成后点击Refume(F8)将开始运行代码,用户LED灯D10开始闪烁,为了验证代码是否固化成功,我们可以断电再次上电看看有没有正确运行,如果LED灯正常闪烁,说明我们的代码已经固化到MCU内部Flash中,并且上电后自动引导并开始执行。
同时我们可以对比一下,相同的代码和时钟配置,在RAM中运行的效率和在Flash中运行的效率,据了解在Flash中运行的效率只是RAM中的70-80%,当然没有做过详细的验证,大家可以通过LED灯的闪烁频率目测一下。
注意:MCU的系统时钟在配置的时候不能超过200MHz,不然编译没有错误,但是烧写Flash时会报错。
7 总结
C2000 Delfino LaunchPad是一款价格低廉的评估套件,它为设计人员或入门学习者提供方便,无需单独供电电源和仿真器,只需mini USB线即可开始入门学习,评估套件设计文件和源代码都免费提供,可以快速实现产品的升级和更新换代。
C2000 Delfino LaunchPad板载单核F28377S微控制器,可在200MHz C28x CPU和200MHz实时协处理器(CLA)之间提供400MIPS的系统性能,同系列产品丰富,同时可以选择双核器件2837xD系列完成更高性能产品的设计。
总之,C2000 Delfino LaunchPad物美价廉,你值得拥有!