TI中文支持网
TI专业的中文技术问题咨询交流网站

TMS320F28379D: 程序烧写到主芯片的flash中,断电上电后,程序不能自己运行问题。

lu shiguang阅读(12)

Part Number:TMS320F28379D

根据手册,boot引脚GPIO72和GPIO84为高电平,程序烧写到主芯片的flash中,断电上电后,程序才能自己运行。

但是我硬件没有引出GPIO84引脚,不能将其配置为高电平了,引出了GPIO72,GPIO73,GPIO74引脚,请问怎样更改配置才能通过其它引脚代替GPIO84引脚功能,实现断电上电后,程序自己运行。

lu shiguang:

是不是可以通过更改BOOTCTRL寄存器,配置启动引脚,请问BOOTCTRL是在那个文件中更改的。

,

lu shiguang:

选择debug configureations ->target->flash settings->Z1-BOOTCTRL(0x7801E)(32bits)

将该寄存器值烧写为48490B5A,就可以配置成,GPIO72,GPIO73高电平,flash自启动了吧。

TMS320F28377D: EMIF

阅读(113)

Part Number:TMS320F28377D

注释(3)中32位接口指的是地址线还是数据线,还有注释(3)中的最后一句话是什么意思,为什么使用16位内存,最大内存大小会变为1M*16

Yale Li:

我已经咨询了相关工程师,请关注下方链接:

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1323067/tms320f28377d-emif

TMS320F280039C: VCRC 實現 CRC16 X25

Max Su阅读(8)

Part Number:TMS320F280039C

請問如何用VCRC 實現 CRC16 X25校驗

Yale Li:

我已经咨询了相关工程师,请关注下方链接:

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1322667/tms320f280039c-vcrc-implements-crc16-x25

TMS320F28388D: flash_kernel_c28x_cm_ex1_c28x1–The routine doesn't run

阅读(8)

Part Number:TMS320F28388D

Hello, everyone.

I am debugging the writing of CM kernel kernel of 28388D chip, the reference routine is: flash_kernel_c28x_cm_ex1_c28x1, I burn the routine to cpu1 core through JATG simulation interface, and then write the CM kernel txt format kernel file through SCIA according to the routine process, the process is roughly as follows: Send "A" for baud rate recognition, and then send the instruction, I sent is RESET_CPU1_LOAD_CM, this instruction first executes setBootModeForCM() function, set the BOOT state of CM core, and CM core starts to run from S0RAM. Device_bootCM function in the last while(SysCtl_isCMReset() == 0x1U) function, the execution of this function passed, does it mean that CM core has been started? When copyDataToCPU1ToCMMSGRAM() is executed, it will be stuck in the IPC_sync(IPC_CPU1_L_CM_R, IPC_FLAG1) function. First, IPC_SET of FLAG1 is set. Simulation when saw ,Cpu1toCmIpcRegs. CPU1TOCMIPCFLG. Bit. IPC1 already setting, but the program card in IPC_waitForFlag function, waiting for Cpu1toCmIpcRegs. CMTOCPU1IPCSTS. Bit. IPC1, This register should be in the S0RAM area of CM core and will be set when the boot runs, so is the CM core boot not running? What do I need to do to run the CM core bootstrap? The CM core BOOT status is shown as follows: ,The above operations are performed under cpu1 simulation.

Yale Li:

I already transferred this issue to the relevant engineer. Pls focus on the link below:

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1322663/tms320f28388d-flash_kernel_c28x_cm_ex1_c28x1–the-routine-doesn-t-run

TMS320F28388D: flash_kernel_c28x_cm_ex1_c28x1例程跑不通

阅读(9)

Part Number:TMS320F28388D

大家好:

我在调试28388D芯片的CM核kernel的写入,参考例程是:flash_kernel_c28x_cm_ex1_c28x1,我是通过JATG仿真接口将例程烧录到cpu1核中,然后通过SCIA按照例程流程写入CM核txt格式的kernel文件,流程大致为:发送“A”进行波特率识别,然后发送指令,我发送的是RESET_CPU1_LOAD_CM,该指令首先执行setBootModeForCM()函数,设置CM核的BOOT状态,且CM核从S0RAM开始运行,Device_bootCM函数中最后有while(SysCtl_isCMReset() == 0x1U)函数,此函数执行通过了,是不是代表了CM核已经启动了?执行到函数copyDataToCPU1ToCMMSGRAM()的时候,会卡在IPC_sync(IPC_CPU1_L_CM_R, IPC_FLAG1)这个函数里面,首先对IPC1的IPC_SET进行设置,仿真时看到了 Cpu1toCmIpcRegs.CPU1TOCMIPCFLG.bit.IPC1已经置位,但是程序卡在IPC_waitForFlag函数,在等待Cpu1toCmIpcRegs.CMTOCPU1IPCSTS.bit.IPC1,这个寄存器应该是CM核S0RAM区的引导程序跑起来后会置位,所以是不是CM核的引导程序没运行?我需要进行哪些操作才可以运行CM核引导程序?CM核BOOT状态如图: ,以上操作均是在cpu1仿真下进行的。

Yale Li:

https://e2echina.ti.com/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/800863/tms320f28388d-flash_kernel_c28x_cm_ex1_c28x1–the-routine-doesn-t-run 

TMS320F2800157: PWM死区时间设置的问题

John Pan阅读(8)

Part Number:TMS320F2800157

想在PWM的下降沿设置时区时间,设置PWM死区时间的代码如下

测试结果是,只在PWMB上看到了死区时间,但是在PWMA上没有看到死区时间(波形如下图),

请问是什么原因? 是我的代码有问题吗?

EPWM_setDeadBandCounterClock(PWM_BASE1,EPWM_DB_COUNTER_CLOCK_FULL_CYCLE);
        //EPWM_setRisingEdgeDelayCount(PWM_BASE1,pwm_dbred_ticks);
EPWM_setFallingEdgeDelayCount(PWM_BASE1,HBRIDGE_DEADBAND_PWM_COUNT);
EPWM_setDeadBandDelayMode(PWM_BASE1,EPWM_DB_RED,false);
EPWM_setDeadBandDelayMode(PWM_BASE1,EPWM_DB_FED,true);
       //EPWM_setRisingEdgeDeadBandDelayInput(PWM_BASE1,EPWM_DB_INPUT_EPWMA);
       //EPWM_setRisingEdgeDeadBandDelayInput(PWM_BASE1,EPWM_DB_INPUT_EPWMB);
EPWM_setFallingEdgeDeadBandDelayInput(PWM_BASE1,EPWM_DB_INPUT_EPWMA);
EPWM_setFallingEdgeDeadBandDelayInput(PWM_BASE1,EPWM_DB_INPUT_EPWMB);
       //EPWM_setDeadBandDelayPolarity(PWM_BASE1,EPWM_DB_RED,EPWM_DB_POLARITY_ACTIVE_HIGH);
EPWM_setDeadBandDelayPolarity(PWM_BASE1,EPWM_DB_FED,EPWM_DB_POLARITY_ACTIVE_HIGH);

John Pan:

我想要的效果是:

,

John Pan:

总结来说,就是PWMA和PWMB在下降沿时,死区时间都有效

,

Yale Li:

理解整个DB模块可能会更有帮助。

使用DB模块的时候,就看它的框图就可以了:

DB模块很简单,就是由两部分组成的,延时计数器和开关。

延时计数器用于检测上升(上面的)及下降沿(下面的)并通过延迟的方式增加死区;开关的作用是选择信号的路径,熟悉了之后会更加理解控制每个开关的寄存器名称的含义。

所以无论通过寄存器还是库函数的编程方式,本质就是控制这些开关以及延迟的时间。TRM中的各种名词反而把事情复杂化了。

结合本问题,两路是不可能同时使用下降沿延时的。实现的方式大致是A路输出使用A路输入、上升沿延时并反向,B路输出还是使用A路输入、下降沿延时:

也就是TRM P1367~1368中所说的Active Low Complementary (ALC):

https://www.ti.com.cn/cn/lit/ug/spruiy4a/spruiy4a.pdf 

TMS320F280039C: MCAN模块的bus-off问题咨询

阅读(9)

Part Number:TMS320F280039C

  CAN标准协议应该是错误计数器达到255才会认为进入bus-off状态。但我在测试时发现错误计数器的值为248时,bus-off标志位就置位了。请问280039的判断标准是有所不同吗?

Ben Qin:

你好,我查看一下相关资料后回复您。

TMS320F28377D: 如何修改sys/bios的clock tick 周期

Wei Junnan阅读(8)

Part Number:TMS320F28377D

Hi everyone!

clockParams.period = 4;/* every 4 Clock ticks */

我将任务的周期时设置为每4个clock tick运行一次,但实际测试发现任务是5ms运行一次,因此我反推一个clock tick周期为1.25ms,我想请问如何修clock tick的周期,使其一个clock tick周期为1ms或更低。

期待各位的解答。

Yale Li:

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/980126/minimum-tick-using-sys-bios-on-a-f28375d-delfino

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/984093/tms320f28335-sys-bios-tick-max-rate

,

Wei Junnan:

Thanks,Yale

,

Yale Li:

You're welcome

TMS320F28335: 调用Flash_Erase函数失败

Xie Chengyan阅读(6)

Part Number:TMS320F28335

使用CCS12.5,参照库里的程序f28335_flash_kernel,写了一个写Flash的函数:

#pragma CODE_SECTION(FlashLsrData, ".TI.ramfunc");
Uint16 FlashLsrData(){
// Make sure code security is disabled
Uint32 DestAddr = (Uint32)FLASH_SectorH_start;

lsrData.mLen = 1374;
lsrData.mData[0].wlength = 100;
lsrData.mData[0].lsDrv.PSA.val.LPram = 100;
lsrData.mData[0].lsDrv.PSA.val.RPram = 101;
lsrData.mData[0].lsDrv.WLR.val.LPram = 200;
lsrData.mData[0].lsDrv.WLR.val.RPram = 201;

lsrData.mData[1373].wlength = 16300;
lsrData.mData[1373].lsDrv.PSA.val.LPram = 16300;
lsrData.mData[1373].lsDrv.PSA.val.RPram = 16301;
lsrData.mData[1373].lsDrv.WLR.val.LPram = 16380;
lsrData.mData[1373].lsDrv.WLR.val.RPram = 16381;

CsmUnlock();
DINT;

EALLOW;
Flash_CPUScaleFactor = SCALE_FACTOR;
Flash_CallbackPtr = 0;
EDIS;

Uint16 status = Flash_Erase(SECTORH, &FlashStatus);
if(status == STATUS_SUCCESS){
status = Flash_Program((Uint16 *)DestAddr, (Uint16 *)&lsrData, sizeof(lsrData), &FlashStatus);
}

EINT;
return status;
}

如果程序在RAM中运行,可以正常执行 Flash_Erase函数,返回0,但是如果在Flash中执行,程序会一直卡在 Flash_Erase函数中,不往下执行。

请问该如何处理?

Xie Chengyan:

没有把Flash28335_API_V210.lib加到内存

TMS320F280039C: ePWM的Digital Compare(DC) Submodule使用问题

qijing zhang阅读(6)

Part Number:TMS320F280039C

你好!我在使用TMS320F280039C进行开发,参考的手册是《TMS320F28003x Real-Time Microcontrollers Technical Reference Manual》,在阅读ePWM这个章节的Digital Compare(DC) Submodule,我有两个疑问,见下图:

 

1、EPWM固有的TZ信号只有三个,但我的应用中有五个故障信号,所以我必须要使用DC + ePWM XBAR进行扩充。你这里的DCAH和DCAL有什么区别?为什么要称之为Digital Compare(数字比较器?),跟DCAH和DCAL的高低逻辑有关系吗?

2、我要使用Trip Combination Input,因为它是一个OR的逻辑,只要Trip1~Trip15有一个满足条件,那么就能生成DCxEVT事件,送到Trip-Zone子模块去。我的代码如下写,

红色部分的Trip4和Trip7,只要有一个满足条件,就应该能触发封波保护,实际中我把Trip7对应的GPIO50拉低,并没有触发保护。

但如果我把红色部分修改为如下,就能正常保护,我只保留了Trip7,请问这是为什么,它们不是OR逻辑吗?

 

Yale Li:

1. 以A路为例,后面的Event A Qual(事件A限定)的作用就是通过比较DCAH与DCAL,来得出DCAEVT1和DCAEVT2。

qijing zhang 说:这里的DCAH和DCAL有什么区别?

没有区别,只是逻辑上、或者说形式上的称呼。DCAH和DCAL都可以分别选择TRIP1~15或者TRIP1~15的或;

https://www.ti.com.cn/cn/lit/ug/spruiw9b/spruiw9b.pdf

qijing zhang 说:为什么要称之为Digital Compare(数字比较器?),

因为作为比较输入的DCAH和DCAL都是数字形式的,非0即1;事件限定的作用就是对这两个二进制的数字量做比较;

qijing zhang 说:跟DCAH和DCAL的高低逻辑有关系吗?

没有,参见上上一条引用回复;

2. 1或0还是1。

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1