我用的板子是OMAP-L137,音频模块是aic3106。在此有问题想问。
在aic3106的例程介绍里,在进行了相关的设置后,采样频率定为了48KHz,通过mic口采集数据。关键代码如下:
for ( sec = 0 ; sec < 5 ; sec++ )
{
for ( msec = 0 ; msec < 1000 ; msec++ )
{
for ( sample = 0 ; sample < 48 ; sample++ )
{
/* Read then write the left sample */
while ( ! ( MCASP1_SRCTL0 & 0x20 ) );
sample_data = MCASP1_RBUF0_32BIT;
while ( ! ( MCASP1_SRCTL5 & 0x10 ) );
MCASP1_XBUF5_32BIT = sample_data;
/* Read then write the right sample */
while ( ! ( MCASP1_SRCTL0 & 0x20 ) );
sample_data = MCASP1_RBUF0_32BIT;
while ( ! ( MCASP1_SRCTL5 & 0x10 ) );
MCASP1_XBUF5_32BIT = sample_data; }
}
}
看了这段代码,我的理解是,采入的数据是32位的“0、1”数据流,如果接下来,我想进行加窗、滤波等处理,是否应把sample_data中存放的数转化为浮点数。另外,如果以往,用matlab进行处理,我读入一个音频文件,matlab会提取出反映音频文件幅度特性的数组,那aic3106采入的数据在经过一定转化后,会和matlab中提取的数组一致吗?跪求回复了~
mmuuss586:
不会帮顶
Derek Xie:
你好:
你的理解没错,I2S数据流就是0,1的码流,但是Sample data只是一个数据,你需要至少几千个Sample data数据做FFT和加窗。只要你的计算单元够强大,可以做的和Matlab一样。
Shuo Zheng:
回复 Derek Xie:
您好,感谢您的回复。有件事我要接着问哈。我在matlab里读入一段正弦纯音的音频文件,呈现的数据是0到1之间的浮点数。我用aic3106采入的数据,是否需要转化到0-1之间再进行FFT和加窗等处理?事实上,我在没有用aic3106进行实际采样之前,是把matlab读出的数据直接拿来用做原始数据,再用dsp芯片做的加窗、滤波等操作,每步结果都和matlab的处理结果做比较。现在想再加入aic3106的功能进行采样。不知道我的叙述您是不是明白了?能明白我想问的是什么了吗?
Derek Xie:
回复 Shuo Zheng:
你好:
不需要转换成0,1直接拿数据来做。0和1只是传输用的。
Shuo Zheng:
回复 Derek Xie:
咦,我想问的是是否需要转化成0-1之间的小数,比如0.68,0.97这样的。
Derek Xie:
回复 Shuo Zheng:
你好:
整数小数都可以,那个只是影响了你的输出信号大小。