TI中文支持网
TI专业的中文技术问题搜集分享网站

【TI测评报告】 TMDSCNCD280025C + TMDSHSECDOCK 套件评测之快速入手开发

Other Parts Discussed in Thread:TMDSHSECDOCK, TMDSCNCD280025C, C2000WARE, MSP430G2553

1、TMDSCNCD280025C + TMDSHSECDOCK 套件简介

1.1 TMDSCNCD280025C 是一款适用于 TI C2000™ MCU 系列 F28002x 器件的低成本评估和开发板。它附带一个 HSEC180(一种 180 引脚高速边缘连接器,用作 controlCARD),非常适合用于初始评估和原型设计。进行 TMDSCNCD280025C 评估时,需要一个 180 引脚集线站 TMDSHSECDOCK,这个dock把芯片的引脚全数引出,并有一个电压供电的接口。如果没有dock,就只能进行开发的演示和代码的测试,不能进入项目的开发过程。

主页超链接如下,

e2echina.ti.com/…/195513在

1.2 TMDSHSECDOCK引脚集线站,提供了以下三个功能,MCU关键信号的引接出线,自定义洞洞板区域可以直接焊接分立元件,USB或者外接5V供电接口。

1.3 使用开发板首先要仔细阅读下面的手册,

https://www.ti.com.cn/cn/lit/ug/spruir3a/spruir3a.pdf?ts=1608516487556&ref_url=https%253A%252F%252Fwww.ti.com.cn%252Ftool%252Fcn%252FTMDSCNCD280025C%253F_ticdt%253DMTYwODUxNjA1NnwwMTZmNTUwYjVkZjUwMDBlZWQ3NjJkNjc2NDRjMDMwNzIwMDEyMDZhMDA5M2N8R0ExLjIuMTk3NTMwMzM5NC4xNTc3Njc5ODA5fDA

最重要的是正确设定如下跳线

对照位置如下,

具体芯片参数参照

https://www.ti.com.cn/cn/lit/ds/sprsp45b/sprsp45b.pdf?ts=1608516674752&ref_url=https%253A%252F%252Fwww.ti.com.cn%252Ftool%252Fcn%252FTMDSCNCD280025C%253F_ticdt%253DMTYwODUxNjA1NnwwMTZmNTUwYjVkZjUwMDBlZWQ3NjJkNjc2NDRjMDMwNzIwMDEyMDZhMDA5M2N8R0ExLjIuMTk3NTMwMzM5NC4xNTc3Njc5ODA5fDA

作为DSP概念的鼻祖,运行在100MHz,具有128KB的Flashhe 24kB的RAM,提供浮点加速器FPU和数学计算加速器TMU,这款FM2800025C是入门级芯片,但是同样具备强大的功能。这款芯片一直是微波雷达的控制芯片的首选。其他的功能同样强大,12位3.45MSPS的ADC采样功能尤其出色,能够实现高性能的信号采集,搞个入门级的2M多通道示波器就用一块板子就可以搞定了。

其他还有适合于电机控制和电源控制的增强型ePWM功能,更是本芯片目前主打的特色。

2、开发环境和开发工具

2.1 采用TI芯片的众多好处之一就是CCS,一个强大的免费开发工具。因此,对应TI的芯片来说,第三方IDE如IAR等,都不是首选。同时还提供了CCS cloud的选项,此前用过,也开发了一些项目。不过,这次还想用的时候,发现google改了规矩了,所以的crx都要他的market上才能下载使用,要不就认为是不安全的插件。这样,TI agent就无法连接使用。

这样,就gooogle又帮助我们提供了一个卸载停用chrome的工具。总是搜集个人信息,还要云端备份我的各种密码就不说什么了,啊这。。。

果断下载安装CCS,访问https://www.ti.com/tool/CCSTUDIO,

下载安装无门槛,

启动程序,

显示创建的项目

2.2 配套提供了C2000ware,访问ti.com/tool/c2000ware,就可以直接下载,安装再CCS不同的目录,

3、专用库和例程

对应于开发的过程,需要导入的库都再C2000ware中,同时提供了PWM的传输控制例程,下面是main主循环的代码

// Included Files
//
#include "driverlib.h"
#include "device.h"

//
// Example configuration parameters
//
#define BIT_RESOLUTION 11
#define PWM_FREQ200U

//
// Globals
//
float32_t offset = 0.00016f;
float32_t duty_offset = 0.0f;
volatile float32_t duty_output = 0.0f, duty_output_minus_offset = 0.0f, dig_value_output_norm = 0.0f;
volatile uint16_t dig_value_output = 0, dig_output_buff[500] = {0}, count = 0;
volatile uint32_t cap1Count = 0, cap2Count = 0, cap3Count = 0;
volatile uint32_t absCountOn1 = 0, absCountPeriod1 = 0, ecapIntCalCount = 0;

//
// Function Prototypes
//
void initGPIO(void);
void configECAP(void);
__interrupt void ecap6ISR(void);

//
// Main
//
void main(void)
{//// Initialize device clock and peripherals//Device_init();//// Disable pin locks and enable internal pull-ups.//Device_initGPIO();//// Initialize PIE and clear PIE registers.//Interrupt_initModule();//// Initialize the PIE vector table with pointers to the shell Interrupt// Service Routines (ISR).//Interrupt_initVectorTable();//// Initialize GPIOs for ECAP//initGPIO();//// Interrupts that are used in this example are re-mapped to ISR functions// found within this file.//Interrupt_register(INT_ECAP6, &ecap6ISR);//// Configure eCAP//configECAP();//// Configure HRCAP//HRCAP_enableHighResolutionClock(HRCAP6_BASE);//// Add small delay for HRCLK to start//__asm(" RPT #25 || NOP");//// Enable high resolution capture//HRCAP_enableHighResolution(HRCAP6_BASE);//// Calculating the offset in duty based on the offset value// at 100 Khz//duty_offset = offset * ((float)PWM_FREQ / 100.0f);//// Enable interrupts ECAP interrupt//Interrupt_enable(INT_ECAP6);//// Enable Global Interrupt (INTM) and realtime interrupt (DBGM)//EINT;ERTM;while(1){} // end infinite for loop
}

可以看到如何引入库,使用GPIO初始化和对应控制的,其他的项目都可以按照这个来执行和开发,上手很快,逻辑也很清楚。

4、上电测试和连接

4.1 项目的开发从创建新项目开始,

再测试以前,先拿MSP430G2553搞一个电灯,

#include <msp430.h>				


/**
 * blink.c
 */
void main(void)
{
	WDTCTL = WDTPW | WDTHOLD;		// stop watchdog timer
	P1DIR |= 0x01;					// configure P1.0 as output

	volatile unsigned int i;		// volatile to prevent optimization

	while(1)
	{
		P1OUT ^= 0x01;				// toggle P1.0
		for(i=50000; i>0; i--);// delay
	}
}

下载和运行正确。

4.2 使用F2800025C,创建项目

这个过程很顺利,

按照手册的指引,需要用XD100v2的USB UART emulator模拟器下载。

代码创建以及编译都可以通过,多次下载都没有成功。

于是测试以下,再创建页面有一个verify.,不过,结果是这样滴,

经过再次确认跳线和引脚位置

很清楚地可以看到跳线是出厂设置,同时可以清晰地看到PCB清洁整齐,反面就更干净简单了,不上图了。

所以,所以,串口芯片正确识别但是找不到hardware,就是连不上芯片。

刚上手,就初步确认这个板子挂了。

5、Summary

从芯片的参数了解和板子的开发来看,这个板子是超级强大滴,开发也是非常流畅的。资源充分。只是做了一个最快评测。希望能尽快beduge一下,解决这个问题。

Susan Yang:

1 使用默认的跳线设置

2 TMDSCNCD280025C + TMDSHSECDOCK 的话,2者的USB口均连接到电脑(2根USB线)

3 CCS内导入例程,路径:C2000Ware_3_03_00_00\device_support\f28002x\examples\led

找到下图内的文件,并检查一下配置

4 点击 test connection,测试成功

请您完全按照上面的步骤测试一遍,哪一步若是出现了问题,请给出截图,谢谢

,

Susan Yang:

请问您是否进行了测试?结果如何?

,

user3625209:

如TI专家答复,JTAG测试通过。显示截图如下。

问题解决。

那么就是评估板供电电压不足,不能单独flash。必须用dock板才可以的。

建议在手册中更新这个faq。

谢谢

,

Susan Yang:

谢谢您的反馈。您可以看一下下面文档的2 Hardware Quick Setup Guide 以及 4.3 Using the controlCARD

www.ti.com.cn/…/spruir3a.pdf

,

user3625209:

1. 在开发环境搭建完成并测试之后,就可以使用C2000ware进行开发了。使用导入功能导入c2000ware目录下的example,根据项目选定需要使用的功能导入,以LED为例,导入如下,

本次导入ADC和GPIO目录下的文件

2、编译和下载

     选择指定工程为当前活动目录active,然后点击build,开始编译。范例程序都经过测试,所以,很快就编译完成,提出的代码优化建议是因为后续有TI的优化软件和程序开发导则,可以更好提高效率。

随后点击下载,download,就可以把代码下载到开发板了,详情可以在下图找到,

3 范例程序分析

3.1 GPIO部分

和通常的GPIO设定一样,GPIO需要初始化,设定时钟,使能中断,

Device_init();

Interrupt_initModule();

Interrupt_initVectorTable();

setup1GPIO();

对应把GPIO6设定为high的步骤为

 //// Enable a GPIO output on GPIO6, set it high//GPIO_setPadConfig(6, GPIO_PIN_TYPE_PULLUP);// Enable pullup on GPIO6GPIO_writePin(6, 1);// Load output latchGPIO_setPinConfig(GPIO_6_GPIO6);// GPIO6 = GPIO6GPIO_setDirectionMode(6, GPIO_DIR_MODE_OUT);// GPIO6 = output

设定完成,初始化之后,赋值是采用

GPIO_writePin(6, 1);这样的函数实现的,
// LEDs
//
#define DEVICE_GPIO_PIN_LED131U// GPIO number for LED4
#define DEVICE_GPIO_PIN_LED234U// GPIO number for LED5
#define DEVICE_GPIO_CFG_LED1GPIO_31_GPIO31// "pinConfig" for LED4
#define DEVICE_GPIO_CFG_LED2GPIO_34_GPIO34// "pinConfig" for LED5

外部接口是在31U引脚编号上实现。

对应于引脚的编号在现有的文档中没有找到,不过可以通过DOCK上的编号对照使用。在LED中,板载的led定义为DEVICE_GPIO_PIN_LED1,具体编号在device.h中体现3.2 ADC的实现同样需要先开发板初始化,
Device_init();Device_initGPIO();Interrupt_initModule();Interrupt_initVectorTable();Interrupt_register(INT_ADCC1, &adcC1ISR);initADC();initEPWM();initADCSOC();ASysCtl_enableTemperatureSensor();DEVICE_DELAY_US(500);Interrupt_enable(INT_ADCC1);EINT;ERTM;
然后ADC初始化
ADC_setVREF(ADCC_BASE, ADC_REFERENCE_EXTERNAL, ADC_REFERENCE_3_3V);ADC_setPrescaler(ADCC_BASE, ADC_CLK_DIV_4_0);ADC_setInterruptPulseMode(ADCC_BASE, ADC_PULSE_END_OF_CONV);ADC_enableConverter(ADCC_BASE);DEVICE_DELAY_US(1000);

根据资料,ADC采样速率可以达到3M以上,是高速的ADC采样工具,集中体现了TI在模拟领域的优势。

读取ADC参数就比较简单了,可以用以下的函数快速实现

 sensorSample = ADC_readResult(ADCCRESULT_BASE, ADC_SOC_NUMBER0);sensorTemp = ADC_getTemperatureC(sensorSample, 3.3f);上面还把读取的参数转换了成了十进制的实数温度值。4. 其他的范例程序,都可以参照这个过程逐个分析。具体的函数流程,其实和数据手册中的读取描述是相同的,具体参见有关TMS320F28002x 微控制器数据表。
基于丰富的范例,开发的过程可以精准而又迅速。

,

Susan Yang:

谢谢您的详细测评!

赞(0)
未经允许不得转载:TI中文支持网 » 【TI测评报告】 TMDSCNCD280025C + TMDSHSECDOCK 套件评测之快速入手开发
分享到: 更多 (0)