【原创】TI DSP开发中数据记录函数DataLog的解析
0赞在使用TI CCS进行DSP开发、调试时,最常用的调试方法众所周知,在要观察的变量处插入断点,然后运行到断点处,此时可以在ccs的watch window 里面查看断点的值。这种方法虽然简单,但是只能进一次断点刷新一次数据,并不方便;而且在一些实时性高的控制程序,如电机的定时控制中,插入断点将导致整个控制算法断开,产生不可预知的后果(如果未正确设置DSP的仿真挂起位的话)。
CCS的调试手段里有图形化的窗口,点击ccs开发环境的view—graph---time/frequency,就可以得到类似软件示波器的效果了。插入断点,然后使用ccs的动画运行模式(Animate),可以每次断点刷新一下屏幕,但是仍存在第一段中提到的问题。
为了在实时运行的程序里让这个图形窗口也实时刷新,可以在RAM中制定一段区域为缓冲区,将需要显示的数据保存在里面,并且定时更新,就能得到软件示波器的效果了。总结一下使用的步骤为(可以参考TI电机控制库里面的DATALOG,它默认使用16位定点数;当然也可以自己编写一个32位的):
1.制定一段固定大小的RAM为缓冲区,这个可以在cmd文件里面修改。以TMS320F28335为例,如
……
SECTIONS
{ ……
DLOG : > RAML1, PAGE = 0
……
}
2.以调用TI电机控制库里面的DATALOG为例,需要相应的
头文件:定义数据缓存更新的结构体,包括输入、输出、数据处理函数
源程序:主要是数据刷新函数的描述
以及主程序的例化、初始化参数以及调用。
3.为了达到实时刷新的效果,在实时调试时,在ccs里选择debug---realtime mode,然后在graph窗口上点击右键---realtime fresh,就可以将程序里的变量显示在这个“软件示波器”中了。赶紧试试吧!