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.

关于TMS28069M的问题

Other Parts Discussed in Thread: CONTROLSUITE, MOTORWARE

使用普通的闪灯程序例程可以点亮或闪烁LED灯,接在GPIO37脚上。C:\ti\controlSUITE\device_support\f2806x\v135\F2806x_examples\timed_led_blink

目前想利用proj_lab12a来识别转动惯量,但motorware_1_01_00_18里面提供的例程居然无法闪烁我的LED灯,不但无法闪烁,连点亮都无法成功。C:\ti\motorware\motorware_1_01_00_18\sw\solutions\instaspin_motion\boards\hvkit_rev1p1\f28x\f2806xM\projects\ccs\proj_lab12a

请教是下怎么回事,PCB板是正常的,28069M的DSP感觉也是正常的,怀疑是motorware里面的工程有问题,但不知道是什么原因。

//这个是proj_lab12a的例程,屏蔽了其它,这里只拉低GPIO来点亮LED灯,但无法成功

void main(void)
{
uint_least8_t estNumber = 0;

///*
HAL_Obj *obj = (HAL_Obj *)halHandle;
EALLOW;
GPIO_setMode(obj->gpioHandle,GPIO_Number_37,GPIO_37_Mode_JTAG_TDO);
GPIO_setDirection(obj->gpioHandle,GPIO_Number_37,GPIO_Direction_Output);//设计方向为输出
obj->gpioHandle->GPBCLEAR = (uint32_t)1 << (GPIO_Number_37 - GPIO_Number_32);
EDIS;
{
//HAL_setGpioLow(halHandle,GPIO_Number_37);

}
}

//下面这个是普通controlsuitej里面的例程,能点亮LED灯

void main(void)
{
///*
EALLOW;
GpioCtrlRegs.GPBMUX1.bit.GPIO37 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO37 = 1;
EDIS;
GpioDataRegs.GPBCLEAR.bit.GPIO37 = 1;
}

  • Hi,您试下下面的配置:

    GPIO_setPullUp(myGpio, GPIO_Number_37, GPIO_PullUp_Enable);
    GPIO_setHigh(myGpio, GPIO_Number_37);
    GPIO_setMode(myGpio, GPIO_Number_37, GPIO_37_Mode_GeneralPurpose);
    GPIO_setDirection(myGpio, GPIO_Number_37, GPIO_Direction_Output);

  • 依然点不亮啊,设置模式时,只有GPIO_37_Mode_JTAG_TDO,它也是0相当GeneralPurpose。proj_lab12a是一个很强大的工程,它中断直接有闪灯程序,只是闪不了,我才屏蔽了全部程序,只在初始化那里尝试拉低GPIO37点亮。我使用28027F的例程可以正常操作我另一块板子啊闪灯转电机都完全正常的。我严重怀疑是proj_lab12a调用了什么链接或者编译了什么库导致28069M根本没工作,我用普通的TI例程不带M的那些例程,是完全能闪灯或者只点亮灯的,很困惑啊。

    对于28069M这个芯片,不带M的TI例程是可以点亮或者闪LED灯的,带M的例程完全没反应,编译没报错。例程是官网下载的,新版本是motorware_1_01_00_18

    前一个版本motorware_1_01_00_17直接编译proj_lab12a居然还会报错,在hal.h那里存在很明显的错误导致编译出错,新版本motorware_1_01_00_18修正了,编译不报错了,但没运行。

    GPIO_37_Mode_JTAG_TDO=0, //!< Denotes a JTAG_TDO function
    GPIO_37_Mode_Rsvd_1, //!< Denotes a reserved function
    GPIO_37_Mode_Rsvd_2, //!< Denotes a reserved function
    GPIO_37_Mode_Rsvd_3, //!< Denotes a reserved function

    void main(void)
    {
    ///*
    HAL_Obj *obj = (HAL_Obj *)halHandle;
    EALLOW;
    GPIO_setPullup(obj->gpioHandle,GPIO_Number_37,GPIO_Pullup_Enable);
    GPIO_setMode(obj->gpioHandle,GPIO_Number_37,GPIO_37_Mode_JTAG_TDO);//GPIO_37_Mode_JTAG_TDO=0
    GPIO_setDirection(obj->gpioHandle,GPIO_Number_37,GPIO_Direction_Output);//设计方向为输出
    EDIS;
    HAL_setGpioLow(halHandle,GPIO_Number_37);
    /*
    GPIO_setPullUp(myGpio, GPIO_Number_37, GPIO_PullUp_Enable);
    GPIO_setHigh(myGpio, GPIO_Number_37);
    GPIO_setMode(myGpio, GPIO_Number_37, GPIO_37_Mode_GeneralPurpose);
    GPIO_setDirection(myGpio, GPIO_Number_37, GPIO_Direction_Output);
    */
    }

  • 没有GPIO_37_Mode_GeneralPurpose枚举定义。

    您在测试的时候,JTAG接口的TRST信号是什么电平的?如果是高电平,功能是JTAG TDO,没法用过GPIO。

    所以,建议您将仿真器拿下来,然后测一下TRST电平,如果低电平,看一下有没有反转。

  • 我们没有用JTAG下载程序,JTAG当普通IO使用。我们使用SCI下载程序。28027F只的定义也是这样。是枚举GPIO_37_Mode_GeneralPurpose,但它枚举了GPIO_37_Mode_JTAG_TDO=0,效果应该是一样的。我有个项目是用28027F,同样是GPIO37,同样是JTAG_TDO,同样写法,它是能点亮和按某种频率闪烁的哦。你说的测试下TRST电平,可以测一下,但感觉不是它影响的。

  •  TRST是接到GND上去的。我们的原理图

  • 您好!是下拉的!

    您比较下两种配置下的寄存器是不是一样的。

  • 我邮箱是lhrace@163.com。能否你帮忙编译一个.hex给我,我下载进去看看。我现在已经没招了,我只觉得是lab12a不单是它,instaspin_motion编译出来的.hex都无法点亮灯了。我灯接到GPIO37脚上。GPIO16,GPIO17,GPIO18是我的普通IO输出脚,你也顺便把它们都拉低,我到时再量一下。我这边编译下载进去的都无结果了。谢谢

  • 验证1、C:\ti\controlSUITE\device_support\f2806x\v135\F2806x_examples\timed_led_blink  

    使用上面的普通工程,不带M的工程,我们除了GPIO37是接到LED灯上,GPIO16,17,18是通用输出,编译了下面的程序 ,写进去,验证是正确的,GPIO16,17,18,37都能拉低。

    void main(void)
    {
    ///*
    EALLOW;
    GpioCtrlRegs.GPBMUX1.bit.GPIO37 = 0;
    GpioCtrlRegs.GPBDIR.bit.GPIO37 = 1;

    GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 0;
    GpioCtrlRegs.GPADIR.bit.GPIO16 = 1;
    GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 0;
    GpioCtrlRegs.GPADIR.bit.GPIO17 = 1;
    GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 0;
    GpioCtrlRegs.GPADIR.bit.GPIO18 = 1;

    EDIS;
    GpioDataRegs.GPBCLEAR.bit.GPIO37 = 1;
    GpioDataRegs.GPASET.bit.GPIO16 = 1;
    GpioDataRegs.GPASET.bit.GPIO17 = 1;
    GpioDataRegs.GPASET.bit.GPIO18 = 1;
    }

    验证2、c:\ti\motorware\motorware_1_01_00_18\sw\solutions\instaspin_motion\boards\hvkit_rev1p1\f28x\f2806xM\projects\ccs\proj_lab12a

    验证2 是一个GPIO都没有被拉低,拉低方法没错的,我在28027F上面也是这样子拉低的是没问题的。但这个28069M的工程proj_lab12a却不行,proj_lab5C,proj_lab6A也不行,我现在已经没办法了。

    void main(void)
    {
    ///*
    HAL_Obj *obj = (HAL_Obj *)halHandle;
    EALLOW;
    GPIO_setPullup(obj->gpioHandle,GPIO_Number_37,GPIO_Pullup_Enable);
    GPIO_setMode(obj->gpioHandle,GPIO_Number_37,GPIO_37_Mode_JTAG_TDO);//GPIO_37_Mode_JTAG_TDO=0
    GPIO_setDirection(obj->gpioHandle,GPIO_Number_37,GPIO_Direction_Output);//设计方向为输出


    GPIO_setMode(obj->gpioHandle,GPIO_Number_16,GPIO_16_Mode_GeneralPurpose);//
    GPIO_setDirection(obj->gpioHandle,GPIO_Number_16,GPIO_Direction_Output);//设计方向为输出

    GPIO_setMode(obj->gpioHandle,GPIO_Number_17,GPIO_17_Mode_GeneralPurpose);//
    GPIO_setDirection(obj->gpioHandle,GPIO_Number_17,GPIO_Direction_Output);//设计方向为输出

    GPIO_setMode(obj->gpioHandle,GPIO_Number_18,GPIO_18_Mode_GeneralPurpose);//
    GPIO_setDirection(obj->gpioHandle,GPIO_Number_18,GPIO_Direction_Output);//设计方向为输出

    EDIS;

    HAL_setGpioLow(halHandle,GPIO_Number_37);

    HAL_setGpioLow(halHandle,GPIO_Number_16);
    HAL_setGpioLow(halHandle,GPIO_Number_17);
    HAL_setGpioLow(halHandle,GPIO_Number_18);

    }

    28069M的芯片

    希望能在instaspin_motion里面的工程proj_lab12a或者其它工程,编译一个拉低GPIO16,17,18,37的程序,然后给我一个.hex下载进去看看,究竟是我的Code Composer Studio 6.2.0,Compiler version  TI v15.12.3.LTS的问题还是什么问题。

    我邮箱:lhrace@163.com

    多谢

  • 如果你们编译过来的.hex下载进去都无法拉低GPIO16,17,18,37。我只能怀疑这片28069M是假的了,只是贴了带M的字样而已。如果真是这样子到时再申请换一片28069M试试