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.

TMS320F28335: 程序在运行的时候,修改了代码再重新烧写,此时原先运行的程序输出pwm波会同步暂停吗?

Part Number: TMS320F28335

今天做开关电源实验,管子炸了。

后来分析,感觉和重新烧写程序的时候没有掉强电有关系,但不确定,想请教下。

首先上强电并把程序烧写到FLASH后,可以正常运行。

在运行的过程中,发现程序有个地方可以优化下,于是修改了程序(此时原来的程序还在运行着)

随后,我没有掉强电,直接重新烧写了程序,结果刚开始烧写,管子就炸了。

本来以为是烧写程序后原来的程序就会自动停止运行,并同步把所有pwm输出波形同步设置为低电平。但现在看来不是这样?

想请问下这个重新烧写过程中,pwm波的输出会如何变化呢?

  • Hi,

    本来以为是烧写程序后原来的程序就会自动停止运行,并同步把所有pwm输出波形同步设置为低电平。

    擦除并烧写的时候程序自然会停止运行,但是您的外设已经被配置好了,和您代码的运行情况不相关,所以外设会继续运行,pwm会继续输出,直到代码烧写完成,器件被复位,所有的外设寄存器也会被复位到初始状态。

  • 感谢专家的解释。

    但昨天实验又出了一个新的现象。

    如下图1,是程序正在运行时,重新烧写新的程序,此时从示波器可以看到pwm波形还在正常输出,此时ccs处于configurating debugger

    但是当这个configurating debugger走完后,进入图2状态,从示波器可以看到此时的pwm波形停止了发波(桥臂pwm信号一高一低,且多次实验发现高低的pwm引脚是随机的,即有时候pwm_h是高电平、pwm_l是低电平,有的时候互换电平)

    很奇怪的是,这个电平是由谁决定的呢?按照专家的解释,我理解是应该程序load完成后才会停止发波,并置为初始状态,但是现在程序才刚完成了configurating debugger,甚至还没有进入erase和load状态,输出的pwm波形就发生了改变呢?而且不是预想中的都是低电平。

  • Hi,

    configurating debugger就是配置调试要用到的一些东西。调试器和目标器件里有一些与调试相关的部分、寄存器。目标器件在这个过程中的行为是难以预料的。

    您为什么要研究这个过程呢?

  • 感谢您的回复。

    我最近的试验中,使用H桥来控制变压器,将程序烧写到FLASH中。

    因此当插上仿真器、给DSP板上电后,就会自动运行程序。等程序已经正常运行后,我想烧写程序进入仿真运行模式,以便用CCS窗口来观察变量。

    但这时就会出现H桥输出电平一高一低的情况,一旦出现高电平,由于负载是变压器,也就是导线,就会出现断路烧坏管子的情况。

    所以才需要对这块进行分析。

    麻烦想专家再请教下:

    1.按照前面的说法,程序正常运行时PWM有输出,重新烧写程序的过程中(CCS还未到Load Program这一步),PWM就变成个恒定的高或者低电平。那么待程序Load完成后,PWM输出信号是不是应该恢复到默认的高阻状态呢?但实际中PWM变成恒高或者恒低的电平后,即使程序完成了Load,输出PWM电平也依然没有变化,仍是一高一低。这是为什么呢?

    在完成Load之前,PWM是由外设模块产生的,这个过程中为啥外设模块产生的PWM会变成恒定呢?

    2.程序是烧写进入FLASH的。如何在这种情况下,设置如果连接了仿真器DSP上电后程序不自动运行,不接入仿真器那DSP供电后程序自动运行呢?虽然可以通过在调试的时候通过把程序烧写到RAM来实现,但这样还得来回切换存储在RAM还是FLASH。想试试能不能直接在烧写到FLASH的前提下实现想要的根据是否插入仿真器来决定程序要不要运行?

    谢谢专家的指教。

  • Hi,

    1. 程序烧写的过程中器件的行为是难以预料的。强烈建议实验设备在实验过程中应该遵循严格的上下电时序,以避免这种不可预料的行为对实验设备造成影响;

    2. 不可以。