MCU:TMS320F28069PZT
平台:CCS6.1
问题:使用Sci串口进行通讯,flash模式下在线调试皆正常,掉电重启后,sci无法进入中断,其它工作正常;
可能出现问题的原因:
1、cmd文件:
使用Controlsuit中的F28069.cmd,FlashA区不够大将FLASHB原地址0x3F0000~0x3F4000抽取了0x002000个字节给FLASHA;
2、已将所有isr中断使用CODE_SECTION(xxx_isr, "ramfuncs"); 声明,同时在main函数前声明
extern Uint16 RamfuncsLoadStart;
extern Uint16 RamfuncsLoadEnd;
extern Uint16 RamfuncsRunStart;
extern Uint16 RamfuncsLoadSize;
3、BOOT相关管脚已用拨码器置位选择GetMode即Flash运行;
4、在调试时偶尔会出现SCIRXST置位0x00B2或0x00B0的情况;
在翻阅咱们论坛的文章,有如下两个回答:
(1)
跑不起了,copy在ram里程序 执行时间不对, 不是代码逻辑的问题,
搞定了,主要是 注意 copy到ram的函数 相应调用的子函数 要靠考虑效率, 小的函数用 static lnline 声明, 大的函数 也同样 段声明 CODE_SECTION(cpu_timer0_isr, "ramfuncs");
然后运行时间就对了
这个回答完全没看懂,static inline应该如何使用?在以前的项目从来没有用过。。。。
(2)My guess is that you are resetting the device in the middle of a frame causing a framing error(FE bit 3 of SCIRXST).You should check if any bits are set in this register and recover from that condition.
两个标志位,SCI break-detect flag这个标志位我猜应该是因为通讯的波特率不稳的原因,28069SCI使用90M配置出9600Hz,观察波形高低电频皆为104us,而接收的波形为高电平108us低电平102us,造成了这个标志位置位;
FE标志位如上所述是否应该理解为中断处理代码过多,造成下一个字节的传输已经过来了而我这边中断函数还没有跑完没有将中断清零?
问题有点乱有点杂,请教下论坛大神和TI支持帮忙解答下,谢谢!