我一直在使用XMOS提供的新startKIT和他们的音频片段,我很难定义r_i2s i2s_resources结构,就像在XsoftTIP的i2s_master库中定义的那样
这是我的最新代码,为两个数组(data_in和data_out)的初始化提供了一个错误。
#include <xs1.h>
#include <i2s.h>
//XS1 Clock mapping
clock MCLK_CLK = XS1_CLKBLK_1;
clock BCLK_CLK = XS1_CLKBLK_2;
in buffered port:32 ADC_DATA0 = XS1_PORT_1K;
in buffered port:32 ADC_DATA1 = XS1_PORT_1L;
out buffered port:32 DAC_DATA0 = XS1_PORT_1G;
out buffered port:32 DAC_DATA1 = XS1_PORT_1H;
int main(void){
//Set up I2S
streaming chanend channel_data;
r_i2s i2s = {MCLK_CLK, BCLK_CLK, MCLK, BCLK, LRCLK, {ADC_DATA0, ADC_DATA1}, {DAC_DATA0, DAC_DATA0}};
}它们定义要定义的r_i2s结构如下:
/** Resources for I2S_MASTER
typedef struct i2s_resources {
clock cb1; /**< Clock block for MCK */
clock cb2; /**< Clock block for BCK */
in port mck; /**< Clock port for MCK */
out buffered port:32 bck; /**< Clock port for BCK */
out buffered port:32 wck; /**< Clock port for WCK */
in buffered port:32 din[I2S_MASTER_NUM_PORTS_ADC]; /**< Array of I2S_MASTER_NUM_IN x 1-bit ports for audio input */
out buffered port:32 dout[I2S_MASTER_NUM_PORTS_DAC]; /**< Array of I2S_MASTER_NUM_OUT x 1-bit ports for audio output */
} r_i2s ;最后我犯了这样的错误:
../src/Audio Slice with startKIT.xc: In function `main':
../src/Audio Slice with startKIT.xc:32: error: invalid initializer
../src/Audio Slice with startKIT.xc:32: error: (near initialization for `i2s.cb1')
../src/Audio Slice with startKIT.xc:32: error: invalid initializer
../src/Audio Slice with startKIT.xc:32: error: (near initialization for `i2s.cb2')
../src/Audio Slice with startKIT.xc:32: error: invalid initializer
../src/Audio Slice with startKIT.xc:32: error: (near initialization for `i2s.mck')
../src/Audio Slice with startKIT.xc:32: error: invalid initializer
../src/Audio Slice with startKIT.xc:32: error: (near initialization for `i2s.bck')
../src/Audio Slice with startKIT.xc:32: error: invalid initializer
../src/Audio Slice with startKIT.xc:32: error: (near initialization for `i2s.wck')
../src/Audio Slice with startKIT.xc:32: error: invalid initializer
../src/Audio Slice with startKIT.xc:32: error: (near initialization for `i2s.din[0]')
../src/Audio Slice with startKIT.xc:32: warning: excess elements in array initializer
../src/Audio Slice with startKIT.xc:32: warning: (near initialization for `i2s.din')
../src/Audio Slice with startKIT.xc:32: error: invalid initializer
../src/Audio Slice with startKIT.xc:32: error: (near initialization for `i2s.dout[0]')
../src/Audio Slice with startKIT.xc:32: warning: excess elements in array initializer
../src/Audio Slice with startKIT.xc:32: warning: (near initialization for `i2s.dout')
../src/Audio Slice with startKIT.xc:32: error: local variable `i2s' has type that contains a port
../src/Audio Slice with startKIT.xc:33: error: local variable `streChan' has type chanend这是用C的一个变体XC编写的,XC是XMOS的专有语言,但是在堆栈溢出上没有标记,而且我没有1500 rep:
发布于 2014-01-26 09:36:22
在xC中,不能定义包含端口或时钟的局部变量。因此,您必须将r_i2s结构定义为全局结构。
r_i2s i2s = {MCLK_CLK, BCLK_CLK, MCLK, BCLK, LRCLK, {ADC_DATA0, ADC_DATA1}, {DAC_DATA0, DAC_DATA0}};
int main(void){
//Set up I2S
streaming chanend channel_data;
}https://stackoverflow.com/questions/20895964
复制相似问题