Other Parts Discussed in Thread:C2000WARE, TMS320F28035
Ti的工程师您好,我的TMS320f28035芯片使用CLA后,程序掉电不保存,连基本的PWM发波也没有工作。现将我的问题描述如下,我的28035芯片程序是在导入c2000ware中的CLA例程序而来的,其步骤为:
Step1: 使用了F28035_CLA_C.CMD,发现在InitAdc()函数总是的跳至ILLEGAL_ISR。故需要将将函数从FLASH中拷贝到RAM中才能运行。
故首先在DSP2803x_Examples.h文件中开始部分加入以下一条语句
#pragma CODE_SECTION(DSP28x_usDelay, "ramfuncs");
然后再main里面再加以下语句:
其次,还要在main文件中添加一下申明:
注意,以上操作虽然已经确认了芯片CLA的程序已经可以工作,但是仍然会存在掉电无法恢复的情况。故又尝试着将
计算CLA task的偏移地址MVECTx的时候改用_Cla1funcsRunStart.
但是这样操作仍然不行 ,即不管将发固定占空比的程序放在主CPU,还是CLA,也不论是将程序下载至RAM 还是FLASH,程序都掉电不保存。
希望TI的工程师能够帮我解答下这个疑问,谢谢
user5997033:
注,我使用的CMD文件为:F28035_CLA_C.cmd。另外还有个现象是在保证供电的前提下,芯片的各种工作都是正常的,在Debug和下载在Flash中去工作,都没有问题
,
Green Deng:
不知道你使用的具体是哪个CLA例程?有3个疑问,memcpy之后为什么加了asm语句?CLA部分有没有需要memcpy的程序而没有copy的?未启用CLA的时候程序能否在flash中运行?
另外,C2000WARE中有专门用于CLA flash运行的例程:
C:\ti\c2000\C2000Ware_3_04_00_00\device_support\f2803x\examples\c28\cla_adc_fir_flash
,
user5997033:
感谢您的回复。我现在依次回答您的问题哈。1.我使用的例程为:C2000Ware_DigitalPower_SDK_3_01_00_00\c2000ware\device_support\f2803x\examples\cla\divide
2.memcpy之后加的asm语句,是我习惯运行完之后 给一点时间CPU处理时间 如果不用可以去掉
3.我现在CLA里面确实有不少函数,主要都是环路控制相关的 这些函数难道也需要搬到RAM中去?我怎么判断呢
4. 我刚刚尝试不初始化CLA(即不启用),直接在MAIN函数中的初始化PWM,发现掉电后,程序仍然会丢失。还是说我还需要重新使用其他的CMD文件呢?
最后,我再确定一下,28035这款芯片掉电程序丢失这个问题,确定是程序配置问题吧(即可通过CMD配置来解决)?不需要像我有一个朋友说,需要给28035芯片外置flash来解决吧?由于可能涉及到我们产品方案的定型,咨询下您。最后,感谢您的耐心解答。
,
Green Deng:
2、一般芯片上电复位初始化flash不需要等待的,当然,留时间也没什么问题。
3、具体要看什么函数,不过好像一般涉及到控制方面的对时序要求都比较高。不过根据你的回复4,似乎跟这个关系不大。程序固化的问题我可能需要点时间测试一下。
应该可以通过cmd或者程序配置来解决,F28035不需要外加flash,除非程序太大芯片本身的flash不够用。
,
user5997033:
感谢回复。另外需要注意的是,Ti这个28035芯片,使用CLA后,程序掉电不恢复问题不只是我一个人遇到哈。我在两个相关的技术交流群里面咨询过,有好几个同行都遇到。他们目前采用的解决方案通常是两种:1.外置FLASH 2.CMD配置优化。那如果不用外置FLASH的话,不知道CMD优化解决方案,不知道您那边能否协助我们解决下!我们公司产品亟待定型,定型后出货量还是挺大的。希望您能帮忙出点意见。非常感谢
,
user5997033:
您好,我这边刚刚有做了一个测试,即在您前面提到的:C2000WARE中有专门用于CLA flash运行的例程:device_support\f2803x\examples\c28\cla_adc_fir_flash中,配置一个简单的初始化EPWM2发波,也同样存在程序掉电不恢复的情况哈。
,
Green Deng:
对了,我看到你的程序中只是将delay_us部分代码搬运到flash中了。如果你的PWM是用中断形式产生的话,这部分也需要搬运到ram运行的。你可以再测试一下,如果还有问题的话再进行讨论
,
user5997033:
我尝试过PWM在中断 在CLA程序或者是在main函数中的初始化过程中赋值,PWM波形都会掉电丢失,意味着程序就没有运行。。。这个现象您那边应该可以很快复现,因为我也用了C2000WARE中有专门用于CLA flash运行的例程来做实验。即初始化中给PWM赋值,程序一样也会丢失的哈。
,
Green Deng:
好的,之后我会实际测试一下这个例程的运行情况。
我这边还是更倾向于配置问题,因为PWM是芯片的主要功能之一,不会有无法赋值的问题。
,
Green Deng:
另外,你这边方便上传一个简单的测试工程吗?我对比一下你的程序是否有问题。打包压缩之后可以在回帖的时候上传
,
user5997033:
项目工程文件
,
user5997033:
感谢您的回复。 我的基本例子程序已经上传,配置中程序使用的是 CAL task2 、task3 、task8。另外就是,我有同事说我这个问题是可能是我硬件boot mode selection配置错误。下图中的前面三列电平设置我已经明确是正确的了,但是后面EMU和OTP设置相关就不知道在哪设置了。您那边能否帮忙解答下呢
,
user5997033:
EMU设置应该是指JTAG接口上的上 EMU0和EMU电平设置吧?这两个已经拉高了
,
Green Deng:
boot模式如果你在程序中没有修改过的话,只要将引脚根据芯片datasheet中Table 6-1. Boot Mode Selection表格设置为GetMode模式就是用于flash启动的。后面的都是在OTP中修改的,一般都是默认设置,你没修改过就没问题。
www.ti.com.cn/…/tms320f28035.pdf
,
user5997033:
您好。我这边的问题可能真的是由于Boot设置错误导致的。经实测发现TDO引脚的电压可能不足,最开始只有2.3V,不是理论上的上拉电平3.3V。这可能是由于我的JTAG接口与芯片之间是经过一个下载小板连接导致的。然后调整了上拉电阻阻值后,电平有2.78V。程序下载进FLASH后,已经能够保存,即CLA里面的程序能够工作,但前提是我的下载器不能连接上电脑。如果是下载器连接着我的电脑同时又与芯片相连,再重启恢复供电的话,芯片发波的程序还是不能工作。第一次碰到这种奇怪的情况。。。。。不知道您的看法是什么?
,
Green Deng:
这个现象倒是提醒了我,你的电源系统是否可靠?因为理论上引脚的电压有2.3V的话是可以判定为高电平状态的,也就是说boot模式是可以判定的。但是如果电源不稳定的话芯片就很难启动了,有没有测试过电源引脚的电压,或者其他引脚有没有问题?
,
user5997033:
嗯 总之现在也大致指明了方向 是硬件参数,如供电 或者 Boot电平配置不稳定导致的。 感谢您的耐心回复哈!
,
user5997033:
嗯 总之现在也大致指明了方向 是硬件参数,如供电 或者 Boot电平配置不稳定导致的。 感谢您的耐心回复哈!
,
Green Deng:
客气了