基于TMS320C5502的多波形发生器程序,可产生多种波形,例如正弦波,锯齿波程序.
dsp源程序如下:
- /***********************************************************************************/
- /* 文件名: Taylorsine.c (将sineCODEC和sinecompute合并,实现计算并实时输出) */
- /* 创建时间:10/05/2012 */
- /* 功能描述:利用Taylor展开式法计算正弦波,并将信号从J6端口发送出去,平台为BJTU-DSP5502板*/
- /* 作者: 钱满义myqian@bjtu.edu.cn 北京交通大学电信学院电工电子教学基地 */
- /* 修改者 hailingao , 06/25 */
- /************************************************************************************/
- #include <math.h>
- #include <stdio.h>
- #include <csl.h>
- #include <csl_chip.h>
- #include <csl_i2c.h>
- #include <csl_pll.h>
- #include <csl_mcbsp.h>
- #include <csl_emif.h>
- #include <csl_emifBhal.h>
- #include <stdio.h>
- //#include "E2PROM_Function.h"
- #include "CODEC.h"
-
- #define Nx 360 //每周期抽取点数
- #pragma DATA_SECTION(output1,"data_out1"); //存放sin数据,浮点型
- float output1[Nx];
- #pragma DATA_SECTION(output,"data_out"); //存放sin数据,定点型
- int output[Nx];
- #undef CODEC_ADDR
- #define CODEC_ADDR 0x1A
-
- // 定义McBSP的句柄
- MCBSP_Handle hMcbsp;
- /*------------------------------------------------------------------------------------*/
- //
- // FUNCTION: MAIN
- //
- /*------------------------------------------------------------------------------------*/
-
- void main(void)
- {
-
- Uint16 i,k=0;
-
- float input0=0,x1;
- float a,b,c,d,e,f,g,h,ii,step;//step为角度步长
- step=360.0/Nx; // Nx为360度内取样点数
- /*****************新增函数段*****************/
-
- for(i=0;i<=Nx-1;i++)
- {
- float angle,xx;
- angle=input0+step*i;
- x1=3.1415926*angle/180;
- xx=x1*x1;
- a=1-xx/16/17;b=1-xx/14/15*a;c=1-xx/12/13*b;d=1-xx/10/11*c;e=1-xx/8/9*d;f=1-xx/6/7*e;g=1-xx/4/5*f;h=1-xx/2/3*g;ii=x1*h;
- // g=x1*(1-xx/2/3*(1-xx/4/5*(1-xx/6/7*(1-xx/8/9*(1-xx/10/11*(1-xx/12/13*(1-xx/14/15*(1-xx/16/17))))))));//数学总公式
- // fprintf(stdout,"COMPUTE%f",ii); fprintf(stdout,"\n "); //输出计算的正弦波的数值,x2=e
- output1[i]= 32767*ii; //利用泰勒级数计算出正弦波的数值,存放到output1中
- output[i]=output1[i];
- }
- // Initialize CSL library - This is REQUIRED !!!
- CSL_init();
-
- // The main frequency of system is 240MHz
- // 该频率是为了设置IIC模块的需要设置的,为了使用I2C_setup函数
- PLL_setFreq(1, 0xC, 0, 1, 3, 3, 0);
- //EMIF初始化
- Emif_Config();
-
- // Open McBSP port 1 and get a McBSP type handle
- hMcbsp = MCBSP_open(MCBSP_PORT1,MCBSP_OPEN_RESET);
- // Config McBSP port 1 by use previously defined structure
- Mcbsp_Config(hMcbsp);
-
- //I2C初始化
- I2C_cofig();
-
- //CODEC寄存器初始化
- inti_AIC();
-
- /*------------------------------------------------------------------------------------*/
- // Receive the ADC output data of CODEC
- // Then output the received data to DAC of CODEC
- /*------------------------------------------------------------------------------------*/
- while(1)
- {
- while(!MCBSP_xrdy(hMcbsp)) {};
- MCBSP_write16(hMcbsp, output[k]); //左声道输出
- while(!MCBSP_xrdy(hMcbsp)) {};
- MCBSP_write16(hMcbsp, output[k]); //右声道输出
- // k=k+1; //正弦波每周期的样点为360个,输出信号的频率为Fs/N=32000/360=88.89Hz
- k=k+10; //正弦波每周期的样点为36个,输出信号的频率为Fs/N=32000/36=888.9Hz
- if (k>=Nx) k=k%Nx;
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
基于TMS320C5502的多波形发生器程序,可产生多种波形,例如正弦波,锯齿波.zip
(680.89 KB, 下载次数: 44)
|