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.

【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_FREQ   200U

//
// 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一下,解决这个问题。

  • 1 使用默认的跳线设置

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

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

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

    4 点击 test connection,测试成功

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

  • 请问您是否进行了测试?结果如何?
  • 如TI专家答复,JTAG测试通过。显示截图如下。

    问题解决。

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

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

    谢谢

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

    www.ti.com.cn/.../spruir3a.pdf
  • 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 GPIO6
        GPIO_writePin(6, 1);                            // Load output latch
        GPIO_setPinConfig(GPIO_6_GPIO6);                // GPIO6 = GPIO6
        GPIO_setDirectionMode(6, GPIO_DIR_MODE_OUT);    // GPIO6 = output

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

    GPIO_writePin(6, 1);      
    这样的函数实现的,
    // LEDs
    //
    #define DEVICE_GPIO_PIN_LED1        31U             // GPIO number for LED4
    #define DEVICE_GPIO_PIN_LED2        34U             // GPIO number for LED5
    #define DEVICE_GPIO_CFG_LED1        GPIO_31_GPIO31  // "pinConfig" for LED4
    #define DEVICE_GPIO_CFG_LED2        GPIO_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 微控制器数据表
    基于丰富的范例,开发的过程可以精准而又迅速。

    
    

  • 谢谢您的详细测评!