qipp
2026-03-18 fd0b5f94939d30fe65a98f9111aee2987d12e41f
碧云祥定制代码提交
已修改7个文件
357 ■■■■ 文件已修改
DSP180x_core/drv/board.c 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DSP180x_core/drv/sport.c 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DSP180x_core/drv/sport.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DSP180x_core/src/f2f.c 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DSP180x_core/src/main.cpp 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DSP180x_core/src/scene.cpp 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DSP180x_core/src/tob.cpp 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DSP180x_core/drv/board.c
@@ -44,6 +44,7 @@
void InitSRC(void);
void SportsConfig(void);
#if 0
void Audio_Config(void)
{
    SRU(DAI_PB02_O, SPORT0_CLK_I);
@@ -133,8 +134,91 @@
    InitSRC();
    SportsConfig();
}
#else
void Audio_Config(void)
{
    SRU(DAI_PB02_O, SPORT0_CLK_I);
    SRU(DAI_PB02_O, SPORT2_CLK_I);
    SRU(DAI_PB08_O, SPORT3_CLK_I); //iis
    SRU(DAI_PB01_O, SPORT0_FS_I);
    SRU(DAI_PB01_O, SPORT2_FS_I);
    SRU(DAI_PB09_O, SPORT3_FS_I); //iis
    //analog input
    SRU(DAI_PB17_O, SPORT2_DA_I);
    SRU(DAI_PB14_O, SPORT2_DB_I);
    //analog output
    SRU(HIGH, PBEN18_I);  //OUT0
    SRU(SPORT0_DA_O, DAI_PB18_I);
    SRU(HIGH, PBEN04_I);  //OUT1
    SRU(SPORT0_DB_O, DAI_PB04_I);
    //hdmi input
    SRU(DAI_PB05_O, SPORT3_DA_I);
///////////////////USB///////////////////////
    // SRC 外围时钟
    SRU(DAI_PB03_O, SRC0_CLK_IP_I);
    SRU(DAI_PB13_O, SRC0_FS_IP_I);
    SRU(DAI_PB03_O, SRC1_CLK_OP_I);
    SRU(DAI_PB13_O, SRC1_FS_OP_I);
    // SRC 内部时钟
    SRU(DAI_PB08_O, SPORT4_CLK_I);
    SRU(DAI_PB08_O, SPORT5_CLK_I);
    SRU(DAI_PB09_O, SPORT4_FS_I);
    SRU(DAI_PB09_O, SPORT5_FS_I);
    SRU(DAI_PB08_O, SRC0_CLK_OP_I);
    SRU(DAI_PB09_O, SRC0_FS_OP_I);
    SRU(DAI_PB08_O, SRC1_CLK_IP_I);
    SRU(DAI_PB09_O, SRC1_FS_IP_I);
    // DATA输入ASRC
    SRU(DAI_PB07_O, SRC0_DAT_IP_I);
    SRU(SRC0_DAT_OP_O, SPORT5_DA_I);
    // ASRC输出DATA
    SRU(SPORT4_DA_O, SRC1_DAT_IP_I);
    SRU(HIGH, PBEN19_I);
    SRU(SRC1_DAT_OP_O, DAI_PB19_I);
//////////////////////////////////////////////
    //SPDIF MCLK
    SRU(HIGH, PBEN10_I);
    SRU(DAI_PB06_O,DAI_PB10_I); //MCLK
    //TDM CLOCK
    SRU(DAI_PB06_O,PCG_EXTA_I);
    SRU(PCG_CLKA_O,PCG_EXTB_I);
    SRU(HIGH, PBEN02_I); //clk
    SRU(PCG_FSB_O,DAI_PB02_I);
    SRU(HIGH, PBEN01_I); //fs
    SRU(PCG_FSA_O,DAI_PB01_I);
    //IIS CLOCK
    SRU(HIGH, PBEN08_I); //clk
    SRU(PCG_CLKC_O,DAI_PB08_I);
    SRU(HIGH, PBEN09_I); //fs
    SRU(PCG_FSC_O,DAI_PB09_I);
    SRU(DAI_PB10_O,PCG_EXTC_I);
    InitPCG();
    InitSRC();
    SportsConfig();
}
#endif
#if 0
void SportsConfig(void)
{
#if 1
@@ -176,7 +260,67 @@
    InitSPORT(0,0);
#endif
}
#else
void SportsConfig(void)
{
    int i ;
    struct SportDef sports[8];
    memset(sports , 0, sizeof(struct SportDef)*8);
    for (i = 0 ;i < 6;i ++){
        sports[i].clke = 0;
        sports[i].enable = 1;
        sports[i].enable_sec = 1;
        sports[i].lfs = 0;
        sports[i].mfd = 0;
        sports[i].opmode = 1;
        sports[i].slots = 2;
        sports[i].spid = i;
        sports[i].vld_a = 2;
        sports[i].vld_b = 2;
        sports[i].rx = 1;
        sports[i].interrupt =0 ;
    }
    sports[0].rx = 0;
    sports[0].opmode = 0;
    sports[0].slots = 8;
    sports[0].clke = 1;
    sports[0].mfd = 1;
    sports[0].vld_a = 8;
    sports[0].vld_b = 3;
    sports[1].enable = 0;
    sports[2].opmode = 0;
    sports[2].slots = 8;
    sports[2].clke = 1;
    sports[2].mfd = 1;
    sports[2].vld_a = 8;
    sports[2].vld_b = 2;
    sports[2].interrupt = 1;
    sports[3].enable_sec = 0;
    sports[3].vld_a = 1;
    //sports[5].interrupt = 1; //sport 5 interrupt.
    sports[4].rx = 0;
    sports[4].enable_sec = 0;
    sports[4].clke = 0;
    sports[4].lfs = 0;
    sports[5].enable_sec = 0;
    sports[5].clke = 0;
    sports[5].lfs = 0;
    for(i = 0; i < 8 ; i++) {
        if(sports[i].enable && sports[i].spid < 8) {
            sport_config(&sports[i]);
        }
    }
}
#endif
void InitPCG(void)
{
DSP180x_core/drv/sport.c
@@ -344,6 +344,90 @@
    }
}
void sportB_config(struct SportDef *  config)
{
    u32 i;
    volatile u32 *pSPCTLn[8] = {pSPCTL0,pSPCTL1,pSPCTL2,pSPCTL3,pSPCTL4,pSPCTL5,pSPCTL6,pSPCTL7};
    volatile u32 *pSPnCS0[8] = {pSP0CS0,pSP1CS0,pSP2CS0,pSP3CS0,pSP4CS0,pSP5CS0,pSP6CS0,pSP7CS0};
    volatile u32 *pSPMCTLn[8] = {pSPMCTL0,pSPMCTL1,pSPMCTL2,pSPMCTL3,pSPMCTL4,pSPMCTL5,pSPMCTL6,pSPMCTL7};
    volatile u32 *pCPSPnAB[16] = {pCPSP0A,pCPSP0B,pCPSP1A,pCPSP1B,pCPSP2A,pCPSP2B,pCPSP3A,pCPSP3B
                                    ,pCPSP4A,pCPSP4B,pCPSP5A,pCPSP5B,pCPSP6A,pCPSP6B,pCPSP7A,pCPSP7B};
    struct DMA_Desc* desca_0 = &sp_desc[config->spid*4 + 0];
    struct DMA_Desc* desca_1 = &sp_desc[config->spid*4 + 1];
    u32 dmaBufferLen = config->slots*SAMPLE_NUM;
    u32 bufLen = dmaBufferLen;
    s32* dmaBuffer_ping, *dmaBuffer_pong;
    if(config->interrupt ) {
        u32 iid[] = {ADI_CID_SP0I,ADI_CID_SP1I,ADI_CID_SP2I,ADI_CID_SP3I
                ,ADI_CID_SP4I,ADI_CID_SP5I,ADI_CID_SP6I,ADI_CID_SP7I};
        adi_int_InstallHandler(iid[config->spid], DMACallBack, 0, true);
    }
    dmaBuffer_ping = (s32*)SRAMMalloc(bufLen* 2*sizeof(s32));//for ping-pong.
    if(dmaBuffer_ping == NULL) {
        printf("dmaBuffer malloc fail.\n");
    }
    memset(dmaBuffer_ping, 0 , bufLen* 2 *sizeof(s32));
    dmaBuffer_pong = dmaBuffer_ping + dmaBufferLen;
    mAudioCodec[mCodecNum].dataPtr[0] = dmaBuffer_ping;
    mAudioCodec[mCodecNum].dataPtr[1] = dmaBuffer_pong;
    mAudioCodec[mCodecNum].slot_num = config->slots;
    mAudioCodec[mCodecNum].channel_num = config->vld_b;
    mAudioCodec[mCodecNum].rx  = config->rx;
    mCodecNum++;
    desca_0->next = ((u32)desca_1 + 3)&0x7ffff | (1<<19);
    desca_0->buffer = (u32)dmaBuffer_ping;
    desca_0->asize = sizeof(s32);
    desca_0->bsize = config->slots*SAMPLE_NUM;
    desca_1->next = ((uint32_t)desca_0 + 3)&0x7ffff | (1<<19);
    desca_1->buffer = (u32)dmaBuffer_pong;
    desca_1->asize = sizeof(s32);
    desca_1->bsize = config->slots*SAMPLE_NUM;
    *pCPSPnAB[config->spid*2+1] = desca_1->next;
    if(config->opmode) { //iis
        u32 reg  = SLEN32 | OPMODE | SPEN_B | SCHEN_B |SDEN_B |(config->lfs?(LFS):0) | (config->clke?CKRE:0);
    //    *pSPCTL6 = SPTRAN | SLEN32 | OPMODE | SPEN_A | SCHEN_A |SDEN_A | SPEN_B | SCHEN_B |SDEN_B;// 输出
    //    *pSPCTL7 =  SLEN32 | OPMODE | SPEN_A | SCHEN_A |SDEN_A | SPEN_B | SCHEN_B |SDEN_B; //输入
//        if(config->enable_sec) {
//            reg |=  SPEN_B | SCHEN_B |SDEN_B ;
//        }
        if(config->rx == ufalse) {
            reg |= SPTRAN;
        }
        *pSPCTLn[config->spid] = reg;
    }
    else { //tdm
        u32 reg  = SLEN32 |  SCHEN_B |SDEN_B  | FSR | (config->clke?CKRE:0) | (config->lfs?LFS:0);
//        if(config->enable_sec) {
//            reg |=  SCHEN_B |SDEN_B;
//        }
        if(config->rx == ufalse) {
            reg |= SPTRAN;
        }
        *pSPCTLn[config->spid] = reg;
        reg = 0;
        for(i=0 ;i < config->slots ;i ++ ){
            reg |= (1<<i);
        }
        *pSPnCS0[config->spid] = reg;
        *pSPMCTLn[config->spid] = ((config->slots-1)<<5) | (config->mfd << 1) | MCEA| (config->enable_sec?MCEB:0);
    }
}
uvoid sport_enable(struct SportDef *  config)
{
    u32 reg = SDEN_A;
DSP180x_core/drv/sport.h
@@ -28,6 +28,7 @@
extern uvoid AudioProcCallBack (void);
uvoid sport_enable(struct SportDef *  config);
void sport_config(struct SportDef * config);
void sportB_config(struct SportDef *  config);
uvoid DMACallBack (u32 iid, uvoidptr arg);
#ifdef __cplusplus
DSP180x_core/src/f2f.c
@@ -147,19 +147,19 @@
        if(codec->rx) {
            s32* dataPtr = codec->dataPtr[blockIndex] ;
            for( j = 0; channel < mInputNum - 2 && j < codec->channel_num ;j ++,channel++) {
            for( j = 0; channel < mInputNum && j < codec->channel_num ;j ++,channel++) {
//                if(channel == (mInputNum - 2))
//                    channel++;
                if(mRxChannel[channel] != NULL)
                    floatData(mRxChannel[channel], dataPtr + ((j+1)&0x1),codec->slot_num, SAMPLE_NUM);
                    floatData(mRxChannel[channel], dataPtr + j,codec->slot_num, SAMPLE_NUM);
            }
        }
    }
    if(mRxChannel[mInputNum - 1] != NULL){
        floatData(mRxChannel[mInputNum - 1], mAudioCodec[9].dataPtr[blockIndex] + 0, mAudioCodec[9].slot_num, SAMPLE_NUM);
        //memcpy(mRxChannel[mInputNum - 1], pcm,  SAMPLE_NUM);
    }
//    if(mRxChannel[mInputNum - 1] != NULL){
//        floatData(mRxChannel[mInputNum - 1], mAudioCodec[9].dataPtr[blockIndex] + 0, mAudioCodec[9].slot_num, SAMPLE_NUM);
//        //memcpy(mRxChannel[mInputNum - 1], pcm,  SAMPLE_NUM);
//    }
#else
//    float pcm[SAMPLE_NUM];
//
@@ -297,23 +297,24 @@
        if(codec->rx == ufalse) {
            s32* dataPtr = codec->dataPtr[blockIndex] ;
            for( j = 0; channel < mOutputNum - 1 && j < codec->channel_num ;j ++,channel++) {
            for( j = 0; channel < mOutputNum && j < codec->channel_num ;j ++,channel++) {
                if(mTxChannel[channel] != NULL){
//                    if(channel == 2 || channel == 3){
//                        fixData(dataPtr + ((j+1)&0x1), mTxChannel[channel], codec->slot_num, SAMPLE_NUM);
//                    }
//                    else{
                        fixData(dataPtr + ((j+1)&0x1), mTxChannel[channel], codec->slot_num, SAMPLE_NUM);
//                    }
                    if(channel == 11){ //usb通道
                        fixData(dataPtr + 0, mTxChannel[channel], codec->slot_num, SAMPLE_NUM);
                        fixData(dataPtr + 1, mTxChannel[channel], codec->slot_num, SAMPLE_NUM);
                    }
                    else{
                        fixData(dataPtr + j, mTxChannel[channel], codec->slot_num, SAMPLE_NUM);
                    }
                }
            }
        }
    }
    if(mTxChannel[mOutputNum - 1] != NULL){
        fixData(mAudioCodec[8].dataPtr[blockIndex] + 0, mTxChannel[mOutputNum - 1], mAudioCodec[8].slot_num, SAMPLE_NUM);
        fixData(mAudioCodec[8].dataPtr[blockIndex] + 1, mTxChannel[mOutputNum - 1], mAudioCodec[8].slot_num, SAMPLE_NUM);
    }
//    if(mTxChannel[mOutputNum - 1] != NULL){
//        fixData(mAudioCodec[8].dataPtr[blockIndex] + 0, mTxChannel[mOutputNum - 1], mAudioCodec[8].slot_num, SAMPLE_NUM);
//        fixData(mAudioCodec[8].dataPtr[blockIndex] + 1, mTxChannel[mOutputNum - 1], mAudioCodec[8].slot_num, SAMPLE_NUM);
//    }
#endif
}
#else
DSP180x_core/src/main.cpp
@@ -82,15 +82,6 @@
        for(u32 j=0 ;j < 5000000 ;j++);
    }
//    while(1){
//        SRU(LOW,DPI_PB13_I);
//        SRU(LOW,DPI_PB14_I);
//        for(u32 j=0 ;j < 5000000 ;j++);
//        SRU(HIGH,DPI_PB13_I);
//        SRU(HIGH,DPI_PB14_I);
//        for(u32 j=0 ;j < 5000000 ;j++);
//    }
    fir_acc_init();
    spi_init();
DSP180x_core/src/scene.cpp
@@ -53,50 +53,50 @@
        ,{3,PROC_EXPANDER,"3|32","3",0,0,1,0,&parameters.in1[2]},{4,PROC_EXPANDER,"4|32","4",0,0,1,0,&parameters.in1[3]}
        ,{5,PROC_EXPANDER,"5|32","5",0,0,1,0,&parameters.in1[4]},{6,PROC_EXPANDER,"6|32","6",0,0,1,0,&parameters.in1[5]}
        ,{7,PROC_EXPANDER,"7|32","7",0,0,1,0,&parameters.in1[6]},{8,PROC_EXPANDER,"8|32","8",0,0,1,0,&parameters.in1[7]}
//        ,{9,PROC_EXPANDER,"9|32","9",0,0,1,0,&parameters.in1[8]},{10,PROC_EXPANDER,"10|32","10",0,0,1,0,&parameters.in1[9]}
//        ,{11,PROC_EXPANDER,"11|32","11",0,0,1,0,&parameters.in1[10]},{12,PROC_EXPANDER,"12|32","12",0,0,1,0,&parameters.in1[11]}
//        ,{13,PROC_EXPANDER,"13|32","13",0,0,1,0,&parameters.in1[12]},{14,PROC_EXPANDER,"14|32","14",0,0,1,0,&parameters.in1[13]}
//        ,{15,PROC_EXPANDER,"15|32","15",0,0,1,0,&parameters.in1[14]},{16,PROC_EXPANDER,"16|32","16",0,0,1,0,&parameters.in1[15]}
        ,{9,PROC_EXPANDER,"9|32","9",0,0,1,0,&parameters.in1[8]},{10,PROC_EXPANDER,"10|32","10",0,0,1,0,&parameters.in1[9]}
        ,{11,PROC_EXPANDER,"11|32","11",0,0,1,0,&parameters.in1[10]},{12,PROC_EXPANDER,"12|32","12",0,0,1,0,&parameters.in1[11]}
        ,{13,PROC_EXPANDER,"13|32","13",0,0,1,0,&parameters.in1[12]},{14,PROC_EXPANDER,"14|32","14",0,0,1,0,&parameters.in1[13]}
        ,{15,PROC_EXPANDER,"15|32","15",0,0,1,0,&parameters.in1[14]},{16,PROC_EXPANDER,"16|32","16",0,0,1,0,&parameters.in1[15]}
        ,{33,PROC_COMPRESS,"1|32","1",0,0,1,0,&parameters.in2[0]},{34,PROC_COMPRESS,"2|32","2",0,0,1,0,&parameters.in2[1]}
        ,{35,PROC_COMPRESS,"3|32","3",0,0,1,0,&parameters.in2[2]},{36,PROC_COMPRESS,"4|32","4",0,0,1,0,&parameters.in2[3]}
        ,{37,PROC_COMPRESS,"5|32","5",0,0,1,0,&parameters.in2[4]},{38,PROC_COMPRESS,"6|32","6",0,0,1,0,&parameters.in2[5]}
        ,{39,PROC_COMPRESS,"7|32","7",0,0,1,0,&parameters.in2[6]},{40,PROC_COMPRESS,"8|32","8",0,0,1,0,&parameters.in2[7]}
//        ,{41,PROC_COMPRESS,"9|32","9",0,0,1,0,&parameters.in2[8]},{42,PROC_COMPRESS,"10|32","10",0,0,1,0,&parameters.in2[9]}
//        ,{43,PROC_COMPRESS,"11|32","11",0,0,1,0,&parameters.in2[10]},{44,PROC_COMPRESS,"12|32","12",0,0,1,0,&parameters.in2[11]}
//        ,{45,PROC_COMPRESS,"13|32","13",0,0,1,0,&parameters.in2[12]},{46,PROC_COMPRESS,"14|32","14",0,0,1,0,&parameters.in2[13]}
//        ,{47,PROC_COMPRESS,"15|32","15",0,0,1,0,&parameters.in2[14]},{48,PROC_COMPRESS,"16|32","16",0,0,1,0,&parameters.in2[15]}
        ,{41,PROC_COMPRESS,"9|32","9",0,0,1,0,&parameters.in2[8]},{42,PROC_COMPRESS,"10|32","10",0,0,1,0,&parameters.in2[9]}
        ,{43,PROC_COMPRESS,"11|32","11",0,0,1,0,&parameters.in2[10]},{44,PROC_COMPRESS,"12|32","12",0,0,1,0,&parameters.in2[11]}
        ,{45,PROC_COMPRESS,"13|32","13",0,0,1,0,&parameters.in2[12]},{46,PROC_COMPRESS,"14|32","14",0,0,1,0,&parameters.in2[13]}
        ,{47,PROC_COMPRESS,"15|32","15",0,0,1,0,&parameters.in2[14]},{48,PROC_COMPRESS,"16|32","16",0,0,1,0,&parameters.in2[15]}
        ,{65,PROC_AGC,"1|32","1",0,0,1,0,&parameters.in3[0]},{66,PROC_AGC,"2|32","2",0,0,1,0,&parameters.in3[1]}
        ,{67,PROC_AGC,"3|32","3",0,0,1,0,&parameters.in3[2]},{68,PROC_AGC,"4|32","4",0,0,1,0,&parameters.in3[3]}
        ,{69,PROC_AGC,"5|32","5",0,0,1,0,&parameters.in3[4]},{70,PROC_AGC,"6|32","6",0,0,1,0,&parameters.in3[5]}
        ,{71,PROC_AGC,"7|32","7",0,0,1,0,&parameters.in3[6]},{72,PROC_AGC,"8|32","8",0,0,1,0,&parameters.in3[7]}
//        ,{73,PROC_AGC,"9|32","9",0,0,1,0,&parameters.in3[8]},{74,PROC_AGC,"10|32","10",0,0,1,0,&parameters.in3[9]}
//        ,{75,PROC_AGC,"11|32","11",0,0,1,0,&parameters.in3[10]},{76,PROC_AGC,"12|32","12",0,0,1,0,&parameters.in3[11]}
//        ,{77,PROC_AGC,"13|32","13",0,0,1,0,&parameters.in3[12]},{78,PROC_AGC,"14|32","14",0,0,1,0,&parameters.in3[13]}
//        ,{79,PROC_AGC,"15|32","15",0,0,1,0,&parameters.in3[14]},{80,PROC_AGC,"16|32","16",0,0,1,0,&parameters.in3[15]}
        ,{73,PROC_AGC,"9|32","9",0,0,1,0,&parameters.in3[8]},{74,PROC_AGC,"10|32","10",0,0,1,0,&parameters.in3[9]}
        ,{75,PROC_AGC,"11|32","11",0,0,1,0,&parameters.in3[10]},{76,PROC_AGC,"12|32","12",0,0,1,0,&parameters.in3[11]}
        ,{77,PROC_AGC,"13|32","13",0,0,1,0,&parameters.in3[12]},{78,PROC_AGC,"14|32","14",0,0,1,0,&parameters.in3[13]}
        ,{79,PROC_AGC,"15|32","15",0,0,1,0,&parameters.in3[14]},{80,PROC_AGC,"16|32","16",0,0,1,0,&parameters.in3[15]}
        ,{97,PROC_EQ,"1|32","1",0,0,1,0,&parameters.in4[0]},{98,PROC_EQ,"2|32","2",0,0,1,0,&parameters.in4[1]}
        ,{99,PROC_EQ,"3|32","3",0,0,1,0,&parameters.in4[2]},{100,PROC_EQ,"4|32","4",0,0,1,0,&parameters.in4[3]}
        ,{101,PROC_EQ,"5|32","5",0,0,1,0,&parameters.in4[4]},{102,PROC_EQ,"6|32","6",0,0,1,0,&parameters.in4[5]}
        ,{103,PROC_EQ,"7|32","7",0,0,1,0,&parameters.in4[6]},{104,PROC_EQ,"8|32","8",0,0,1,0,&parameters.in4[7]}
//        ,{105,PROC_EQ,"9|32","9",0,0,1,0,&parameters.in4[8]},{106,PROC_EQ,"10|32","10",0,0,1,0,&parameters.in4[9]}
//        ,{107,PROC_EQ,"11|32","11",0,0,1,0,&parameters.in4[10]},{108,PROC_EQ,"12|32","12",0,0,1,0,&parameters.in4[11]}
//        ,{109,PROC_EQ,"13|32","13",0,0,1,0,&parameters.in4[12]},{110,PROC_EQ,"14|32","14",0,0,1,0,&parameters.in4[13]}
//        ,{111,PROC_EQ,"15|32","15",0,0,1,0,&parameters.in4[14]},{112,PROC_EQ,"16|32","16",0,0,1,0,&parameters.in4[15]}
        ,{105,PROC_EQ,"9|32","9",0,0,1,0,&parameters.in4[8]},{106,PROC_EQ,"10|32","10",0,0,1,0,&parameters.in4[9]}
        ,{107,PROC_EQ,"11|32","11",0,0,1,0,&parameters.in4[10]},{108,PROC_EQ,"12|32","12",0,0,1,0,&parameters.in4[11]}
        ,{109,PROC_EQ,"13|32","13",0,0,1,0,&parameters.in4[12]},{110,PROC_EQ,"14|32","14",0,0,1,0,&parameters.in4[13]}
        ,{111,PROC_EQ,"15|32","15",0,0,1,0,&parameters.in4[14]},{112,PROC_EQ,"16|32","16",0,0,1,0,&parameters.in4[15]}
        ,{129,PROC_FEEDBACK,"1|32","1",0,0,1,0,&parameters.in5[0]},{130,PROC_FEEDBACK,"2|32","2",0,0,1,0,&parameters.in5[1]}
        ,{131,PROC_FEEDBACK,"3|32","3",0,0,1,0,&parameters.in5[2]},{132,PROC_FEEDBACK,"4|32","4",0,0,1,0,&parameters.in5[3]}
        ,{133,PROC_FEEDBACK,"5|32","5",0,0,1,0,&parameters.in5[4]},{134,PROC_FEEDBACK,"6|32","6",0,0,1,0,&parameters.in5[5]}
        ,{135,PROC_FEEDBACK,"7|32","7",0,0,1,0,&parameters.in5[6]},{136,PROC_FEEDBACK,"8|32","8",0,0,1,0,&parameters.in5[7]}
//        ,{137,PROC_FEEDBACK,"9|32","9",0,0,1,0,&parameters.in5[8]},{138,PROC_FEEDBACK,"10|32","10",0,0,1,0,&parameters.in5[9]}
//        ,{139,PROC_FEEDBACK,"11|32","11",0,0,1,0,&parameters.in5[10]},{140,PROC_FEEDBACK,"12|32","12",0,0,1,0,&parameters.in5[11]}
//        ,{141,PROC_FEEDBACK,"13|32","13",0,0,1,0,&parameters.in5[12]},{142,PROC_FEEDBACK,"14|32","14",0,0,1,0,&parameters.in5[13]}
//        ,{143,PROC_FEEDBACK,"15|32","15",0,0,1,0,&parameters.in5[14]},{144,PROC_FEEDBACK,"16|32","16",0,0,1,0,&parameters.in5[15]}
        ,{137,PROC_FEEDBACK,"9|32","9",0,0,1,0,&parameters.in5[8]},{138,PROC_FEEDBACK,"10|32","10",0,0,1,0,&parameters.in5[9]}
        ,{139,PROC_FEEDBACK,"11|32","11",0,0,1,0,&parameters.in5[10]},{140,PROC_FEEDBACK,"12|32","12",0,0,1,0,&parameters.in5[11]}
        ,{141,PROC_FEEDBACK,"13|32","13",0,0,1,0,&parameters.in5[12]},{142,PROC_FEEDBACK,"14|32","14",0,0,1,0,&parameters.in5[13]}
        ,{143,PROC_FEEDBACK,"15|32","15",0,0,1,0,&parameters.in5[14]},{144,PROC_FEEDBACK,"16|32","16",0,0,1,0,&parameters.in5[15]}
        ,{161,PROC_AUTOMIXER,"1-32","1-33",0,1,1,0,&parameters.automixer}
@@ -111,40 +111,40 @@
        ,{169,PROC_CROSSOVER,"3","3",1,0,0,0,&parameters.out1[2]},{170,PROC_CROSSOVER,"4","4",1,0,0,0,&parameters.out1[3]}
        ,{171,PROC_CROSSOVER,"5","5",1,0,0,0,&parameters.out1[4]},{172,PROC_CROSSOVER,"6","6",1,0,0,0,&parameters.out1[5]}
        ,{173,PROC_CROSSOVER,"7","7",1,0,0,0,&parameters.out1[6]},{174,PROC_CROSSOVER,"8","8",1,0,0,0,&parameters.out1[7]}
//        ,{175,PROC_CROSSOVER,"9","9",1,0,0,0,&parameters.out1[8]},{176,PROC_CROSSOVER,"10","10",1,0,0,0,&parameters.out1[9]}
//        ,{177,PROC_CROSSOVER,"11","11",1,0,0,0,&parameters.out1[10]},{178,PROC_CROSSOVER,"12","12",1,0,0,0,&parameters.out1[11]}
//        ,{179,PROC_CROSSOVER,"13","13",1,0,0,0,&parameters.out1[12]},{180,PROC_CROSSOVER,"14","14",1,0,0,0,&parameters.out1[13]}
//        ,{181,PROC_CROSSOVER,"15","15",1,0,0,0,&parameters.out1[14]},{182,PROC_CROSSOVER,"16","16",1,0,0,0,&parameters.out1[15]}
        ,{175,PROC_CROSSOVER,"9","9",1,0,0,0,&parameters.out1[8]},{176,PROC_CROSSOVER,"10","10",1,0,0,0,&parameters.out1[9]}
        ,{177,PROC_CROSSOVER,"11","11",1,0,0,0,&parameters.out1[10]},{178,PROC_CROSSOVER,"12","12",1,0,0,0,&parameters.out1[11]}
        ,{179,PROC_CROSSOVER,"13","13",1,0,0,0,&parameters.out1[12]},{180,PROC_CROSSOVER,"14","14",1,0,0,0,&parameters.out1[13]}
        ,{181,PROC_CROSSOVER,"15","15",1,0,0,0,&parameters.out1[14]},{182,PROC_CROSSOVER,"16","16",1,0,0,0,&parameters.out1[15]}
        ////
        ,{199,PROC_EQ,"1","1",1,0,0,0,&parameters.out2[0]},{200,PROC_EQ,"2","2",1,0,0,0,&parameters.out2[1]}
        ,{201,PROC_EQ,"3","3",1,0,0,0,&parameters.out2[2]},{202,PROC_EQ,"4","4",1,0,0,0,&parameters.out2[3]}
        ,{203,PROC_EQ,"5","5",1,0,0,0,&parameters.out2[4]},{204,PROC_EQ,"6","6",1,0,0,0,&parameters.out2[5]}
        ,{205,PROC_EQ,"7","7",1,0,0,0,&parameters.out2[6]},{206,PROC_EQ,"8","8",1,0,0,0,&parameters.out2[7]}
//        ,{207,PROC_EQ,"9","9",1,0,0,0,&parameters.out2[8]},{208,PROC_EQ,"10","10",1,0,0,0,&parameters.out2[9]}
//        ,{209,PROC_EQ,"11","11",1,0,0,0,&parameters.out2[10]},{210,PROC_EQ,"12","12",1,0,0,0,&parameters.out2[11]}
//        ,{211,PROC_EQ,"13","13",1,0,0,0,&parameters.out2[12]},{212,PROC_EQ,"14","14",1,0,0,0,&parameters.out2[13]}
//        ,{213,PROC_EQ,"15","15",1,0,0,0,&parameters.out2[14]},{214,PROC_EQ,"16","16",1,0,0,0,&parameters.out2[15]}
        ,{207,PROC_EQ,"9","9",1,0,0,0,&parameters.out2[8]},{208,PROC_EQ,"10","10",1,0,0,0,&parameters.out2[9]}
        ,{209,PROC_EQ,"11","11",1,0,0,0,&parameters.out2[10]},{210,PROC_EQ,"12","12",1,0,0,0,&parameters.out2[11]}
        ,{211,PROC_EQ,"13","13",1,0,0,0,&parameters.out2[12]},{212,PROC_EQ,"14","14",1,0,0,0,&parameters.out2[13]}
        ,{213,PROC_EQ,"15","15",1,0,0,0,&parameters.out2[14]},{214,PROC_EQ,"16","16",1,0,0,0,&parameters.out2[15]}
        ,{231,PROC_DELAY,"1","1",1,0,0,0,&parameters.out3[0]},{232,PROC_DELAY,"2","2",1,0,0,0,&parameters.out3[1]}
        ,{233,PROC_DELAY,"3","3",1,0,0,0,&parameters.out3[2]},{234,PROC_DELAY,"4","4",1,0,0,0,&parameters.out3[3]}
        ,{235,PROC_DELAY,"5","5",1,0,0,0,&parameters.out3[4]},{236,PROC_DELAY,"6","6",1,0,0,0,&parameters.out3[5]}
        ,{237,PROC_DELAY,"7","7",1,0,0,0,&parameters.out3[6]},{238,PROC_DELAY,"8","8",1,0,0,0,&parameters.out3[7]}
//        ,{239,PROC_DELAY,"9","9",1,0,0,0,&parameters.out3[8]},{240,PROC_DELAY,"10","10",1,0,0,0,&parameters.out3[9]}
//        ,{241,PROC_DELAY,"11","11",1,0,0,0,&parameters.out3[10]},{242,PROC_DELAY,"12","12",1,0,0,0,&parameters.out3[11]}
//        ,{243,PROC_DELAY,"13","13",1,0,0,0,&parameters.out3[12]},{244,PROC_DELAY,"14","14",1,0,0,0,&parameters.out3[13]}
//        ,{245,PROC_DELAY,"15","15",1,0,0,0,&parameters.out3[14]},{246,PROC_DELAY,"16","16",1,0,0,0,&parameters.out3[15]}
        ,{239,PROC_DELAY,"9","9",1,0,0,0,&parameters.out3[8]},{240,PROC_DELAY,"10","10",1,0,0,0,&parameters.out3[9]}
        ,{241,PROC_DELAY,"11","11",1,0,0,0,&parameters.out3[10]},{242,PROC_DELAY,"12","12",1,0,0,0,&parameters.out3[11]}
        ,{243,PROC_DELAY,"13","13",1,0,0,0,&parameters.out3[12]},{244,PROC_DELAY,"14","14",1,0,0,0,&parameters.out3[13]}
        ,{245,PROC_DELAY,"15","15",1,0,0,0,&parameters.out3[14]},{246,PROC_DELAY,"16","16",1,0,0,0,&parameters.out3[15]}
        ,{263,PROC_LIMIT,"1","1",1,0,0,0,&parameters.out4[0]},{264,PROC_LIMIT,"2","2",1,0,0,0,&parameters.out4[1]}
        ,{265,PROC_LIMIT,"3","3",1,0,0,0,&parameters.out4[2]},{266,PROC_LIMIT,"4","4",1,0,0,0,&parameters.out4[3]}
        ,{267,PROC_LIMIT,"5","5",1,0,0,0,&parameters.out4[4]},{268,PROC_LIMIT,"6","6",1,0,0,0,&parameters.out4[5]}
        ,{269,PROC_LIMIT,"7","7",1,0,0,0,&parameters.out4[6]},{270,PROC_LIMIT,"8","8",1,0,0,0,&parameters.out4[7]}
//        ,{271,PROC_LIMIT,"9","9",1,0,0,0,&parameters.out4[8]},{272,PROC_LIMIT,"10","10",1,0,0,0,&parameters.out4[9]}
//        ,{273,PROC_LIMIT,"11","11",1,0,0,0,&parameters.out4[10]},{274,PROC_LIMIT,"12","12",1,0,0,0,&parameters.out4[11]}
//        ,{275,PROC_LIMIT,"13","13",1,0,0,0,&parameters.out4[12]},{276,PROC_LIMIT,"14","14",1,0,0,0,&parameters.out4[13]}
//        ,{277,PROC_LIMIT,"15","15",1,0,0,0,&parameters.out4[14]},{278,PROC_LIMIT,"16","16",1,0,0,0,&parameters.out4[15]}
        ,{271,PROC_LIMIT,"9","9",1,0,0,0,&parameters.out4[8]},{272,PROC_LIMIT,"10","10",1,0,0,0,&parameters.out4[9]}
        ,{273,PROC_LIMIT,"11","11",1,0,0,0,&parameters.out4[10]},{274,PROC_LIMIT,"12","12",1,0,0,0,&parameters.out4[11]}
        ,{275,PROC_LIMIT,"13","13",1,0,0,0,&parameters.out4[12]},{276,PROC_LIMIT,"14","14",1,0,0,0,&parameters.out4[13]}
        ,{277,PROC_LIMIT,"15","15",1,0,0,0,&parameters.out4[14]},{278,PROC_LIMIT,"16","16",1,0,0,0,&parameters.out4[15]}
        ,{295,PROC_OUTPUT,"1-32","1-32",1,1,1,2,&parameters.output}
DSP180x_core/src/tob.cpp
@@ -334,13 +334,13 @@
    }
    dbg_printf("Phy InputNum %d, Output Num %d\n",nPhyInput,nPhyOutput);
    Frame* UsbRx = frames->GetFrame(nPhyInput+1);
    Frame* UsbTx = frames->GetFrame(nPhyOutput);
//    Frame* UsbRx = frames->GetFrame(nPhyInput+1);
//    Frame* UsbTx = frames->GetFrame(nPhyOutput);
//
//    SetRxChannelPtr(nPhyInput+1, UsbRx->Data());
//    SetTxChannelPtr(nPhyOutput, UsbTx->Data());
    SetRxChannelPtr(nPhyInput+1, UsbRx->Data());
    SetTxChannelPtr(nPhyOutput, UsbTx->Data());
    SetNumOfChannels(nPhyInput+2, nPhyOutput+1);
    SetNumOfChannels(nPhyInput, nPhyOutput);
    processed = utrue;