2014-01-03 2 views
0

Я работал с новым startKIT предложенной XMOS в сочетании с их аудио-фрагмент У меня ужасное время, пытаясь определить r_i2s i2s_resources-структуру, как это определено в их i2s_master библиотеке из XsoftTIPопределяющие I2S_resources

Это мой последний код, который дает мне ошибку для инициализации обоих массивов (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, который является собственностью язык XMOS но не тег на StackOverflow для него и у меня нет 1500 rep :(

+0

Попробуйте изменить глобальные переменные на определения. Ваш xc может не допускать инициализаторы с переменными, а не константами. –

+0

Какова ценность I2S_MASTER_NUM_PORTS_ADC? –

+0

I2S_MASTER_NUM_PORTS_ADC - это два, как и I2S_MASTER_NUM_PORTS_DAC – Funkyguy

ответ

1

В 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; 

} 
Смежные вопросы