This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TMS320C6713B:TMS320C6713

Guru**** 2409930 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/832320/compiler-tms320c6713b-tms320c6713

器件型号:TMS320C6713B

工具/软件:TI C/C++编译器

主席先生,下午好。

主席先生,我们正就自适应消噪进行研究。  

IAM 使用 以下代码实施实时自适应噪声消除、此处获取所需信号为500Hz、噪声为1000Hz。 这两个信号来自函数发生器并为 TMS320C6713线路输入提供输入、以及来自用于观察 CRO 上自适应输出(Y)和错误信号的线路输入。

但是、当 AM 调试和恢复时、滤波器的权重未显示为零、Y 也显示为零。

主席先生,请帮助我如何解决这个问题,

先生、IAM 包括代码、请帮助我。 iam 先生将 CCSv5.5与 TMS320C6713结合使用

* main.c
*
#include "dsk6713.h"
#include "dsk6713_AIC23.h"
#include "stdlib.h"
#include "math.h"
#define NS 1000 //样本数
#define beta 0.01 //收敛速率
#define N 40.
#define FS 8000 //采样频率
短整型 adaptive_filter (短整型,短整型);
//浮点延迟[N];
// float w[N];
//所需的 float [NS]、Y_OUT[NS]、ERROR[NS];
浮动 D、yn、E;
//union{unsigned int uint;short channel[2];}AIC23_data;
DSK6713_AIC23_Config 配置={\
0x0017、// 0 DSK6713_AIC23_LEFTINVOL 左行输入通道卷*/\
0x0017、/* 1 DSK6713_AIC23_RIGHTINVOL 右行输入通道音量*/\
0x00d8、// 2 DSK6713_AIC23_LEFTHPVOL 左声道耳机音量*/\
0x00d8、/* 3 DSK6713_AIC23_RIGHTHPVOL 右声道耳机音量*/\
0x0011、/* 4 DSK6713_AIC23_ANAPATH 模拟音频路径控制*/\
0x0000、// 5 DSK6713_AIC23_DIGPATH 数字音频路径控制*/\
0x0000、// 6 DSK6713_AIC23_POWERDOWN 掉电控制*/\
0x0043、/* 7 DSK6713_AIC23_DIGIF 数字音频接口格式*/\
0x0081、/* 8 DSK6713_AIC23_SAMPLERATE 采样率控制*/\
0x0001 /* 9 DSK6713_AIC23_DIGACT 数字接口激活*/\
};
/*
* main()-主代码例程,初始化 BSL 并生成音调
*
void main()

DSK6713_AIC23_CodecHandle hCodec;
uint32 l_input、r_input;
uint32 l_output、r_output;
/*初始化主板支持库,必须首先调用*/
DSK6713_init();
/*启动编解码器*/
hCodec = DSK6713_AIC23_openCodec (0、&CONFIG);
DSK6713_AIC23_setFreq (hCodec、DSK6713_AIC23_FREQ_48kHz);
// DSK6713_AIC23_setFreq (hCodec、8000);
while (1)

/*将样本读取到左声道*/
while (!DSK6713_AIC23_Read (hCodec、&l_input));
/*将样本读取到正确的通道*/
while (!DSK6713_AIC23_Read (hCodec、&r_input));
l_output=(short int) adaptive_filter (l_input、r_input);
r_output=l_output;
/*向左声道发送样本*/
while (!DSK6713_AIC23_write (hCodec、l_output));
/*将样本发送到正确的频道*/
while (!DSK6713_AIC23_write (hCodec、r_output));

/*关闭编解码器*/
DSK6713_AIC23_closeCodec (hCodec);

短整型自适应滤波器(短整型 l_input1、短整型 r_input1)//ISR

长 I、T;
浮动 D、Y、E;
float w[N+1]={0.0};
浮点 X[N+1]={0.0};
输出短路;
float dplusn=0、desired = 0、noise = 0;
对于(T = 0;T < 40;T++)

// w[T]= 0;//init 缓冲器权重
X[T]= 0;//用于延迟采样的初始化缓冲区

所需= l_input1;
噪声= r_input1;
D =所需+噪声;//所 需+噪声
X[0]=噪声;//作为输入来调整 FIR
y = 0;
对于(I = 0;I < N;I++)//计算出不适应 FIR
y +=(w[i]* X[i]);//自适应滤波器输出
E = D - Y;//"error" signal=(d+n)-yn
对于(i = N-1;i >=0;i--)//更新权重和延迟

w[i]= w[i]+(beta*E*X[i]);//更新权重
if (i!= 0) X[i]= X[I-1];//更新数据样本
// delay[i]= delay[I-1];//更新延迟样本

//输出=((短接)所需);
output=((short) E);//error 信号作为整体输出
// output=((short) yn);//自适应控制器信号
// output=((short) dplusn);//输出(所需+噪声)
//总体输出结果
返回(输出);