大家好,本人初学DSP,对CCS操作了解的不多,现在遇到一点问题,希望大家帮助。非常感谢。
本人按照网络教程在matlab中生成一个波形,并按DSP可读取的格式存为.dat文件。
(教程网址:)
matlab程序:
clear all; close all clc; Fs = 150e3;%定义采样率 F1 = 10e3;%定义频率 F2 = 8e3; sample_num = 500;%定义数据点个数 m = 1:sample_num; x = sin(2*pi*F1*m/Fs)+sin(2*pi*F2*m/Fs);%生成原始数据 y = typecast(single(x),'uint32');%首先将x强制转换成single型,然后再转换成具有相同二进制形式的uint32型 这样做是为了方便dat文件存储 figure; plot(x); title('Matlab生成的原始数据'); fid=fopen('2.dat','wt');%以写文本的方式打开一个叫input_file的dat文件(如果没有会自行创建一个) fprintf(fid,'1651 1 180000 1 %x\n',length(m));%输出文件头,文件头必须是dsp所能识别的,%属性分别是固定标识、数据类型(十六进制)、基地址(根据你要存储在DSP什么地址处决定)、数据长度 fprintf(fid,'0x%08x\n',y);%输出y数组,并写到与fid标示符相同的文件 fclose(fid);%关闭fid标示符的文件。
得到的.dat文件如下图:
之后打开CCS6.0,load memory,得到如下数据:
在graph中查看如图:
和最开始生成的数据相差甚远。
请问这个问题该如何解决?希望论坛各位朋友给予帮助。
谢谢。
Green Deng:你好,你的教程地址没有给出。另外,你的graph设置正确吗?有尝试过其他波形的显示吗?
大家好,本人初学DSP,对CCS操作了解的不多,现在遇到一点问题,希望大家帮助。非常感谢。
本人按照网络教程在matlab中生成一个波形,并按DSP可读取的格式存为.dat文件。
(教程网址:)
matlab程序:
clear all; close all clc; Fs = 150e3;%定义采样率 F1 = 10e3;%定义频率 F2 = 8e3; sample_num = 500;%定义数据点个数 m = 1:sample_num; x = sin(2*pi*F1*m/Fs)+sin(2*pi*F2*m/Fs);%生成原始数据 y = typecast(single(x),'uint32');%首先将x强制转换成single型,然后再转换成具有相同二进制形式的uint32型 这样做是为了方便dat文件存储 figure; plot(x); title('Matlab生成的原始数据'); fid=fopen('2.dat','wt');%以写文本的方式打开一个叫input_file的dat文件(如果没有会自行创建一个) fprintf(fid,'1651 1 180000 1 %x\n',length(m));%输出文件头,文件头必须是dsp所能识别的,%属性分别是固定标识、数据类型(十六进制)、基地址(根据你要存储在DSP什么地址处决定)、数据长度 fprintf(fid,'0x%08x\n',y);%输出y数组,并写到与fid标示符相同的文件 fclose(fid);%关闭fid标示符的文件。
得到的.dat文件如下图:
之后打开CCS6.0,load memory,得到如下数据:
在graph中查看如图:
和最开始生成的数据相差甚远。
请问这个问题该如何解决?希望论坛各位朋友给予帮助。
谢谢。
user5886390:
回复 Green Deng:
这个是教程网址,我一步一步按照这个来的:
(blog.csdn.net/…/60958304)
其中的正弦波公式我有试过不同的,但是读入时数据都不对。
在读入时我打开了一个扩展外部sram和外部flash的程序,点击debug之后在0x180000(外部sram)地址下读入.dat文件的内容,另外这个地址在cmd文件中也有声明。
#include "DSP2833x_Device.h"// DSP2833x Headerfile Include File #include "DSP2833x_Examples.h"// DSP2833x Examples Include Filevoid main(void) { // Step 1. Initialize System Control: // PLL, WatchDog, enable Peripheral Clocks // This example function is found in the DSP2833x_SysCtrl.c file.InitSysCtrl();// Step 2. Initalize GPIO: // This example function is found in the DSP2833x_Gpio.c file and // illustrates how to set the GPIO to it's default state. // InitGpio();// Skipped for this exampleInitXintf16Gpio(); //zq// Step 3. Clear all interrupts and initialize PIE vector table: // Disable CPU interruptsDINT;// Initialize the PIE control registers to their default state. // The default state is all PIE interrupts disabled and flags // are cleared. // This function is found in the DSP2833x_PieCtrl.c file.InitPieCtrl();// Disable CPU interrupts and clear all CPU interrupt flags:IER = 0x0000;IFR = 0x0000;ChipErase();InitExRam(0x0);FlashWrite(0,0,0xFFFF);ClearExRam(0);FlashRead(0,0,0xFFFF);for( ; ;); }
#include "DSP2833X_Device.h"// Definitions for the SST 39VF400A part //#defineSST_ID0x00BF/* SST Manufacturer's ID code*/ //#defineSST_39VF800A0x2780/* SST39VF800/SST39VF800A device code */ #defineTimeOutErr1 #defineVerifyErr2 #defineWriteOK0 #defineEraseErr3 #defineEraseOK0#defineSectorSize0x800 #defineBlockSize0x8000 unsignedint*FlashStart = (unsignedint *)0x100000;//flash的首地址 unsignedint*ExRamStart = (unsignedint *)0x180000;//sram的首地址Uint16 ChipErase(void){Uint16 Data;Uint32 TimeOut,i;*(FlashStart + 0x5555) = 0xAAAA;*(FlashStart + 0x2AAA) = 0x5555;*(FlashStart + 0x5555) = 0x8080;*(FlashStart + 0x5555) = 0xAAAA;*(FlashStart + 0x2AAA) = 0x5555;*(FlashStart + 0x5555) = 0x1010;i = 0;TimeOut = 0;while(i<5){Data = *(FlashStart +0x3FFFF);if (Data == 0xFFFF) i++;else i=0;if ( ++TimeOut>0x1000000) return (TimeOutErr);}for (i=0;i<0x40000;i++){Data = *(FlashStart + i);if (Data !=0xFFFF) return (EraseErr);}return(EraseOK);}Uint16 FlashWrite(Uint32 RamStart, Uint32RomStart,Uint16 Length){Uint32 i,TimeOut;Uint16 Data1,Data2,j;for (i=0;i<Length;i++){*(FlashStart + 0x5555) = 0x00AA;*(FlashStart + 0x2AAA) = 0x0055;*(FlashStart + 0x5555) = 0x00A0;*(FlashStart + RomStart + i) = *(ExRamStart + RamStart + i);TimeOut = 0;j=0;while(j<5){Data1 = *(FlashStart + RomStart + i);Data2 = *(FlashStart + RomStart + i);if (Data1 == Data2) j++;else j=0;if ( ++TimeOut>0x1000000) return (TimeOutErr);}}for (i=0;i<Length;i++){Data1 = *(FlashStart + RomStart +i);Data2 = *(ExRamStart + RamStart +i);if(Data1 != Data2) return (VerifyErr);}return(WriteOK);}void FlashRead(Uint32 RamStart, Uint32RomStart, Uint16 Length){Uint32 i;Uint16 Temp;for (i=0;i<Length;i++){Temp =*(FlashStart + RomStart +i);*(ExRamStart + RamStart +i) = Temp;}}void InitExRam(Uint16 Start){Uint16 i;for (i=0;i<0xFFFF;i++)*(ExRamStart + Start + i) = 0x1201;} void ClearExRam(Uint16 Start){Uint16 i;for (i=0;i<0xFFFF;i++)*(ExRamStart + Start + i) = 0;} void RamRead(Uint16 Start){Uint16 i;for (i=0;i<0xFFFF;i++)*(ExRamStart + Start + i) = *(ExRamStart +i);}//=========================================NO MORE==============================
不知道和程序有没有关系,但还是先放上来。
麻烦您帮忙看看。谢谢。
大家好,本人初学DSP,对CCS操作了解的不多,现在遇到一点问题,希望大家帮助。非常感谢。
本人按照网络教程在matlab中生成一个波形,并按DSP可读取的格式存为.dat文件。
(教程网址:)
matlab程序:
clear all; close all clc; Fs = 150e3;%定义采样率 F1 = 10e3;%定义频率 F2 = 8e3; sample_num = 500;%定义数据点个数 m = 1:sample_num; x = sin(2*pi*F1*m/Fs)+sin(2*pi*F2*m/Fs);%生成原始数据 y = typecast(single(x),'uint32');%首先将x强制转换成single型,然后再转换成具有相同二进制形式的uint32型 这样做是为了方便dat文件存储 figure; plot(x); title('Matlab生成的原始数据'); fid=fopen('2.dat','wt');%以写文本的方式打开一个叫input_file的dat文件(如果没有会自行创建一个) fprintf(fid,'1651 1 180000 1 %x\n',length(m));%输出文件头,文件头必须是dsp所能识别的,%属性分别是固定标识、数据类型(十六进制)、基地址(根据你要存储在DSP什么地址处决定)、数据长度 fprintf(fid,'0x%08x\n',y);%输出y数组,并写到与fid标示符相同的文件 fclose(fid);%关闭fid标示符的文件。
得到的.dat文件如下图:
之后打开CCS6.0,load memory,得到如下数据:
在graph中查看如图:
和最开始生成的数据相差甚远。
请问这个问题该如何解决?希望论坛各位朋友给予帮助。
谢谢。
user5886390:
回复 Green Deng:
blog.csdn.net/…/60958304
不知道为什么这个网址显示不全。。
大家好,本人初学DSP,对CCS操作了解的不多,现在遇到一点问题,希望大家帮助。非常感谢。
本人按照网络教程在matlab中生成一个波形,并按DSP可读取的格式存为.dat文件。
(教程网址:)
matlab程序:
clear all; close all clc; Fs = 150e3;%定义采样率 F1 = 10e3;%定义频率 F2 = 8e3; sample_num = 500;%定义数据点个数 m = 1:sample_num; x = sin(2*pi*F1*m/Fs)+sin(2*pi*F2*m/Fs);%生成原始数据 y = typecast(single(x),'uint32');%首先将x强制转换成single型,然后再转换成具有相同二进制形式的uint32型 这样做是为了方便dat文件存储 figure; plot(x); title('Matlab生成的原始数据'); fid=fopen('2.dat','wt');%以写文本的方式打开一个叫input_file的dat文件(如果没有会自行创建一个) fprintf(fid,'1651 1 180000 1 %x\n',length(m));%输出文件头,文件头必须是dsp所能识别的,%属性分别是固定标识、数据类型(十六进制)、基地址(根据你要存储在DSP什么地址处决定)、数据长度 fprintf(fid,'0x%08x\n',y);%输出y数组,并写到与fid标示符相同的文件 fclose(fid);%关闭fid标示符的文件。
得到的.dat文件如下图:
之后打开CCS6.0,load memory,得到如下数据:
在graph中查看如图:
和最开始生成的数据相差甚远。
请问这个问题该如何解决?希望论坛各位朋友给予帮助。
谢谢。
Green Deng:
回复 user5886390:
不好意思,问一下,你这边使用的是哪款芯片做这个实验的?
大家好,本人初学DSP,对CCS操作了解的不多,现在遇到一点问题,希望大家帮助。非常感谢。
本人按照网络教程在matlab中生成一个波形,并按DSP可读取的格式存为.dat文件。
(教程网址:)
matlab程序:
clear all; close all clc; Fs = 150e3;%定义采样率 F1 = 10e3;%定义频率 F2 = 8e3; sample_num = 500;%定义数据点个数 m = 1:sample_num; x = sin(2*pi*F1*m/Fs)+sin(2*pi*F2*m/Fs);%生成原始数据 y = typecast(single(x),'uint32');%首先将x强制转换成single型,然后再转换成具有相同二进制形式的uint32型 这样做是为了方便dat文件存储 figure; plot(x); title('Matlab生成的原始数据'); fid=fopen('2.dat','wt');%以写文本的方式打开一个叫input_file的dat文件(如果没有会自行创建一个) fprintf(fid,'1651 1 180000 1 %x\n',length(m));%输出文件头,文件头必须是dsp所能识别的,%属性分别是固定标识、数据类型(十六进制)、基地址(根据你要存储在DSP什么地址处决定)、数据长度 fprintf(fid,'0x%08x\n',y);%输出y数组,并写到与fid标示符相同的文件 fclose(fid);%关闭fid标示符的文件。
得到的.dat文件如下图:
之后打开CCS6.0,load memory,得到如下数据:
在graph中查看如图:
和最开始生成的数据相差甚远。
请问这个问题该如何解决?希望论坛各位朋友给予帮助。
谢谢。
user5886390:
回复 Green Deng:
DSP28335
大家好,本人初学DSP,对CCS操作了解的不多,现在遇到一点问题,希望大家帮助。非常感谢。
本人按照网络教程在matlab中生成一个波形,并按DSP可读取的格式存为.dat文件。
(教程网址:)
matlab程序:
clear all; close all clc; Fs = 150e3;%定义采样率 F1 = 10e3;%定义频率 F2 = 8e3; sample_num = 500;%定义数据点个数 m = 1:sample_num; x = sin(2*pi*F1*m/Fs)+sin(2*pi*F2*m/Fs);%生成原始数据 y = typecast(single(x),'uint32');%首先将x强制转换成single型,然后再转换成具有相同二进制形式的uint32型 这样做是为了方便dat文件存储 figure; plot(x); title('Matlab生成的原始数据'); fid=fopen('2.dat','wt');%以写文本的方式打开一个叫input_file的dat文件(如果没有会自行创建一个) fprintf(fid,'1651 1 180000 1 %x\n',length(m));%输出文件头,文件头必须是dsp所能识别的,%属性分别是固定标识、数据类型(十六进制)、基地址(根据你要存储在DSP什么地址处决定)、数据长度 fprintf(fid,'0x%08x\n',y);%输出y数组,并写到与fid标示符相同的文件 fclose(fid);%关闭fid标示符的文件。
得到的.dat文件如下图:
之后打开CCS6.0,load memory,得到如下数据:
在graph中查看如图:
和最开始生成的数据相差甚远。
请问这个问题该如何解决?希望论坛各位朋友给予帮助。
谢谢。
小清新941006:
回复 user5886390:
请问你到最后解决了吗?我是从ccs中导出数据,想在matlab里面分析。具体的步骤也不太清楚