第二种缺贺可能:CMD文件已加载,但正扮樱CMD文件编写有问题,存储器配置、定位不正确举丛
第三种可能:用C语言编写的DSP程序,C初始化设置错误。
asm文件是汇编程序文件唤粗橘,现在的DSP编程一般是用C语言,因此如果没有特殊需求就不用写asm,有些TI提供的ASM可以直接拿来用。cmd文件凳镇是存储器配置文和团件,开发板提供的CMD文件一般只用来仿真,这个文件是需要根据你的应用来修改的,可以加入外部存储器,或将某个变量定位在特定的存储区,这些可以通过修改cmd文件来实现。
下面是C语言的这是丛侍软件仿真,放大袭租倍数成2的指数幂增加(可修改放大倍数),然后在read_signals处设置断点,插入正弦数据,然后设置图像观察两个缓冲数组,inp_buffer,out_buffer
CMD文件也有,但是我再硬件上调试过,这种放大倍数增加的方法,在单步程序跑到最后就不动了。也就是放大倍数不变了。要放大100用我的2812应该不行。软件仿真完全行得通。
//-------------------------------相关头文件------------------------------------//
#include "stdio.h"
#include "volume.h"
//-------------------------------工作变量定义----------------------------------/渗禅吵/
int inp_buffer[BUFSIZE] /* processing data buffers 100 */
int out_buffer[BUFSIZE]
int volume = 2 // BUF_SIZE的定义见volume.h
//-------------------------------调用子程序规则--------------------------------//
int read_signals(int *input)
int write_buffer(int *input,int *output,int count)
int output_signals(int *output)
void Delay(void)
//-----------------------------------主程序------------------------------------//
main()
{
int num = BUFSIZE
int *input
int *output
input=inp_buffer
output=out_buffer
read_signals(input)// 加软件断点和探针
// ======无限循环======
while ( TRUE )
{
write_buffer(input, output, num)
input=inp_buffer
output=out_buffer
}
}
// 读取输入信号
int read_signals(int *input)
{
// 在此读取采集数据信号放到输入缓冲区input[]
return(TRUE)
}
// 将数据进行处理后搬移到输出缓冲区
int write_buffer(int *input,int *output,int count)
{
int i
for ( i=0i<counti++ )
{
output[i]=input[i] * volume// 处理:将输入数据放大volume倍放到输出缓冲区
}
volume *= 2
return(TRUE)
}
// 输出处理后的信号
int output_signals(int *output)
{
// 在此将输出缓冲区out_buffer中的数据发送到输出设备(比如DA)
return(TRUE)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)