dsp产生正弦波 c语言,TMS320C5502多波形发生器源程序 可产生正弦波,锯齿波等
/***********************************************************************************/
/*? ?文件名: Taylorsine.c (將sineCODEC和sinecompute合并,實現計算并實時輸出)? ?? ?*/
/*? ?創建時間:10/05/2012? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? */
/*? ?功能描述:利用Taylor展開式法計算正弦波,并將信號從J6端口發送出去,平臺為BJTU-DSP5502板*/
/*? ?作者: 錢滿義myqian@bjtu.edu.cn 北京交通大學電信學院電工電子教學基地? ?? ?? ???*/
/*? ?修改者 hailingao , 06/25? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? */
/************************************************************************************/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//#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黑下載附件…………
總結
以上是生活随笔為你收集整理的dsp产生正弦波 c语言,TMS320C5502多波形发生器源程序 可产生正弦波,锯齿波等的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言蚂蚁搬,《蚂蚁搬豆》教案
- 下一篇: android+定时器+动画,Andro