首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定义I2S_resources

定义I2S_resources
EN

Stack Overflow用户
提问于 2014-01-03 03:22:23
回答 1查看 222关注 0票数 0

我一直在使用XMOS提供的新startKIT和他们的音频片段,我很难定义r_i2s i2s_resources结构,就像在XsoftTIP的i2s_master库中定义的那样

这是我的最新代码,为两个数组(data_in和data_out)的初始化提供了一个错误。

代码语言:javascript
复制
#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结构如下:

代码语言:javascript
复制
/** 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 ;

最后我犯了这样的错误:

代码语言:javascript
复制
../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:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-26 09:36:22

在xC中,不能定义包含端口或时钟的局部变量。因此,您必须将r_i2s结构定义为全局结构。

代码语言:javascript
复制
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;

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20895964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档