1.仿真M3的时候,M3的1个IO显示周期200ms(100ms翻转一次),C28没有跑起来(通过示波器挂C28的1个IO,无波形),退出仿真后再上电,M3的IO显示周期200ms,C28的IO显示周期950ms.
2.仿真C28的时候,C28的IO显示周期420ms,M3的IO显示周期400ms,退出仿真后再上电,C28的IO显示周期950ms,M3的IO显示周期200ms.
不知道我表达清楚没有,情况就是这样子,专家帮我分析下怎么跑的周期都不一样?
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.
1.仿真M3的时候,M3的1个IO显示周期200ms(100ms翻转一次),C28没有跑起来(通过示波器挂C28的1个IO,无波形),退出仿真后再上电,M3的IO显示周期200ms,C28的IO显示周期950ms.
2.仿真C28的时候,C28的IO显示周期420ms,M3的IO显示周期400ms,退出仿真后再上电,C28的IO显示周期950ms,M3的IO显示周期200ms.
不知道我表达清楚没有,情况就是这样子,专家帮我分析下怎么跑的周期都不一样?
楼主你好,
请问仿真时,程序是跑在FLASH还是RAM?
有没有使用MEMCOPY和Initflash函数?
如果方便的话,可以将你的项目以附件的形式贴上来看一下!
仿真时程序跑FLASH里。MEMCOPY和Initflash函数没用,我用汇编写的代码,不方便贴出来。你分析是仿真时跑RAM,重新上电后跑FLASH?
您的问题是“帮我分析下怎么跑的周期都不一样?”
仿真运行和实际运行是不应该有区别的。能够影响仿真的,只有GEL文件,因为GEL文件可以修改芯片的寄存器。
如果去掉了GEL文件还有问题,那我猜测原因如下:
仿真的时候:烧写芯片-->运行了FLASH API-->Flash API修改了相关的FLASH控制寄存器,比如M3侧的FRDCNTL寄存器-->没有复位芯片直接RUN-->FRDCNTL寄存器的值没有修改
另一种情况:芯片上电复位-->FRDCNTL寄存器复位到默认值-->程序在FLASH中运行速度受寄存器配置影响有不同,真实结果,以复位芯片后的运行结果为准
Flash Read Interface Control Register (FRD_INTF_CTRL)
这个寄存器程序中设置值=1后仿真时显示还是=0,手动改写值也不行,为啥