Я работал с новым 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 :(
Попробуйте изменить глобальные переменные на определения. Ваш xc может не допускать инициализаторы с переменными, а не константами. –
Какова ценность I2S_MASTER_NUM_PORTS_ADC? –
I2S_MASTER_NUM_PORTS_ADC - это два, как и I2S_MASTER_NUM_PORTS_DAC – Funkyguy